Home Blog Page 17

Những câu lệnh git quan trọng mà bạn dùng hằng ngày

Check list những câu lệnh git quan trọng mà bạn dùng hằng ngày

Bài viết được sự cho phép bởi tác giả Sơn Dương

Có lẽ mọi người quá quen thuộc với Git rồi đúng không? Hầu như mỗi ngày làm việc, bạn đều sử dụng Git ít nhất một lần. Có thể “tỷ dụ” như pull code của người khác về và đẩy code của mình lên.

Tuy nhiên, lâu lâu mà không có dự án nào, rồi quay lại dự án cũ hoặc vào dự án mới, bạn lại bắt đầu thấy quên quên, nhớ nhớ…

Đó là lý do ra đời của bài viết này. Mình sẽ tổng hợp những câu lệnh git quan trọng mà bạn hay sử dụng nhất trong mọi dự án, coi như một stick note để lưu lại nhé.

Tạo branch mới từ một branch

Đây là câu lệnh có lẽ thường xuyên sử dụng nhất trước mỗi dự án. Thông thường, PL sẽ tạo một nhánh master, sau đó mỗi thành viên sẽ đứng tên một nhánh.

Do đó, nhiệm vụ của bạn là cần tạo một branch mới từ nhánh master. Câu lệnh cũng đơn giản:

git checkout -b <ten-nhanh>

Đổi tên nhánh:

git branch -m <ten-nhanh-moi>

Sau khi checkout nhánh mới, bạn nhớ thực hiện lệnh push để đẩy toàn bộ dữ liệu nhánh mới lên git server (hay còn gọi là remote repo)

stash

Lệnh git stash là một tiện ích cho phép bạn lưu tạm thời những thay đổi trong code.

Thường lệnh stash này được gọi trước khi bạn thực hiện quá trình push – đẩy code lên git server như Github, Gitlab.v.v…

Lưu ý là lệnh stash chỉ lưu trữ những thay đổi trên repo local mà thôi. Do đó, người khác không thể thấy được những lưu trữ này cho đến khi bạn thực hiện commit-push

Cú pháp:

git stash save "<Nội dung ghi chú cho stash này>"

Hiển thị danh sách tất cả những stash được tạo trước đó. Stash mới nhất sẽ đứng đầu danh sách:

git stash list

Xóa commit cuối cùng

Lệnh này thường hay sử dụng khi bạn “chẳng may” commit mà lại có cả phần thay đổi mà bạn không muốn đẩy lên server.

Ví dụ, bạn vừa đổi lại base URL của API chỉ để test ở localhost thôi. Nhưng lúc commit lại mải nói chuyện với “gấu” thành ra khi đối soát commit lại bị sót. Thế là..bùm.

Lệnh này sẽ phao cứu cánh cho bạn để sửa chữa những lỗi lầm trong quá khứ

git reset --hard HEAD^

Nếu muốn xóa nhiều commit từ top, bạn có thể sử dụng lệnh sau (lệnh này xóa 2 commits tính từ top):

git reset --hard HEAD~2

Nếu bạn muốn xóa nhiều commit hơn thì cứ tăng chỉ số ở trong lệnh trên kia lên.

  Sự khác biệt giữa ‘git merge’ và ‘git rebase’ là gì?

  Git: merge – rebase và những lưu ý

Xóa một commit cụ thể nào đó

Hoàn cảnh cũng tương tự như ví dụ trên, giờ bạn muốn xóa cụ thể một commit nào đó thì dùng lệnh sau:

git revert <id_của_commit> --no-edit

Lệnh trên sẽ tạo ra một commit mới với nội dung là revert – ngược lại với commit mà bạn muốn xóa. Tất nhiên, commit này vẫn đang ở local repo thôi, bạn cần push nó lên server để người khác cũng thấy được.

Tham khảo Job FrontEnd HOT trên TopDev!

Lệnh commit và push

Nằm ở cuối danh sách nhưng mức độ sử dụng lại là nhiều nhất. Mỗi khi bạn cần đẩy phần code lên git server để người khác cũng thấy đều phải dùng cặp lệnh commit và push.

Lệnh commit là thực hiện trên local repo. Còn lệnh push là đẩy những commit ở local lên remote repo.

Về quy tắc, cá nhân mình hay tách mỗi một commit là một một thay đổi nhỏ nhất liên quan đến một tính năng, một bug fix nào đó. Chứ đừng gom hết tất cả những thay đổi của tất cả tính năng, bug fix vào một commit. Việc gom này vừa làm cho commit trở lên phức tạp, sau này trace lịch sử cũng khó khăn.

git commit -m "<Ghi chú Commit>"

git push origin <tên_nhánh>

Trong trường hợp nếu bạn tạo thêm file mới mà chưa được thêm vào trong commit (bạn có thể kiểm tra bằng lệnh git status), bạn cần thực hiện lệnh add để thêm chúng vào commit.

git add <tên-tập-tin>

git add * // thêm tất cả 

Tạm kết

Trên đây là những tổng hợp nhỏ về những câu lệnh git quan trọng hay sử dụng nhất. Hy vọng rằng, bài viết này sẽ trở thành cuốn sổ ghi chú giúp bạn mỗi khi bắt đầu dự án mới.

Ngoài những câu lệnh trên, bạn còn hay sử dụng lệnh nào nữa? Hãy để lại bình luận bên dưới cho mọi người biết nhé.

Bài viết gốc được đăng tải tại vntalking.com

Xem thêm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Chiếc transaction trên blockchain – bên trong có gì?

transaction trên blockchain

Bài viết được sự cho phép của tác giả Thanh Lê

Tại sao nên đọc bài này?

  • Hiểu rõ hơn bên trong blockchain nó chạy làm sao?
  • Coin của tôi luân chuyển trong blockchain ra sao?

Bài này mình sẽ nói chủ yếu các khái niệm ở bên EVM blockchain (ETH, BNB Chain, Polygon,…) nên có thể nó sẽ không đúng với các chain khác (Solana, NEAR, DOT,…).

Transaction là gì?

An Ethereum transaction refers to an action initiated by an externally-owned account, in other words an account managed by a human, not a contract. For example, if Bob sends Alice 1 ETH, Bob’s account must be debited and Alice’s must be credited. This state-changing action takes place within a transaction.

Transaction là gì?
Nguồn: https://ethereum.org/en/developers/docs/transactions/

Hiểu cơ bản thì Transaction là một action thực hiện bởi một externally-owned account (Account của người thật, hok phải Smart Contract) gửi lên blockchain network, từ đó thay đổi state của network. World state (t) + transaction = New world state (t + 1)

Hiểu ngược lại, nếu không có transaction thì state của network giữ nguyên, không có gì thay đổi cả.

Transaction có gì?

Một chiếc transaction được gửi đi sẽ có những data sau

  • to người nhận, có thể bạn gửi tiền cho một address khác, có thể bạn execute một smart contract khác. Hoặc không có thì khả năng cao transaction này dùng để tạo một smart contract
  • signature chữ kí, cái này để biết chính xác thằng nào là thằng gửi cái transaction này đi
  • value native token gửi trong transaction đó. Nếu bên Ethereum thì là ETH, BNB chain thì là BNB, Polygon thì là MATIC,…
  • data cái này optional, dùng làm input để execute một smart contract, kiểu call smart contract là gửi 30 CAKE cho thằng Y đi thì 30 CAKE cho thằng Y chính là data .Nếu bạn gửi Native token cho ai đó thì không cần cái field này.
  • gasLimit Gas tối đa được sử dụng để chạy transaction này. Gas là gì thì đợi giải thích sau.
  • maxPriorityFeePerGas Đù cái này mình cũng mới biết , nói chung là dùng để tip cho thằng validator nào pick cái transaction này mà chạy.
{

from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",

to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",

gasLimit: "21000",

maxFeePerGas: "300",

maxPriorityFeePerGas: "10",

nonce: "0",

value: "10000000000"

}

VD một chiếc Transaction được gửi đi

  The Merge – Bước tiến quan trọng của blockchain Ethereum

  5 giai đoạn trong kế hoạch tiếp theo của Ethereum sau The Merge

Gas

Gas là một đơn vị dùng để tính computational effort trong blockchain. Hiểu nôm na thì khi bạn chạy một transaction thì cái network phải tính toán gì đó để từ đó gen ra cái New world state, mà tính cái đó thì tốn computation effort, tốn điện. Do đó khái niệm gas được sinh ra để trả phí cho computation effort, cái transaction nào phức tạp, tốn nhiều computation effort thì phải trả nhiều tiền gas hơn và ngược lại.

Ai là người trả tiền gas?

Thằng init cái transaction đó sẽ phải trả tiền gas. Cái này là điểm khác biệt cực kì lớn giữa web3 và web2.

Đối với web2, đã có một thằng mua sẵn con server, trả tiền cho nó chạy để nó handle transaction rồi nên user không phải trả (Hoặc tụi nó thu lại bằng cách khác)

Còn với web3, thì con server là chạy chung, do đó transaction của thằng nào thì thằng đó tự trả – Độc lập, tự do

Nó khá giống xăng xe ngoài đường vậy, bạn đổ xe đầy bình, chạy xong từ A → B còn dư bao nhiêu xăng thì nó trả lại.

Tại sao cần gasLimit vì phòng trường hợp ông nào code bug dẫn tới burn hết mọe gas → tốn tiền → user complain. Do đó gasLimit sinh ra để đề phòng những trường hợp như vậy.

Chưa tới chợ mà hết xăng? Nếu bạn set gasLimit quá nhỏ, có thể không đủ để trả cho computation effort nên nó chạy dc 1 quãng thì đứt gách, với trường hợp này thì transaction sẽ được revert lại, đồng thời gas của bạn cũng bị burn hết nhé, không lấy lại được đâu.

Tiền gas, tùy vào cung cầu mà giá gas sẽ thay đổi. Vì tối đa hiện tại ETH chỉ handle được 30tx/giây nên nếu tại một thời điểm có nhiều giao dịch hơn vậy, thì thằng nào trả nhiều tiền hơn sẽ được verify và cho vào block trước.

Do đó phí cho một giao dịch sẽ phụ thuộc vào gas + tiền gas của giao dịch đó mà không phụ thuộc vào giá trị của một giao dịch. Ví dụ bạn gửi 1$ thì vẫn có thể phải trả 50$ tiền phí mà bạn gửi 1 000 000 000$ thì cũng phải trả 50$ tiền phí.

Tham khảo việc làm Blockchain mới nhất tại đây!

Vòng đời của một transaction

Vòng đời của một transaction

  1. Một transaction được gen ra, thường qua frontend app, nó sẽ sinh ra mớ data cho transaction của bạn (Gửi cho ai, bao gồm những data gì, gas limit phù hợp,…).
  2. Với data đó, sẽ cần bạn sign cái transaction (để bảm bảo là, tao là chủ cái tài khoản này, và tao cam đoan đống data tao gửi lên blockchain là của tao và chỉ duy nhất tao làm được điều này). Thường là qua MetaMask, CoinBase wallet,…, nói chung thằng nào giữ key thì thằng đó mới sign được.
  3. Sau khi submit transaction vào network, nó sẽ cần xếp hàng ở Transaction pool , nhớ lúc nãy mình nói chứ? ETH chỉ có thể handle được tối đa 30tx/giây nên nếu nhiều hơn sẽ cần phải xếp hàng.
  4. Bây giờ mấy ông validator/miner (những người sẽ execute và verify transaction) sẽ pick ra em transaction nào thơm ngon nhất , VD như thằng nào trả phí gas cao nhất, tip cao nhất rồi bắt đầu execute/verify.
  5. Nếu có một ông nào đó đã verify được một block, sẽ broadcast cho toàn network là “tao verify được đống transaciton này rồi nhé, phí giao dịch tao lấy, các em lấy block mới về mà lưu lại, lo mà verify đống tx tiếp theo đi, anh chỉ làm mẫu một lần thôi đấy”.
  6. Ok vậy là giờ transaction đã được verify, cả network đồng ý đây sẽ là state mới và tiếp tục công việc ở bước 3

Mình định sẽ giải thích kỹ hơn hơn về bên trong một tx làm sao mà token, coin có thể luân chuyển trong nhưng nó sẽ đụng vào concept của Smart Contract nên có lẽ để bài sau nhé!

Nimbus

Nimbus

Nhân tiện, đối với một transaction và dưới góc nhìn của technical thì nó quá khó để cho một người như mẹ hay bà ngoại mình có thể hiểu và biết những thứ bên trong transaction là gì. Do đó mình có build một tool tên là Nimbus để có thể giải thích hoặc là lược bỏ những thứ không-cần-hiểu như vậy.

Trong tool có một phần là Transaction Explain, nó sẽ giúp mọi người hiểu ngắn gọn là transaction này làm gì, chuyển tiền cho ai, ai chuyển tiền cho mình.

Bài viết gốc được đăng tải tại thanhle.blog

Xem thêm:

Xem thêm những việc làm IT hấp dẫn tại TopDev

Cách để bắt chuyện với mấy anh chị xịn xò trên LinkedIn

Cách để bắt chuyện với mấy anh chị

Bài viết được sự cho phép của tác giả Lê Tuấn Anh

Khi tư vấn hướng dẫn tìm việc, mình luôn khuyến khích các bạn nên có tài khoản LinkedIn, nếu chưa có thì lập một cái, nếu có rồi thì nên bắt đầu dùng. Ở Việt Nam, LinkedIn hiện có hơn 3.8 triệu người dùng (số liệu Napoleon Cat), thời điểm mình gõ dòng chữ này, đang có 78 ngàn cơ hội việc làm tại Việt Nam trên LinkedIn.

Mình khuyến khích các bạn nên dành nhiều thời gian cho LinkedIn nhiều hơn (thay vì Facebook hay Tiktok), bởi LinkedIn sẽ giúp bạn có những mối quan hệ chuyên nghiệp, học được chuyên môn công việc, tìm được cơ hội việc là và có thể kết nối được với những anh chị xịn xò – là giám đốc hay nhân sự cấp cao của các công ty.

Trong bài viết này, mình chia sẻ để các bạn hiểu hơn về những kiểu nhà tuyển dụng đang có trên LinkedIn và cách bạn có thể tiếp cận, bắt chuyện với người ta nhé.

Các Kiểu Nhà Tuyển Dụng

Nếu bạn đang tìm việc, đừng chỉ sửa CV rồi gửi lên các trang web, hãy xây dựng các mối quan hệ càng nhiều càng tốt với những người làm công việc tuyển dụng. Bởi lẽ những nhà tuyển dụng là cầu nối giữa bạn và công ty, chính vì thế những mối quan hệ này có thể giúp bạn biết thêm về cách hỏi lương, văn hóa công ty, cách phỏng vấn hay những vấn đề khác khi đi làm.

Có một số kiểu nhà tuyển dụng như thế này:

  • Săn người (headhunter) ứng viên có chuyên môn: đây có thể là những người làm việc cho một công ty chuyên cung cấp giải pháp nhân sự (ví dụ như Adecco, One Arrow Consulting), họ thu phí của công ty để tìm những nhân sự phù hợp mà công ty cần. Nhân sự họ thường nhắm đến là những nhân sự đã có kinh nghiệm hoặc có vị trí cấp cao.
  • Săn người (headhunter) ứng viên ít kinh nghiệm: cũng giống ở trên nhưng vai trò ngược lại một chút, những nhà tuyển dụng/công ty này sẽ có một danh sách nhiều ứng viên (thường là sinh viên hoặc người chưa nhiều kinh nghiệm), họ cạnh tranh với các công ty khác để giới thiệu ứng viên của họ cho các công ty cần người. Khi giới thiệu thành công, họ sẽ có tiền.
  • Nhà tuyển dụng thuộc công ty: đây là phòng nhân sự của các công ty, phụ trách đăng tin tuyển dụng, lọc ứng viên, phỏng vấn…

Tại Sao Nên Kết Nối Trên LinkedIn?

Theo Navigos Group, với kênh mạng xã hội, LinkedIn – một website dành cho mạng lưới người đi làm chuyên nghiệp là lựa chọn đầu tiên đối với người Việt trong việc xây dựng thương hiệu cá nhân với 31% ý kiến, trong khi tỉ lệ chọn Facebook là 27%. Khảo sát này cho thấy, rất nhiều công ty to đang sử dụng LinkedIn như một kênh để tìm những ứng viên tiềm năng. Nếu bạn chưa bắt đầu sử dụng LinkedIn, hãy bắt đầu sử dụng từ bây giờ với một vài hướng dẫn nhanh của Tuấn Anh tại đây.

Cách Tiếp Cận Nhà Tuyển Dụng

Trên LinkedIn, bạn có thể tiếp cận đến nhà tuyển dụng thông qua 2 cách, thụ động và chủ động.

Thụ động là bạn dành thời gian xây dựng trang LinkedIn thật xịn, đầy đủ thông tin, kỹ năng, kinh nghiệm làm việc, mục tiêu tìm kiếm, có các từ khóa đắt giá để khi nhà tuyển dụng tìm ứng viên trên LinkedIn, tên bạn sẽ hiện lên trên trang tìm kiếm. Ví dụ đây là LinkedIn của Tuấn Anh: https://www.linkedin.com/in/anhtuanle234/ – thời điểm mình viết dòng này, có 986 người đã xem LinkedIn của mình trong tuần và hồ sơ của mình hiện lên trên 370 kết quả tìm kiếm.

Cách Tiếp Cận Nhà Tuyển Dụng

Chủ động là việc bạn tự tìm những nhà tuyển dụng mà bạn thấy tiềm năng, gửi tin nhắn trực tiếp cho người ta. Cách này giúp bạn thu hút sự chú ý ngay lập tức, nhưng hãy thật cẩn thận, tin nhắn phải soạn thật kỹ càng kẻo lại bị lẫn với những người khác.

  20 mẹo xây dựng thương hiệu cá nhân hiệu quả trên LinkedIn (Phần 1)

  Bàn về "peer-pressure" khi lướt LinkedIn và TikTok

Công Cụ Tiếp Cận

Nếu bạn muốn nhà tuyển dụng tự tìm đến bạn, hãy sử dụng tính năng #OpenToWork ở đầu LinkedIn. Tính năng này cho phép chia sẻ thông tin đến các nhà tuyển dụng, và những nhà tuyển dụng nào đang xài tính năng tuyển dụng trả phí của LinkedIn sẽ dễ dàng tìm thấy bạn. Ví dụ mình đang Open To Work với vị trí Counselor chẳng hạn:

Cách Tiếp Cận Nhà Tuyển Dụng trên linkedin

Để chủ động tìm kiếm, bạn có thể tận dụng tính năng “Tìm kiếm” của LinkedIn để tìm theo tên người, tên công việc, tên công ty, cụ thể theo hướng dẫn bên dưới.

Cách Sử Dụng “Lọc” Để Tìm Người Trong Ngành

Để tăng tính hiệu quả khi đi tìm việc, hãy tập trung tìm những người đang làm việc trong ngành bạn quan tâm và tập trung tiếp cận họ, thay vì ai cũng gửi tin đi. Đây là cách làm.

  1. Ở trang chủ bạn ấn vào “My Network.”
  2. Ấn vào “Connections” ở góc trên bên trái
  3. Ấn vào “Search with filters”, và chọn “All filters”.
  4. Ở mục hiện lên, bạn chọn 1st, 2nd, và 3rd connections.
  5. Kéo xuống phần “Industry” và gõ vào những ngành bạn quan tâm.
  6. Kéo xuống Keywords và gõ vào các từ khóa ở mục ‘Title’ như “Recruiter,” “Headhunter,” “Talent Acquisition,” hay “Hiring Manager”
  7. Xem kết qủa.

Trong trang kết quả, bạn ấn ‘Connect’ với những người bạn thích. Sau đó ở mục ‘Add a note’, hãy soạn một tin nhắn mùi mẫn và gửi đến người ta.

Tin Nhắn Mùi Mẫn

Mỗi ngày nhà tuyển dụng nhận cả chục và trăm email, tin nhắn, nên bạn hãy soạn một tin nhắn làm sao cho khác biệt nhé. Tin nhắn nên có Kỹ Năng của bạn, Công Cụ bạn biết dùng, Dự Án bạn đã làm, Công Việc bạn đang quan tâm.

Một số mẫu bằng tiếng Anh (tập xài tiếng Anh vì LinkedIn không dùng tiếng Việt nha):

  • I recently applied to the [NAME OF POSITION] with respect to requisition number [ADD NUMBER].
  • I meet all of the qualifications for the [NAME OF POSITION] including [NAME THE TOP QUALIFICATIONS].
  • Based on my research, I believe this may be a position you are working to fill. If you are not the assigned recruiter for this position, would you be open to connecting me to the recruiter? (This helps to keep the conversation moving forward. Because the recruiter now has the requisition number, they can find the recruiter assigned to the role and pass the information along.) 

Nói Chung Là

LinkedIn một vài năm gần đây được nhà tuyển dụng xài rất nhiều. Nếu bạn đang tìm việc, hãy tập dùng LinkedIn để tiếp cận đến nhà tuyển dụng.

Tuy nhiên, không phải ai tiếp cận thì người ta cũng trả lời. Có người lịch sự, người không. Việc của bạn là cứ làm tốt phần của mình và chờ đợi từ phía đối phương nhé.

Bài viết gốc được đăng tải tại anhtuanle.com

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Tầm quan trọng của các chương trình đào tạo sau đại học trong kỷ nguyên 4.0

nang trinh ky nang

nâng tầm công nghệTrong bối cảnh kỷ nguyên số cùng sự xuất hiện của nhiều công nghệ mới, thị trường lao động ở tất cả các lĩnh vực từ chuỗi cung ứng đến phát triển kinh doanh, phân tích kinh doanh, tiếp thị kỹ thuật số, và nhiều lĩnh vực khác đòi hỏi nguồn nhân sự phải sở hữu những kỹ năng mới và trình độ chuyên môn cao hơn. Để thay đổi tư duy và nâng cao trình độ, việc lựa chọn các chương trình đào tạo sau đại học là điều quan trọng và hợp lý cho những ai muốn tiếp tục phát triển sự nghiệp. Tuy nhiên, với cuộc sống bận rộn, không phải ai cũng có thể sắp xếp được thời gian để hoàn thành tốt các chương trình học tại trường. Vì thế việc tham gia các chương trình đào tạo sau đại học trực tuyến mang lại nhiều lợi ích, giúp cá nhân linh hoạt trong việc học tập, không bị ràng buộc bởi thời gian và địa điểm cụ thể. Điều này giúp tối ưu hóa việc học tập và làm việc, đồng thời nâng cao kỹ năng trong một môi trường chuyên nghiệp. Hãy cùng khám phá các chương trình đào tạo sau đại học có chất lượng tốt nhất hiện nay đến từ upGrad.

Chứng chỉ Sau Đại học về Generative AI từ upGrad Institute

Các chuyên gia tại upGrad Institute đã thiết kế chương trình này dành cho các kỹ sư, chuyên gia phần mềm và CNTT, chuyên gia dữ liệu có sự quan tâm và mong muốn nghiên cứu mở rộng kiến thức hơn trong lĩnh vực Generative AI. Với hơn 6 dự án thực hành từ đầu đến cuối khoá học, học viên sẽ có cơ hội tìm hiểu và triển khai hơn 10 công cụ Generative AI như OpenAI, Midjourney, DALL-E và các ngôn ngữ lập trình như Python, Flask, Excel. Chương trình bao gồm hơn 180 giờ học trực tiếp và các buổi giải đáp 1-1 với các giảng viên hàng đầu và chuyên gia trong ngành đảm bảo cho học viên học tập hiệu quả nhất. 

Chương trình Thạc Sĩ Khoa Học Dữ Liệu (Data Science) tại Liverpool John Moores University

Với chương trình Thạc Sĩ Khoa Học Dữ Liệu tại trường Đại học Liverpool John Moores danh tiếng, thuộc Top 100 trường Đại học tốt nhất thế giới, học viên sẽ có cơ hội tìm hiểu chuyên sâu về Thống kê, Phân tích dự đoán, Phân tích dữ liệu thăm dò, Trực quan hóa dữ liệu, Phân tích dữ liệu,… trên nền tảng sử dụng thành thạo các công cụ Python, Tableau, MySQL, Excel nâng cao. Chương trình được thiết kế 100% trực tuyến cùng với những buổi học trực tiếp hàng tuần với các chuyên gia và giảng viên đầu ngành, giúp tạo điều kiện thuận lợi cho học viên, đặc biệt là người đang đi làm có thể linh động sắp xếp thời gian học phù hợp. Chương trình là sự lựa chọn phù hợp cho những chuyên gia phần mềm và CNTT, chuyên gia dữ liệu, chuyên gia kinh doanh, kỹ sư từ mọi ngành nghề có mong muốn nâng cao khả năng phân tích, cải thiện khả năng dự đoán và đưa ra quyết định kinh doanh dựa trên số liệu.

Chương trình Thạc Sĩ Máy học (Machine Learning)  & Trí tuệ nhân tạo (AI) tại Liverpool John Moores University

Chương trình được cải tiến để cung cấp các kỹ năng mới nhất về Machine Learning và AI, nhằm giúp học viên làm chủ được các kỹ thuật và ứng dụng nâng cao của AI bao gồm ChatGPT, Open AI, Dall, Midjourney và nhiều công cụ khác. Chương trình học trực tuyến với các giảng viên hàng đầu cùng với cơ hội tham hơn 15 dự án ngành và 6 dự án thực hành thực tế được thiết kế để đảm bảo trải nghiệm học tập của học viên hiệu quả nhất. Sau khi hoàn thành chương trình, học viên sẽ nhận bằng Thạc sĩ được WES công nhận sau và trở thành cựu học sinh của đại học Liverpool John Moores danh tiếng nước Anh với chi phí chỉ bằng 1/10 chi phí của một chương trình học tại trường.

Chương trình Tiến Sĩ Quản trị Kinh doanh – chuyên ngành Công nghệ Tiên tiến từ Golden Gate University

Trường Đại học Golden Gate được xếp hạng #1 dành cho người đã đi làm tại Mỹ đã thiết kế chương trình học hybrid này dành cho các nhà lãnh đạo ngành, CXO, doanh nhân và giám đốc điều hành mong muốn nghiên cứu về tác động của Generative AI trong các lĩnh vực khác nhau và có mong trở thành người dẫn đầu trong ngành, người có thể thúc đẩy sự thay đổi nhằm cách mạng hoá các ngành công nghiệp một cách nhanh chóng. Tham gia vào khóa học, học viên sẽ có cơ hội được giảng dạy bởi đội ngũ giảng viên nổi tiếng toàn cầu và có cơ hội tham gia chương trình trao đổi quốc tế tại San Francisco, Mỹ. Sau khi hoàn thành chương trình, học viên sẽ nhận được bằng và bảng điểm gốc có giá trị tương đương như chương trình tại trường. Học viên còn có cơ hội tham gia phỏng vấn cho các vị trí trợ giảng và trở thành một thành viên trong mạng lưới toàn cầu của Golden Gate.

nang trinh ky nang

Những lợi ích khi lựa chọn đồng hành cùng với upGrad

upGrad áp dụng mô hình học trực tuyến linh hoạt cho phép học viên có thể chủ động sắp xếp thời gian học phù hợp với lịch trình cá nhân nhằm giúp học viên có thể cân bằng giữa công việc và học tập. Các chương trình học tại upGrad là sự kết hợp giữa lý thuyết và thực hành từ những giảng viên hàng đầu thế giới và học liệu chất lượng. Học viên sẽ có cơ hội tham gia những dự án thực tế trong suốt quá trình học. Bên cạnh đó, upGrad luôn quan tâm đến trải nghiệm và cung cấp sự hỗ trợ 24/7 cho người học, giúp giải đáp mọi thắc mắc và vướng mắc trong quá trình học tập. Sự hỗ trợ này giúp người học tự tin hơn trong việc tiếp thu kiến thức, đồng thời tạo điều kiện thuận lợi cho họ hoàn thành khóa học một cách tốt nhất.

nang trinh ky nang

nang trinh ky nang

Về upGrad

upGrad là một trong những công ty EdTech lớn nhất Đông Nam Á, cung cấp cho người học trên toàn cầu một trải nghiệm học tập trực tuyến đa dạng với hơn 3 triệu học sinh đã đăng ký từ hơn 100 quốc gia. Là một trong số ít những doanh nghiệp được chính phủ Việt Nam công nhận cũng như mạng lưới hợp tác với các trường đại học danh tiếng trên thế giới và nhiều doanh nghiệp uy tín trên thị trường lao động. upGrad đã liên tục đầu tư, phát triển và cải thiện nền tảng học tập trực tuyến để tạo điều kiện thuận lợi nhất cho người học tiếp cận nền giáo dục chất lượng bậc cao.

Hãy cùng đầu tư vào bản thân với các khoá học chất lượng và đa dạng tại upGrad để chinh phục mơ ước nghề nghiệp của bạn! Tìm hiểu ngay tại đây đừng bỏ lỡ cơ hội nhận được học bổng lên đến 70% các khoá học của upGrad khi đăng ký thông tin tại đây hoặc liên hệ qua số hotline: 0938386166 (Mrs Nguyên)/ 0375702594 (Ms Tania)

Thà trả người mới lương cao còn hơn tăng lương cho người cũ

Thà trả người mới lương cao còn hơn tăng lương cho người cũ

Bài viết được sự cho phép bởi tác giả Vũ Thành Nam

Câu chuyện lương thưởng của nhân viên này nhân viên kia chưa bao giờ là một chủ đề hết sự tranh cãi. Mình cũng từng có bài viết về vấn đề này nhưng gần đây mình quan sát được một điều nữa về cách thức trả lương của các công ty nói chung mà mình sẽ nêu ra ở bài viết này.

Thà trả người mới lương cao còn hơn tăng lương cho người cũ

Một triết lý và quan điểm rất hay gặp mà không phải anh chị nhân sự nào cũng nói ra được. Mình thấy dường như nó là câu chuyện muôn thủa khi so sánh lương nhân viên cũ và nhân viên mới vậy. Cùng mình phân tích thử tại sao lại như vậy nhé.

Trước tiên, hãy nói đến hệ thống lương của các công ty thường sẽ được bảo mật, về mặt lý thuyết mà nói thì mức lương của mọi nhân viên sẽ là bí mật, mọi thông tin về lương đều gửi cho từng cá nhân và không ai biết ai. Có những công ty còn làm khắt khe hơn khi ghi rõ vào điều khoản trong hợp đồng nếu ai đó tiết lộ lương của bản thân với một hình thức vi phạm cơ chế bảo mật lương.

Tuy nhiên không phải ai cũng giữ kín được mức lương của mình với những bà tám ông buôn sau những câu chuyện phiếm chốn công sở tưởng chừng như vô hại. Điều này chắc chắn khiến cho hệ thống bảo mật mức lương như lý thuyết bên trên có phần vô nghĩa.

tăng lương

Đối với phòng nhân sự hay các anh chị quản lý họ đều biết điều đó và cũng chẳng làm gì hơn được. Mặt khác nhân viên có quyền kiểm tra chéo hay đi đối chiếu và tham khảo mức lương thị trường, các công ty khác, các bộ phận khác để suy đoán mức lương của nhau hết sức dễ dàng. Mặc dù không phải chính xác một trăm phần trăm nhưng mà ước lượng mức lương theo cấp bậc, số năm kinh nghiệm hay thông qua những lần review tăng lương đều có thể cộng dồn và nắm được ít nhiều thông tin. Điều này là khá bình thường.

Vấn đề ở chỗ sau khi biết được mức lương của một người cùng vị trí, năng lực tương đương thì bạn sẽ nghĩ gì và làm gì?

Đối với góc nhìn của nhân sự. Một nhân viên sẽ nằm trong một khoảng lương mà công ty đã định sẵn. Ở một vị trí nếu nhân viên có năng lực hơn sẽ có mức cận trên, những nhân viên yếu hơn sẽ có mức cận dưới. Việc xin và đòi tương lương dường như chỉ nằm trong khoảng lương này mà thôi. Muốn hơn cũng khó vì phải đi giải trình các cấp lãnh đạo trường hợp này trường hợp kia, tại sao lại tăng hơn, abc, xyz thủ tục rất rườm rà nên phòng nhân sự sẽ khó chấp nhận tăng lương vượt quá khung cho phép này.

Khi bạn làm vượt mức và trở nên xuất sắc, nếu công ty nhìn nhận bạn và đánh giá sự phát triển của bạn tốt, tất nhiên bạn sẽ được tăng mà thôi. Nhưng tăng bao nhiêu để không bị bẻ gãy khung lương trên và không làm quá chênh lệch với nhân viên khác cùng vị trí. Mức độ chênh lệch này sẽ ảnh hưởng đến tâm lý của số nhân viên còn lại nếu biết được mức tăng của bạn. Cân đo đong đếm một hồi thì phòng nhân sự sẽ đưa ra con số được cho là phù hợp với thời điểm hiện tại.

Đôi khi nhân sự sẽ không trực tiếp tăng vượt khung cho bạn mà còn kèm theo một số điều khoản thưởng treo hay cam kết và hỗ trợ về mặt nào đó nhằm lấy những phúc lợi đi kèm để bù đắp cho phần lương kỳ vọng ở mức lương của bạn.

Chuyện chẳng có gì để nói nếu khung lương kia được giữ nguyên nhưng đối với một nhân viên mới vào thì lại ngoại lệ. Họ được kỳ vọng và tỉ lệ cao là sẽ được trả mức lương cao hơn so với người cũ khi cùng một vị trí, cùng chức vụ và thậm chí là cùng một dự án.

Đối với một nhân viên mới vào công ty thì thường được định giá theo mức giá thị trường hiện tại, để có thể câu kéo được người mới này, nhân sự thường đưa ra offer cao để hút người về. Điều này làm cho những nhân viên cũ bị ảnh hưởng đến tâm lý nếu biết được mức lương trả cho người mới. Khi này nhân sự thường biện minh bằng những lý do người mới, tuy nhiên nó lại là sự chưa chắc chắn được với khả năng người mới ra sao, nghiệp vụ dự án thì chắc chắn không bằng người cũ. Chỉ dựa vào kỹ năng phỏng vấn sẽ có phần hơi rủi ro khi vào công ty nếu so sánh với người có thâm niên.

Vấn đề được lật ngược lại nếu bạn thử đặt câu hỏi, độ ì của nhân viên cũ càng lâu năm sẽ càng tăng, sự sáng tạo trong công việc không cao như lúc ban đầu. Khả năng cống hiến thì có thể có đó nhưng mà có thể họ sẽ mang tâm lý ếch ngồi đáy giếng tự cho mình là giỏi và có kinh nghiệm nên đòi hỏi hết lần này đến lần khác. Việc này khó có thể điều chỉnh và kiểm soát hơn so với những người mới. Dù cho người mới là mức lương mới đó nhưng họ sau khi được đào tạo sẽ dường như có một làn gió mới cho công ty. Vậy nên nhiều công ty chấp nhận thay máu hàng loạt là vì vậy.

Hơn nữa, số lượng nhân viên mới không nhiều nêu nếu mức lương mới một hai cá thể nếu cân đo đong đếm chắc chắn là sẽ ít tốn kém hơn so với phá vỡ khung lương của tất cả nhân viên cũ bên trên khiến công ty bị mất kiểm soát nếu ai ai cũng ganh tỵ nhau về mức lương hiện tại.Bên cạnh đó, đề xuất cho những người mới một mức lương cao tưởng chừng như là điều vô lý nhưng tiêu chuẩn tuyển dụng và nội dung công việc đều đã thay đổi so với trước kia cho nên tiền lương lên xuống là chuyện bình thường.

tăng lương

Trên đây là những phân tích dưới góc độ cái nhìn của bản thân mình. Đọc đến đây, hãy thử giải định bản thân ở những vị trí sau và để lại ý kiến dưới phần bình luận nhé.

– Nếu bạn đặt vị trí mình là người nhân viên cũ bạn sẽ nghĩ gì và có thái độ ra sao nếu biết mức lương của người mới vào?

– Nếu bạn là người mới vào thì bạn sẽ coi thường những nhân viên cũ và cho họ là dại dột chứ?

– Nếu bạn làm ở bộ phận nhân sự thì bạn có giải pháp nào tốt để cân bằng giữa người cũ và người mới không?

Một điểm mình thấy gần đây không biết có phần hơi lạ không đó là một nhân viên đã từng rời công ty sau một thời gian ngắn thì trở lại chính công ty đó thì lại được tăng lương cũng như cấp bậc trong công ty hơn nhiều lần so với những người cùng làm trước đó và từng bước đi lên theo thâm niên ở công ty.

Thật kỳ lạ và mình cũng chưa tìm được lý do tại sao.

Bạn có thể để lại ý kiến của bản thân bên dưới để chúng ta cùng trao đổi thử!

Bài viết gốc được đăng tải tại ntechdevelopers.com

Xem thêm:

Xem thêm việc làm IT mức lương lương hấp dẫn nhất thị trường

Load Testing là gì? Tầm quan trọng của Load Testing trong quá trình phát triển phần mềm

Load Testing là gì

Trong thế giới phần mềm ngày nay, người dùng luôn mong muốn có được trải nghiệm mượt mà và được đáp ứng nhanh chóng khi sử dụng các ứng dụng. Tuy nhiên, khi lượng truy cập tăng cao, hiệu suất của ứng dụng có thể bị ảnh hưởng nghiêm trọng, dẫn đến độ trễ, lỗi hoặc thậm chí là gây ra những sự cố nghiêm trọng. Đây là lúc mà Load Testing trở nên quan trọng hơn bao giờ hết. Trong bài viết này, hãy cùng TopDev khám phá về Load Testing, từ khái niệm cơ bản đến vai trò của quá trình này trong phát triển mềm.

Load Testing là gì?

Load Testing là gì?

Load Testing là quá trình đo lường hiệu suất của một hệ thống phần mềm bằng cách mô phỏng tải trọng người dùng thực tế. Quá trình này cho phép các developer và các tester phần mềm đánh giá khả năng xử lý, thời gian phản hồi, sự ổn định và khả năng mở rộng của hệ thống dưới các điều kiện tải cao.

Tại sao Load Testing lại quan trọng?

Load Testing là gì?

Trong thế giới ngày nay, khi mà số lượng người dùng trực tuyến ngày càng tăng cao, việc đảm bảo ứng dụng của bạn có thể đáp ứng được nhu cầu của khối lượng người dùng lớn là điều vô cùng quan trọng. Load Testing giúp bạn đánh giá được hiệu suất của hệ thống dưới các điều kiện tải cao, xác định điểm yếu và các vấn đề về hiệu suất khác trước khi ứng dụng được giới thiệu trên thị trường.

Cách thực hiện Load Testing

Có nhiều phương pháp để thực hiện Load Testing, tuy nhiên thông thường một quá trình Load Testing đơn giản và hiệu quả thường bao gồm các bước sau: 

  • Bước 1. Xác định mục tiêu kiểm tra: 

Đặt ra các chỉ số hiệu suất mong muốn, như số lượng người dùng đồng thời, thời gian phản hồi, v.v.

  • Bước 2. Thiết lập môi trường kiểm tra:

Tạo ra một môi trường giống với môi trường thực tế để kiểm tra.

  • Bước 3. Tạo kịch bản kiểm tra: 

Mô phỏng các tác vụ và hành vi của người dùng thực tế.

  • Bước 4. Thực hiện kiểm tra tải: 

Sử dụng các công cụ tự động để tạo ra lượng tải người dùng giả lập.

  • Bước 5. Phân tích kết quả: 

Đánh giá hiệu suất của hệ thống dựa trên các chỉ số đã đặt ra.

  Stress testing là gì? Phân biệt stress testing và load testing

  Test Scenario là gì? Phân biệt Test Case và Test Scenario

Các công cụ hỗ trợ thực hiện Load Testing là gì?

Các công cụ hỗ trợ thực hiện Load Testing

Có nhiều công cụ Load Testing khác nhau trên thị trường, cả nguồn mở và thương mại. Một số công cụ được sử dụng rộng rãi gồm:

Apache JMeter

Đây là một công cụ nguồn mở mạnh mẽ và linh hoạt để kiểm tra tải trọng và hiệu suất. JMeter cung cấp khả năng mô phỏng hàng nghìn người dùng ảo, hỗ trợ nhiều loại kiểm tra khác nhau như kiểm tra tải, kiểm tra độ bền, kiểm tra hiệu suất, v.v. Đồng thời, công cụ này cũng có thể được tích hợp với nhiều công cụ khác trong quy trình phát triển phần mềm.

LoadRunner

Một sản phẩm thương mại của Micro Focus, cung cấp các tính năng kiểm tra tải nâng cao. LoadRunner cho phép người dùng tạo ra các kịch bản kiểm tra phức tạp, mô phỏng hàng trăm nghìn người dùng đồng thời, và cung cấp phân tích chi tiết về hiệu suất của hệ thống. LoadRunner hỗ trợ nhiều giao thức và công nghệ khác nhau, bao gồm cả ứng dụng di động và ứng dụng dựa trên đám mây.

Gatling

Đây là một công cụ kiểm tra tải nguồn mở, dựa trên ngôn ngữ lập trình Scala. Gatling được thiết kế để dễ sử dụng và mạnh mẽ, cho phép người dùng tạo ra các kịch bản kiểm tra phức tạp với mã nguồn rõ ràng và dễ đọc. Công cụ này cung cấp các báo cáo chi tiết về hiệu suất của hệ thống và hỗ trợ nhiều giao thức khác nhau.

Locust

Locust là một công cụ kiểm tra tải nguồn mở, dễ sử dụng và được viết bằng Python. Locust được thiết kế để dễ dàng mở rộng và tùy chỉnh, cho phép người dùng tạo ra các kịch bản kiểm tra phức tạp với mã Python đơn giản và cung cấp giao diện người dùng trực quan để theo dõi, kiểm soát quá trình kiểm tra tải.

BlazeMeter

Đây là một nền tảng kiểm tra tải dựa trên đám mây, hỗ trợ nhiều công cụ khác nhau như Apache JMeter, Selenium, Gatling, và Taurus. BlazeMeter cho phép người dùng thực hiện kiểm tra tải với quy mô lớn, mô phỏng hàng triệu người dùng đồng thời từ khắp nơi trên thế giới. Ngoài ra, công cụ này cũng cung cấp các tính năng phân tích hiệu suất nâng cao và tích hợp với nhiều nền tảng khác nhau.

Tham khảo việc làm tester lương cao trên TopDev

Các câu hỏi thường gặp về Load Testing

Câu 1. Nên bắt đầu thực hiện Load Testing từ khi nào?

Load Testing nên được thực hiện trong suốt vòng đời phát triển phần mềm, đặc biệt là trong giai đoạn kiểm thử và trước khi triển khai ứng dụng.

Câu 2. Load Testing có thể thực hiện trên môi trường sản phẩm không?

Không nên thực hiện Load Testing trên môi trường sản phẩm, vì điều này có thể ảnh hưởng đến hiệu suất và trải nghiệm người dùng thực tế. Thay vào đó, hãy thiết lập một môi trường kiểm tra riêng biệt.

Câu 3. Tôi nên kiểm tra tải với bao nhiêu người dùng giả lập?

Số lượng người dùng giả lập phụ thuộc vào mục tiêu kiểm tra và dự kiến lượng người dùng thực tế của ứng dụng. Thông thường, bạn nên kiểm tra với số lượng người dùng cao hơn so với dự kiến để đảm bảo khả năng mở rộng.

Câu 4. Load Testing có thể thực hiện trên các ứng dụng di động không?

Câu trả lời là có Load Testing cũng có thể áp dụng cho các ứng dụng di động. Tuy nhiên, quá trình này có thể phức tạp hơn do sự đa dạng của các thiết bị và hệ điều hành di động.

Kết luận

Load Testing đóng một vai trò quan trọng trong quá trình phát triển phần mềm, giúp đảm bảo rằng hệ thống có đủ khả năng xử lý tải cao và cung cấp trải nghiệm người dùng tốt nhất. Quá trình này cho phép các developer phát hiện và khắc phục các vấn đề hiệu suất trước khi ứng dụng được triển khai, tránh được các sự cố đáng tiếc và đảm bảo sự hài lòng của người dùng.

Hy vọng rằng bài viết của TopDev đã cung cấp cho bạn nhiều thông tin hữu ích về Load Testing cũng như các bước triển khai quá trình Load Testing một cách hiệu quả. Hãy tiếp tục theo dõi Blog TopDev để cập nhật thêm nhiều kiến thức hữu ích về lập trình và các tips tuyển dụng hiệu quả.

Xem thêm:

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

Chứng chỉ AWS là gì? Tầm quan trọng và lợi ích của chứng chỉ AWS

Chứng chỉ AWS là gì

Amazon Web Services (AWS) là một trong những nhà cung cấp dịch vụ đám mây hàng đầu trên thế giới. Để đáp ứng nhu cầu ngày càng tăng về nhân lực có chuyên môn về AWS, chương trình chứng chỉ AWS đã ra đời. Trong bài viết này, hãy cùng TopDev tìm hiểu sâu hơn về chứng chỉ AWS, tầm quan trọng và lợi ích mà chứng chỉ mang lại.

Chứng chỉ AWS là gì?

Chứng chỉ AWS là gì?

Chứng chỉ AWS là một chứng nhận được cấp bởi AWS cho những người có kiến thức và kỹ năng về các dịch vụ và giải pháp của AWS. Chương trình chứng chỉ AWS bao gồm nhiều cấp độ khác nhau, từ cơ bản đến nâng cao, nhằm đáp ứng nhu cầu đa dạng của người học và các vai trò công việc khác nhau.

Các kỳ thi chứng chỉ của AWS 

Các kỳ thi chứng chỉ của AWS 

AWS cung cấp 11 chứng chỉ chia thành bốn cấp: Foundational, Associate, Professional và Specialty.

Foundational level:

  • AWS Certified Cloud Practitioner: Chứng chỉ cơ bản, cung cấp kiến thức tổng quan về AWS.

Associate level:

  • AWS Certified Solutions Architect: Dành cho các kiến trúc sư giải pháp, thiết kế và triển khai hệ thống trên AWS.
  • AWS Certified Developer: Dành cho các lập trình viên và nhà phát triển ứng dụng trên AWS.
  • AWS Certified SysOps Administrator: Dành cho các quản trị viên hệ thống vận hành và triển khai các ứng dụng trên AWS.

Professional level:

  • AWS Certified Solutions Architect – Professional: Dành cho những người có kinh nghiệm với AWS và có khả năng thiết kế, quản lý và triển khai các giải pháp phân tán phức tạp trên AWS.
  • AWS Certified DevOps Engineer – Professional: Dành cho các kỹ sư DevOps có kinh nghiệm làm việc với nguyên tắc DevOps, cũng như triển khai, quản lý và điều phối các dự án phần mềm phân tán trên AWS.

Specialty level:

  • AWS Certified Data Analytics – Specialty: Dành cho các chuyên gia phân tích dữ liệu có kinh nghiệm với các dịch vụ phân tích dữ liệu của AWS như Amazon Athena, Amazon EMR, AWS Glue, Amazon Kinesis, etc.
  • AWS Certified Advanced Networking – Specialty: Dành cho các chuyên gia mạng có hiểu biết sâu về các dịch vụ mạng của AWS như Amazon VPC, AWS Direct Connect, AWS Transit Gateway, etc.
  • AWS Certified Security – Specialty: Dành cho các chuyên gia an ninh mạng có kiến thức chuyên sâu về an ninh trên AWS, bao gồm quyền, mã hóa dữ liệu, kiến trúc an toàn, etc.
  • AWS Certified Machine Learning – Specialty: Dành cho các chuyên gia học máy và trí tuệ nhân tạo có kinh nghiệm với các dịch vụ học máy của AWS như Amazon SageMaker, Amazon Rekognition, Amazon Lex, etc.
  • AWS Certified Database – Specialty: Dành cho các chuyên gia quản trị cơ sở dữ liệu có kiến thức sâu về các dịch vụ cơ sở dữ liệu của AWS như Amazon RDS, Amazon DynamoDB, Amazon Redshift, etc.

  AWS Lambda là gì? Cách hoạt động và ứng dụng của Lambda

  So sánh AWS, Google Cloud và Azure năm 2024

Tầm quan trọng của chứng chỉ AWS

Trong thời đại công nghệ phát triển nhanh chóng và xu hướng chuyển đổi sang đám mây ngày càng gia tăng, việc sở hữu chứng chỉ AWS trở nên vô cùng quan trọng. Chứng chỉ AWS chứng minh rằng bạn có kiến thức và kỹ năng chuyên sâu về các dịch vụ đám mây của AWS, giúp bạn nổi bật trong mắt nhà tuyển dụng và đạt được lợi thế cạnh tranh trong thị trường lao động.

Đối với doanh nghiệp, việc có nhân viên được chứng nhận AWS sẽ giúp họ triển khai, quản lý và tối ưu hóa các giải pháp đám mây hiệu quả hơn, dẫn đến tiết kiệm chi phí và tăng năng suất.

Lợi ích của việc sở hữu chứng chỉ AWS 

Lợi ích của việc sở hữu chứng chỉ AWS 

Sở hữu chứng chỉ AWS mang lại nhiều lợi ích cho cả cá nhân và doanh nghiệp:

  • Nâng cao kiến thức và kỹ năng: 

Quá trình chuẩn bị và thi chứng chỉ sẽ giúp bạn nâng cao kiến thức và kỹ năng về AWS, đồng thời cập nhật các công nghệ và thực hành mới nhất.

  • Cơ hội nghề nghiệp mới: 

Chứng chỉ AWS là một lợi thế cạnh tranh trong thị trường lao động, giúp bạn dễ dàng tìm kiếm các cơ hội nghề nghiệp liên quan đến đám mây.

  • Mức lương hấp dẫn: 

Theo nhiều nghiên cứu, những người sở hữu chứng chỉ AWS thường có mức lương cao hơn so với những người không có chứng chỉ.

  • Thể hiện cam kết và chuyên môn: 

Chứng chỉ AWS cho thấy sự cam kết và chuyên môn của bạn trong lĩnh vực đám mây, điều này rất có giá trị đối với các nhà tuyển dụng.

  • Cơ hội phát triển nghề nghiệp: 

Với chứng chỉ AWS, bạn có thể tiếp tục nâng cao kỹ năng và chuyên môn, mở ra nhiều cơ hội phát triển nghề nghiệp trong tương lai.

Tham khảo việc làm Cloud cao, hấp dẫn trên TopDev!

Các câu hỏi thường gặp về chứng chỉ AWS là gì?

Câu 1. Làm thế nào để đăng ký thi chứng chỉ AWS?

Bạn có thể đăng ký thi chứng chỉ AWS trực tuyến trên trang web của AWS Training và Chứng chỉ. Quá trình đăng ký bao gồm chọn chứng chỉ mong muốn, địa điểm và ngày thi, cũng như thanh toán lệ phí thi.

Câu 2. Tôi cần chuẩn bị như thế nào cho kỳ thi chứng chỉ?

AWS cung cấp nhiều tài liệu chuẩn bị thi, bao gồm khóa học trực tuyến, hướng dẫn học tập, bài tập thực hành và tài liệu tham khảo. Ngoài ra, việc có kinh nghiệm thực tế với các dịch vụ AWS cũng rất quan trọng.

Câu 3. Chứng chỉ AWS có hạn sử dụng không?

Các chứng chỉ AWS có giá trị trong vòng 3 năm kể từ ngày cấp. Sau đó, bạn cần phải gia hạn chứng chỉ bằng cách thi lại hoặc hoàn thành một số yêu cầu đào tạo liên tục.

Câu 4. Chứng chỉ AWS có chi phí là bao nhiêu?

Chi phí cho bài kiểm tra AWS Cloud Practitioner là 100 USD, cấp Associate là 150 USD và bài kiểm tra ở cấp độ Specialty có giá 300 USD.

Kết luận

Trong thế giới công nghệ luôn thay đổi nhanh chóng, việc sở hữu chứng chỉ AWS là một lợi thế lớn cho cả cá nhân và tổ chức. Chứng chỉ này không chỉ chứng minh kiến thức và kỹ năng của bạn về AWS, mà còn mở ra nhiều cơ hội nghề nghiệp mới, cải thiện thu nhập và tạo điều kiện cho sự phát triển nghề nghiệp trong tương lai.

Hy vọng rằng bài viết của TopDev đã cung cấp cho bạn được nhiều thông tin hữu ích về chứng chỉ AWS. Hãy tiếp tục theo dõi Blog TopDev để cập nhật thêm nhiều kiến thức hữu ích về lập trình và các tips tuyển dụng hiệu quả.

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

Test Scenario là gì? Phân biệt Test Case và Test Scenario

Test Scenario

Trong quá trình phát triển phần mềm, kiểm thử đóng vai trò quan trọng để đảm bảo chất lượng và sự ổn định của sản phẩm. Một trong những khái niệm cơ bản và quan trọng trong kiểm thử phần mềm là “Test Scenario” hay còn gọi là Kịch bản Kiểm thử. Trong bài viết này, hãy cùng TopDev tìm hiểu sâu hơn về Test Scenario, vai trò và cách xây dựng Test Scenario.

Test Scenario là gì?

Test Scenario là gì?

Test Scenario là một tập hợp các bước, điều kiện và dữ liệu đầu vào cụ thể được sử dụng để kiểm tra một tính năng hoặc yêu cầu nhất định của phần mềm. Nó mô tả một trường hợp sử dụng cụ thể và các bước cần thực hiện để kiểm tra trường hợp đó. Test Scenario giúp các kiểm thử viên có một cách tiếp cận có hệ thống trong việc kiểm tra phần mềm và đảm bảo rằng tất cả các trường hợp quan trọng đều được kiểm tra.

Vai trò quan trọng của Test Scenario trong kiểm thử

Vai trò quan trọng của Test Scenario trong kiểm thử

Test Scenario đóng một vai trò quan trọng trong quá trình kiểm thử phần mềm bởi một số lý do sau:

  • Giúp xác định phạm vi kiểm thử: 

Bằng cách xác định các kịch bản kiểm thử, đội ngũ kiểm thử có thể hiểu rõ phạm vi kiểm thử và đảm bảo rằng tất cả các tính năng quan trọng đều được kiểm tra.

  • Cung cấp một cách tiếp cận có hệ thống: 

Test Scenario cung cấp một khuôn khổ có hệ thống để thực hiện kiểm thử, giúp các kiểm thử viên không bỏ sót bất kỳ trường hợp nào.

  • Tăng độ lặp lại và tính nhất quán: 

Với các kịch bản kiểm thử được định nghĩa rõ ràng, việc kiểm tra có thể được lặp lại và đảm bảo tính nhất quán trong quá trình kiểm thử.

  • Hỗ trợ ghi lại và báo cáo kết quả: 

Test Scenario giúp ghi lại và báo cáo kết quả kiểm thử một cách dễ dàng hơn, cung cấp thông tin chi tiết về các trường hợp đã được kiểm tra và kết quả tương ứng.

  Manual Tester là gì? 8 kỹ năng cần có của một Manual Tester

  Test plan là gì? 4 bước cần thiết để thực hiện test plan?

Cách viết Test Scenario hiệu quả

Cách viết Test Scenario hiệu quả

Tester có thể tạo một Test Scenario hiệu quả theo 5 bước cụ thể như sau:

Bước 1: Đọc kỹ các tài liệu yêu cầu như BRS (Business Requirement Specification), SRS (Software Requirement Specification), FRS (Functional Requirement Specification) của hệ thống cần kiểm thử (System Under Test – SUT). Ngoài ra, cũng nên tham khảo các use cases, sách hướng dẫn sử dụng ứng dụng để hiểu rõ hơn về chức năng và cách sử dụng.

Bước 2: Đối với mỗi yêu cầu được liệt kê trong tài liệu, cần xác định:

  • Hành động và mục tiêu có thể của người dùng khi sử dụng tính năng đó.
  • Các khía cạnh kỹ thuật liên quan đến yêu cầu, như đầu vào, đầu ra, xử lý dữ liệu, tích hợp với hệ thống khác,…
  • Các tình huống lạm dụng hệ thống có thể xảy ra, như nhập dữ liệu không hợp lệ, truy cập trái phép, tấn công bảo mật,… Cần đánh giá với góc nhìn của một hacker.

Bước 3: Sau khi đọc và phân tích các tài liệu yêu cầu, liệt kê các kịch bản kiểm thử nhằm xác minh từng tính năng của phần mềm. Mỗi kịch bản kiểm thử cần bao gồm:

  • Mô tả kịch bản
  • Điều kiện tiên quyết (nếu có)
  • Các bước thực hiện kiểm thử chi tiết
  • Dữ liệu đầu vào
  • Kết quả mong đợi

Bước 4: Khi đã liệt kê đầy đủ các kịch bản kiểm thử, tạo ma trận truy xuất nguồn gốc (Traceability Matrix) để đảm bảo rằng tất cả các yêu cầu đều có ít nhất một kịch bản kiểm thử tương ứng để xác minh.

Bước 5: Các kịch bản kiểm thử được tạo ra cần được xem xét và phê duyệt bởi người giám sát dự án, người quản lý kiểm thử và các bên liên quan khác trong dự án để đảm bảo tính đầy đủ, chính xác và khả thi.

Lưu ý rằng quá trình tạo Test Scenario là một quá trình lặp đi lặp lại. Các kịch bản kiểm thử cần được cập nhật và điều chỉnh khi có bất kỳ thay đổi nào trong yêu cầu hoặc thiết kế của phần mềm.

Khám phá việc làm Tester lương cao trên TopDev

Phân biệt Test Case và Test Scenario

Phân biệt Test Case và Test Scenario

Cả Test Case và Test Scenario là hai thành phần rất quan trọng trong quá trình kiểm thử. Cùng TopDev so sánh sự khác nhau của hai thuật ngữ này.

Test Scenario Test Case
Bao gồm một quy trình tiêu chuẩn thực hiện kiểm thử chi tiết. Một Test Scenario bao gồm nhiều Test Case liên quan. Bao gồm tên Test Case, điều kiện tiên quyết, các bước thực hiện hoặc dữ liệu đầu vào và kết quả mong đợi.
Được phân cấp cao hơn trong nhóm điều kiện kiểm thử dựa trên tính năng của các module và bắt nguồn từ việc sử dụng trong trường hợp nhất định. Thuộc cấp độ hành động thấp hơn và có thể bắt nguồn từ Test Scenario.
Mô tả ngắn gọn và súc tích cho biết cái cần được kiểm thử. Đưa ra thông tin chi tiết về điều kiện tiên quyết (nếu có), cách kiểm thử và kết quả mong đợi.
Trở nên quan trọng khi không đủ thời gian với Test Case; các thành viên nhóm đều tán thành mô tả ngắn gọn nhưng chi tiết về kịch bản kiểm thử. Trở nên quan trọng hơn khi việc phát triển được thực hiện tại chỗ (onsite) và việc quản lý chất lượng được tiến hành từ xa (offshore). Nó giúp các bên hiểu và làm việc đồng bộ.
Trong bối cảnh kiểm thử phần mềm kiểu mới, Test Scenario là một ý tưởng đột phá và tiết kiệm thời gian. Việc sửa chữa và thêm không quá khó khăn và không phụ thuộc vào đối tượng đặc biệt nào. Viết Test Case chỉ tốn công một lần và có khả năng được dùng trong tương lai khi thực hiện kiểm thử hồi quy. Khi báo lỗi, nó giúp tester liên kết giữa số liệu Test Case (ID) và lỗi được phát hiện.
Một trong những ưu điểm nổi bật nhất về Test Scenario là sẽ giảm được sự phức tạp cũng như là tính lặp lại của sản phẩm. Đối với một tester mới, tài liệu chi tiết về Test Case là một tập hợp bằng chứng quan trọng. Trong trường hợp developer bỏ lỡ điều gì đó thì tester cũng có thể nắm bắt được khi thực hiện kiểm thử bằng Test Case.
Trường hợp Test Scenario không có đủ sự chi tiết, nó cần ít thời gian để bàn luận và trao đổi về Test Scenario chính xác đang nói về điều gì. Cần nhiều thời gian cũng như nguồn lực để tiến hành Test Case chi tiết khi bàn luận về việc kiểm thử như thế nào và kiểm thử điều gì.

Các câu hỏi thường gặp về Test Scenario là gì?

Câu 1. Ai là người xây dựng Test Scenario?

Test Scenario thường được xây dựng bởi các tester hoặc nhóm tester, với sự hợp tác của các bên liên quan khác như developer, architect và manager của dự án.

Câu 2. Có nên tự động hóa Test Scenario không?

Tự động hóa Test Scenario là một cách tiếp cận hiệu quả để tăng hiệu suất kiểm thử và giảm thời gian chạy các kịch bản kiểm thử lặp đi lặp lại. Tuy nhiên, không phải tất cả các Test Scenario đều nên được tự động hóa, đặc biệt là các kịch bản phức tạp hoặc liên quan đến các tình huống ngoại lệ khó dự đoán.

Câu 3. Làm thế nào để quản lý và duy trì Test Scenario?

Quản lý và duy trì Test Scenario là một thách thức, đặc biệt khi phần mềm phát triển và thay đổi. Cần có một hệ thống quản lý Test Scenario hiệu quả, bao gồm theo dõi các thay đổi, cập nhật kịch bản kiểm thử, và đảm bảo tính nhất quán. Sử dụng các công cụ quản lý Test Case và kiểm soát phiên bản có thể hỗ trợ quá trình này.

Câu 4. Có nên sử dụng một khuôn mẫu chuẩn cho Test Scenario không?

Sử dụng một khuôn mẫu chuẩn cho Test Scenario có thể giúp đảm bảo tính nhất quán và dễ hiểu trong toàn bộ dự án. Các khuôn mẫu chuẩn thường bao gồm các phần như mô tả kịch bản, điều kiện tiên quyết, bước kiểm thử, dữ liệu đầu vào, và kết quả mong đợi. Tuy nhiên, cần linh hoạt để điều chỉnh khuôn mẫu phù hợp với nhu cầu cụ thể của dự án.

Kết luận

Test Scenario là một phần quan trọng trong quá trình kiểm thử phần mềm. Chúng giúp xác định phạm vi kiểm thử, cung cấp một cách tiếp cận có hệ thống, tăng tính lặp lại và tính nhất quán, cũng như hỗ trợ ghi lại và báo cáo kết quả kiểm thử. Bằng cách xây dựng và sử dụng các Test Scenario hiệu quả, đội ngũ kiểm thử có thể đảm bảo rằng phần mềm đáp ứng các yêu cầu và hoạt động đúng như mong đợi. Hy vọng rằng bài viết của TopDev đã cung cấp cho bạn được nhiều thông tin hữu ích về Test Scenario. Hãy tiếp tục theo dõi Blog TopDev để cập nhật thêm nhiều kiến thức hữu ích về lập trình và các tips tuyển dụng hiệu quả.

Xem thêm:

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

Phương pháp học lập trình hiệu quả bằng Mindmap

học lập trình bằng mindmap

Bài viết được sự cho phép bởi tác giả Vũ Thành Nam

Trong bài viết “Cách mà tôi học một công nghệ mới” mình đã đề cập đến một phương pháp gọi là Mindmap (sơ đồ tư duy) áp dụng vào trong việc học lập trình. Sau đó có một số bạn hỏi nó là gì, trong một số bình luận không thể trả lời cặn kẽ được cho các bạn nên hôm nay ở bài viết này mình sẽ nói kỹ hơn về Mindmap là gì nhé!

Mindmap

Mindmap hay còn gọi là sơ đồ tư duy, là một trong những phương pháp đơn giản nhưng giúp phát triển tư duy hiệu quả. Sơ đồ này được biểu thị dưới dạng một sơ đồ hình vẽ, dùng để diễn đạt một lượng lớn thông tin, kiến thức, ý tưởng hoặc vấn đề.

Bạn có thể hiểu đơn giản, Mindmap giống như một bức tranh tổng quát bao gồm tất cả những thông tin chính được tóm tắt ngắn gọn và dễ hiểu. Ngoài ra, bạn còn có thể sử dụng hình ảnh để minh họa cho các thông tin trong mindmap. Mindmap của bạn càng trực quan thì bạn càng dễ tiếp thu thông tin và đưa ra ý tưởng nhanh hơn.

Tại sao nên học cách tư duy bằng Mindmap?

Đối với những bạn đang bắt đầu học cách tư duy, phương pháp Mindmap được xem là công cụ giúp phân tích vấn đề, giúp bạn xây dựng lối tư duy riêng.

Dưới đây là một số lợi ích khi bạn học tư duy bằng Mindmap.

– Dễ dàng tìm ra bản chất của vấn đề Khi sử dụng Mindmap, vấn đề của bạn sẽ được phân thành các nhánh nhỏ. Hay nói cách khác, những thông tin trọng tâm sẽ được chia ra thành nhiều nhánh nhỏ. Bạn có thể chú thích mối quan hệ liên kết hoặc bổ sung cho các nhánh nhỏ này. Khi đó, bạn có thể dễ dàng tìm ra gốc rễ nguyên nhân và đưa ra hướng giải quyết cho từng phần nhỏ trong vấn đề bạn đang gặp phải.

– Hệ thống thông tin tinh gọn Mindmap là một trong những công cụ giúp lưu trữ và hệ thống thông tin nhanh nhất. Vì các ý tưởng lớn nhỏ, riêng lẻ trong sơ đồ đều được tóm tắt lại rất đơn giản. Chỉ cần trong nháy mắt, bạn có thể dễ dàng hiểu được mối quan hệ giữa những ý tưởng này. Từ đó, bạn có thể dễ dàng nhìn ra bức tranh tổng quát của mọi vấn đề, mọi thông tin. Sau đó, bạn có thể lựa chọn phương pháp giải quyết hoặc có thể tư duy não bộ dễ dàng hơn.

– Lên kế hoạch công việc logic, khoa học Có thể bạn không biết, Mindmap còn được sử dụng trong nhiều dự án lớn nhỏ. Ví dụ, khách hàng yêu cầu nhóm của bạn thiết kế một phần mềm với các yêu cầu và tính năng riêng biệt. Khi đó, điểm trung tâm của sơ đồ sẽ là tên phần mềm, những nhánh nhỏ sẽ là các phần quan trọng khi thiết kế phần mềm. Và trong những nhánh nhỏ này, bạn sẽ thêm vào các yêu cầu và tính năng khách hàng muốn có trong phần mềm đó. Và cuối cùng bạn có thể phân công công việc cho mỗi người dựa trên những nhánh nhỏ đó. Như vậy, nhóm của bạn có thể thực hiện dự án theo một trình tự logic, không bỏ sót bất kỳ mục quan trọng nào.

– Phát huy khả năng tư duy sáng tạo Ngoài việc phát triển tư duy logic và có hệ thống, sử dụng Mindmap còn giúp bạn phát huy khả năng sáng tạo. Vì khi vận dụng nó, bạn sẽ đồng thời sử dụng cả não phải và não trái để phân tích thông tin. Nhờ các hình ảnh trực quan, bạn có thể sẽ tìm ra được những ý tưởng hay, khám phá ra hướng giải quyết mới lạ,…

  Học lập trình có cần giỏi Toán không?

  Top 9 app học lập trình tốt nhất cho các developer

Cách tư duy bằng Mindmap

Mindmap được chia thành 2 phần:

– Điểm trung tâm chính là ý tưởng lớn hay vấn đề bạn muốn giải quyết, đây cũng là điểm nút nơi các nhánh tỏa ra.

– Nhánh là những ý tưởng nhỏ hơn có liên quan mật thiết với nội dung chính.

Ở các nhánh này, bạn có thể tiếp tục vẽ ra những nhánh nhỏ hơn để làm rõ nội dung hay đưa ra gợi ý cho nhánh lớn.Dưới đây là các bước lập Mindmap đúng chuẩn:

  • Bước 1: Xác định từ khóa chính, ý tưởng lớn hoặc vấn đề mấu chốt cần giải quyết.
  • Bước 2: Vẽ điểm trung tâm ở giữa tờ giấy trắng hoặc bảng trắng. Bạn nên sử dụng màu sắc, ký tự lớn hoặc hình ảnh để làm nổi bật nội dung chính.
  • Bước 3: Vẽ những tiêu đề phụ (nhánh cấp 1). Nên viết chữ in hoa và vẽ theo hướng góc chéo để có thể vẽ ra nhiều nhánh khác dễ dàng hơn.
  • Bước 4: Vẽ nhánh cấp 2, cấp 3,… Các bạn nên vẽ nhánh cấp 2 nối tiếp vào nhánh cấp 1 và nhánh cấp 3 nối vào cấp 2.

Ngoài ra, bạn nên chọn 1 màu riêng biệt cho tất cả các nhánh của một ý để dễ dàng kết nối tất cả ý tưởng và nội dung. Lưu ý nên sử dụng những cụm từ khóa, ký hiệu, biểu tượng hoặc hình ảnh để sơ đồ không bị chi chít chữ, làm bạn khó tư duy hơn.

Việc làm IT Fresher dành cho bạn

Cách sử dụng Mindmap trong việc học lập trình

Thực tế thì mình sử dụng Mindmap chỉ nhằm mục đích lưu lại các từ khóa và quá trình học một công nghệ của mình. Như mình đã đề cập ở bài viết trước thì khi đọc một cuốn sách hay tài liệu của một công nghệ nào đó, mình thường vẽ Mindmap dựa trên mục lục của cuốn sách, sau đó rẽ nhánh tới các công nghệ liên quan, rồi đến các từ khóa.

Mục đích của việc này nhằm có được bức tranh tổng quát của công nghệ mà mình muốn học, tránh việc sót và không có một hệ thống tổng quát. Ngoài ra do cách học chia để trị, học từng mảnh ghép nhỏ trong một bể kiến thức rất khó để mà thống kê lại, nên mình chia nhỏ và research từng những nhánh nhỏ học từ nhỏ tới lớn để hoàn thành một công nghệ thì mình nghĩ mindmap sẽ giúp ích được rất nhiều.

Các công cụ Mindmap mình đã từng dùng qua

– IMindMap: Ngày xưa thích màu mè nên dùng bản crack, sau không xài đồ crack nữa nên thôi, phía đắt quá

– XMind: Cái này có cả free và có phí, dùng ổ, đơn điệu nhưng có bản portable không cần cài cắm gì và có thể dùng được trên Mac khá ok.

– Draw.io: Cái này thì không thực sự là mindmap mà nó là công cụ thiết kế chuyên dụng trong lập trình của mình hay dùng. Nó tích hợp nhiều loại sơ đồ, thấy tiện nên dùng thôi. Hơn nữa nó có thể đồng bộ lên cloud nên dùng ở đâu cũng được.

– …

Đây là một sơ đồ mà mình từng vẽ bằng xMind

img_1

Trên đây là toàn bộ những gì mình biết và sử dụng mindmap, bạn có thể tham khảo cách học của mình, hi vọng bài viết này sẽ giúp ích được cho bạn không chỉ trong việc học lập trình!

Bài viết gốc được đăng tải tại ntechdevelopers.com

Xem thêm:

Xem thêm các việc làm Developer hấp dẫn tại TopDev

Manual Tester là gì? 8 kỹ năng cần có của một Manual Tester

Manual Tester là gì

Trong kiểm thử phần mềm, kiểm thử thủ công đóng vai trò quan trọng và không thể thiếu trong việc đảm bảo chất lượng sản phẩm đối với mỗi dự án. Trong đó Manual Testing được thực hiện bởi Manual Tester và đòi hỏi nhiều kỹ năng liên quan đến phân tích nghiệp vụ và hiểu biết về các phương pháp kiểm thử. Bài viết hôm nay chúng ta cùng tìm hiểu xem Manual Tester là gì và những kỹ năng cần có của một Manual Tester nhé.

Manual Tester là gì?

Manual Tester là những người kiểm thử phần mềm một cách thủ công (hay còn gọi là Manual Testing) với nhiệm vụ chính là kiểm tra hoạt động của phần mềm, phát hiện ra các lỗi, sai sót hay bất cứ vấn đề nào có thể gây ảnh hưởng đến chất lượng phần mềm. Trong Manual Testing, các tester sẽ thực hiện các trường hợp kiểm thử và tạo báo cáo kiểm thử hoàn toàn thủ công mà không sử dụng các công cụ tự động nào.

Manual Tester là gì?

Khái niệm Manual Tester sinh ra để phân biệt với Automation Tester – kiểm thử tự động sử dụng các công cụ để thực hiện các trường hợp kiểm thử (Test case). Hiện nay, kiểm thử tự động đang ngày càng được sử dụng nhiều hơn trong các dự án nhằm tối ưu hiệu suất kiểm thử; tuy nhiên kiểm thử thủ công vẫn luôn không thể thiếu trong quy trình phát triển dự án.

Công việc của một Manual Tester

Manual Tester tập trung vào công việc kiểm tra và đảm bảo chất lượng phần mềm. Để thực hiện được công việc này yêu cầu tester phát hiện lỗi một cách nhanh chóng và báo ngay cho bộ phận lập trình (Developers) giúp họ khắc phục lỗi trước khi bàn giao sản phẩm cho khách hàng. Cụ thể công việc của một Manual Tester bao gồm:

  • Lên kế hoạch kiểm thử (Test Plan)
  • Viết Test Case, thực hiện các kịch bản kiểm thử
  • Tìm kiếm phát hiện lỗi của sản phẩm, hệ thống
  • Xác nhận yêu cầu kỹ thuật và nghiệp vụ của dự án có được đáp ứng bởi sản phẩm, hệ thống hiện tại
  • Sử dụng các công cụ và phương pháp kiểm thử phù hợp để đánh giá chất lượng sản phẩm
  • Phối hợp với các bộ phận liên quan để khắc phục lỗi xảy ra
  • Đề xuất phương án giải quyết, khắc phục lỗi hoặc cải thiện phần mềm
  • Viết báo cáo kiểm thử (Test Reports)

Công việc của một Manual Tester

Manual Testing được chia thành 6 loại, mỗi Manual Tester có thể được phân công cho từng loại kiểm thử trong số đó:

  • Unit Testing: kiểm thử đơn vị
  • System Testing: kiểm thử hệ thống
  • White Box Testing: kiểm thử hộp trắng
  • Black Box Testing: kiểm thử hộp đen
  • Acceptance Testing: kiểm thử chấp nhận
  • Integration Testing: kiểm thử tích hợp

  Test Report là gì? Hướng dẫn cách viết Test Report chuẩn cho Tester

  Triển vọng của automation tester trong tương lai

Những kỹ năng cần có của một Manual Tester

Những kỹ năng cần có của một Manual Tester

Kỹ năng chuyên môn

Điều kiện tiên quyết đầu tiên đối với một Manual Tester là cần có những kiến thức về phát triển phần mềm cùng với nguyên tắc và phương pháp kiểm thử sẽ được áp dụng trong công việc, trong dự án. Kiểm thử không chỉ là thao tác với phần mềm để phát hiện ra lỗi; mà là cả quá trình từ bước lập kế hoạch kiểm thử, viết Test case; thực hiện test; phối hợp sửa lỗi và viết báo cáo kiểm thử. Vì vậy bạn cần trang bị các kỹ năng chuyên môn dưới đây:

  • Kỹ năng lên kế hoạch: Test Plan mô tả chi tiết các mục tiêu, quy trình, phương pháp và kế hoạch cho việc kiểm thử. Kế hoạch kiểm thử ảnh hưởng đến toàn bộ kế hoạch của dự án, quyết định việc có khả năng bàn giao sản phẩm đến với khách hàng đúng yêu cầu hay không. Vì vậy một Manual Tester cũng có có kỹ năng lên kế hoạch, làm chủ thời gian công việc của mình.
  • Kỹ năng làm tài liệu: có 2 loại tài liệu mà mọi Tester cần phải viết là Test Case và Test Report. Có thể xem đây là sản phẩm của quá trình kiểm thử, vì vậy bạn cần có kỹ năng viết chuẩn 2 loại tài liệu này, không chỉ để trong team Tester đọc mà còn giúp các bộ phận liên quan khác có thể đọc hiểu và nắm được rõ ràng thông tin.
  • Kỹ năng kiểm thử: liên quan trực tiếp đến chuyên môn công việc của một Manual Tester. Nắm được các nguyên tắc cơ bản khi kiểm thử, hiểu rõ các loại kiểm thử, các phương pháp kiểm thử được áp dụng và thành thạo sử dụng các công cụ kiểm thử theo yêu cầu là kỹ năng bắt buộc để có thể làm việc được ở vị trí này.
  • Kỹ năng báo cáo: sau tất cả các công việc đã thực hiện thì báo cáo sẽ là bước quan trọng mang lại giá trị dành cho dự án đối với giai đoạn kiểm thử. Việc báo cáo đòi hỏi có thể rõ ràng, ngắn gọn và dễ hiểu giúp các bộ phận khác dễ dàng xử lý giai đoạn tiếp theo. Vì vậy đây cũng là một kỹ năng cần thiết với các Tester.

Khám phá việc làm Tester lương cao trên TopDev

Kỹ năng mềm

  • Kỹ năng phân tích: giúp bạn chia nhỏ hệ thống ra thành các phần đơn vị riêng lẻ, có thể kiểm tra và nắm vững được nghiệp vụ liên quan đến phần đó. Từ đó sẽ nâng cao hiệu quả và hiệu suất làm việc của bản thân.
  • Kỹ năng giao tiếp: làm việc trong môi trường teamwork nên đây là kỹ năng bắt buộc phải có của Tester. Ngoài ra việc biết lắng nghe và có khả năng truyền đạt tốt sẽ giúp bạn hợp tác tốt hơn với các phòng ban khác.
  • Kỹ năng tự học và tìm hiểu: kiểm thử thủ công cũng cần phải làm việc với một số công cụ hỗ trợ kiểm thử, đo lường chỉ số, dữ liệu; vì thế việc tự học và tìm hiểu các công nghệ, cách sử dụng tools phục vụ yêu cầu là điều cần thiết với Manual Tester.
  • Rèn luyện tính cẩn thận, tỉ mẩn: đây là đức tính, thói quen tốt dành cho công việc kiểm thử mà bạn nên trang bị, rèn luyện. Luôn luôn cẩn thận trước khi đánh Pass một test case sẽ giúp bạn hạn chế được tối đa các lỗi xuất hiện trong chương trình.

Kết bài

Kiểm thử thủ công giúp tận dụng tối đa tư duy phân tích và sự nhạy bén của con người để phát hiện lỗi và cải thiện chất lượng sản phẩm, vì thế Manual Tester luôn luôn đóng vai trò không thể thiếu trong một team phát triển dự án. Qua bài viết này, hy vọng các bạn đã hiểu rõ hơn về vị trí này và các bạn Tester cũng có thể trang bị thêm các kỹ năng trong bài để nâng cao khả năng của mình. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình. 

Tác giả: Phạm Minh Khoa

Xem thêm:

Xem ngay tin đăng tuyển lập trình viên đãi ngộ tốt trên TopDev

Cloud là gì? Giải mã các kiến thức cần biết về Cloud

Cloud là gì

Cloud đã trở thành một khái niệm quen thuộc trong thế giới công nghệ thông tin hiện đại. Mô hình này đóng vai trò quan trọng trong việc cung cấp các dịch vụ và tài nguyên máy tính một cách linh hoạt và hiệu quả. Trong bài viết này, hay cùng TopDev tìm hiểu toàn diện về Cloud, từ khái niệm đến cách thức hoạt động, lợi ích và các loại Cloud phổ biến.

Cloud là gì?

Cloud là gì?

Cloud là một mô hình công nghệ cho phép truy cập qua mạng vào một nhóm tài nguyên máy tính chia sẻ, có thể được cấu hình và cung cấp nhanh chóng với sự can thiệp quản lý tối thiểu hoặc tương tác với nhà cung cấp dịch vụ. Các tài nguyên này bao gồm máy chủ, lưu trữ, ứng dụng, dịch vụ, công cụ phát triển và nhiều thứ khác.

Cách thức hoạt động của Cloud

Cloud hoạt động dựa trên nguyên tắc phân chia tài nguyên và cung cấp dịch vụ theo yêu cầu. Các nhà cung cấp dịch vụ Cloud (như Amazon Web Services, Microsoft Azure hoặc Google Cloud) xây dựng và quản lý các trung tâm dữ liệu lớn, được trang bị các máy chủ, lưu trữ và mạng kết nối mạnh mẽ.

Người dùng có thể thuê hoặc mua các dịch vụ và tài nguyên từ nhà cung cấp Cloud. Dữ liệu của họ được lưu trữ trên hạ tầng Cloud và có thể truy cập từ bất kỳ đâu thông qua Internet. Cloud cung cấp linh hoạt và tính sẵn có cao, cho phép người dùng mở rộng hay thu hẹp tài nguyên theo nhu cầu thực tế.

Tham khảo Việc làm  IT Security lương cao

Lợi ích của việc sử dụng Cloud

Lợi ích của việc sử dụng Cloud

Cloud được sử dụng rộng rãi vì mang lại nhiều lợi ích đáng kể cho người dùng, bao gồm:

  • Khả năng mở rộng

Cloud cho phép mở rộng tài nguyên lưu trữ và tính toán theo yêu cầu, giúp các tổ chức linh hoạt đáp ứng với sự tăng trưởng và biến động của doanh nghiệp.

  • Tiết kiệm chi phí

Thay vì phải đầu tư vào việc xây dựng và duy trì hạ tầng máy chủ riêng, người dùng chỉ trả tiền cho tài nguyên mà họ sử dụng thực sự. Điều này giúp giảm thiểu các chi phí cố định và tăng tính hiệu quả kinh tế.

  • Dễ dàng truy cập và chia sẻ dữ liệu

Cloud cho phép truy cập dữ liệu từ bất kỳ đâu và bất kỳ thiết bị nào có kết nối internet. Điều này giúp tăng cường khả năng làm việc từ xa và chia sẻ thông tin dễ dàng trong tổ chức.

  • Bảo mật và sao lưu dữ liệu

Các nhà cung cấp Cloud thường đầu tư mạnh vào bảo mật dữ liệu. Họ cung cấp các biện pháp bảo mật tiên tiến như mã hóa, kiểm soát truy cập và sao lưu dữ liệu định kỳ để đảm bảo an toàn và bảo mật thông tin.

  • Tự động hóa và cập nhật

Nhà cung cấp Cloud chịu trách nhiệm quản lý, bảo trì và cập nhật phần cứng và phần mềm, giảm bớt gánh nặng cho người dùng.

  So sánh AWS, Google Cloud và Azure năm 2024

  Amazon Appsync có gì hay ho?

Các loại Cloud phổ biến

Các loại Cloud phổ biến

Tùy thuộc vào nhu cầu và mục đích sử dụng, mỗi người dùng sẽ chọn cho mình một loại mô hình Cloud phù hợp. Dưới đây là 3 loại mô hình Cloud được sử dụng rộng rãi:

  • Public Cloud

Được cung cấp công khai cho công chúng, Public Cloud cung cấp tài nguyên chia sẻ cho nhiều khách hàng. Ví dụ điển hình là các dịch vụ của Amazon Web Services (AWS)Microsoft Azure.

  • Private Cloud

Private Cloud là một mô hình Cloud riêng được xây dựng và quản lý bởi một tổ chức hoặc doanh nghiệp. Nó cung cấp sự kiểm soát và bảo mật cao hơn so với Public Cloud, vì tài nguyên chỉ được sử dụng bởi một số người được ủy quyền.

  • Hybrid Cloud

Hybrid Cloud kết hợp giữa Public Cloud và Private Cloud. Điều này cho phép tổ chức sử dụng Public Cloud để tận dụng linh hoạt và tính sẵn có, trong khi vẫn giữ được sự kiểm soát và bảo mật của Private Cloud. Mô hình Hybrid Cloud thường được sử dụng khi tổ chức có các yêu cầu đặc biệt về bảo mật hoặc tuân thủ quy định.

Tham khảo việc làm Cloud cao, hấp dẫn trên TopDev!

Các câu hỏi thường gặp về Cloud là gì?

Câu 1. Cloud có an toàn không?

Các nhà cung cấp Cloud áp dụng các biện pháp bảo mật nghiêm ngặt như mã hóa dữ liệu, kiểm soát truy cập, giám sát và các tiêu chuẩn an ninh cao để bảo vệ dữ liệu và ứng dụng của khách hàng.

Câu 2. Tôi có cần kiến thức chuyên sâu về công nghệ để sử dụng Cloud không?

Không, hầu hết các dịch vụ Cloud đều được thiết kế với giao diện đơn giản và dễ sử dụng, cho phép người dùng không chuyên có thể dễ dàng truy cập và quản lý tài nguyên.

Câu 3. Tôi có thể di chuyển dữ liệu và ứng dụng từ Cloud này sang Cloud khác không?

Việc di chuyển dữ liệu và ứng dụng giữa các nhà cung cấp Cloud khác nhau là khả thi, tuy nhiên có thể gặp một số thách thức về tính tương thích và di chuyển dữ liệu.

Kết luận

Cloud đã trở thành một phần không thể thiếu trong thế giới công nghệ thông tin hiện đại. Mô hình công nghệ này mang lại nhiều lợi ích về chi phí, linh hoạt và khả năng mở rộng cho doanh nghiệp và người dùng. Với sự đa dạng về loại hình Cloud và các dịch vụ không ngừng phát triển, Cloud sẽ tiếp tục là một xu hướng quan trọng trong tương lai. Hiểu rõ về Cloud sẽ giúp các tổ chức và cá nhân đưa ra những quyết định sáng suốt để tận dụng tối đa lợi ích từ công nghệ này. Hy vọng rằng bài viết của TopDev đã cung cấp cho bạn được nhiều thông tin hữu ích về mô hình công nghệ Cloud. Hãy tiếp tục theo dõi Blog TopDev để cập nhật thêm nhiều kiến thức hữu ích về lập trình và các tips tuyển dụng hiệu quả.

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

Chuẩn Hóa CV, Nhận Quà Hết Ý

Mùa hè đến cùng nhiều cơ hội lý tưởng để nâng tầm sự nghiệp IT của bạn. Cùng TopDev thăng hoa trong sự nghiệp và đảm bảo rằng CV của bạn sẽ nổi bật với nhà tuyển dụng với các công cụ Tạo CV Online và Chuẩn hóa CV. Hơn thế nữa, khi trải nghiệm các tính năng từ TopDev, bạn đã có cơ hội tham gia vào chương trình “Chuẩn hóa CV, Nhận quà hết ý” với nhiều phần quà hấp dẫn. Đừng chần chừ gì nữa mà hãy đăng ký ngay và khám phá các tính năng tuyệt vời của TopDev nhé.

monthly reward may 2024

Check list 10 câu hỏi phỏng vấn Laravel & cách trả lời

câu hỏi phỏng vấn Laravel

Nếu bạn là một lập trình viên PHP thì chắc hẳn không thể chưa từng biết về Laravel, một framework phổ biến nhất của PHP hiện nay. Thị trường tuyển dụng lập trình viên ở Việt Nam trước đến nay thì PHP luôn là một ngôn ngữ được ưa chuộng với nhu cầu lớn và mức đãi ngộ hấp dẫn. Để chuẩn bị tốt nhất cho buổi phỏng vấn sắp tới, bài viết hôm nay chúng ta cùng nhau tìm hiểu top 10 câu hỏi phỏng vấn Laravel thường gặp nhất nhé. 

Câu 1: Laravel là gì?

Laravel là một framework mã nguồn mở miễn phí dựa trên ngôn ngữ lập trình PHP, dùng để xây dựng các ứng dụng Web. Sử dụng mô hình kiến trúc MVC, Laravel cung cấp một hệ thống đóng gói module với các tài nguyên có sẵn để lập trình viên dễ dàng lựa chọn và sử dụng. Hiện nay, Laravel đang là PHP framework phổ biến nhất và tốt nhất được đông đảo lập trình viên PHP lựa chọn.

câu hỏi phỏng vấn Laravel

Câu 2: Các tính năng mà Laravel cung cấp

Laravel cung cấp bộ chức năng phong phú dành cho lập trình viên PHP bao gồm Eloquent ORM, Template Engine, Artisan, Migration system for databases,… Laravel hỗ trợ kiến trúc MVC, đóng gói tài nguyên thành các thư viện (Libraries) và các module giúp chúng ta dễ dàng sử dụng. Các tài nguyên trên được tổ chức và sử dụng thông qua việc khai báo namespaces và interfaces.

Ngoài ra Laravel hỗ trợ chúng ta các phương thức bảo mật Web có sẵn phổ biến cùng khả năng mở rộng bảo trì lâu dài. Framework này cũng có những module dành cho việc kiểm thử Unit Testing mà không cần cài thêm thư viện nào khác.

Câu 3: Blade Template là gì?

Blade là một template engine (công cụ giúp tách mã HTML thành các phần nhỏ hơn) đơn giản nhưng mạnh mẽ được cung cấp bởi Laravel. Các file Blade view có phần mở rộng .blade.php và được lưu trong thư mục resources/views. Tất cả các Blade view sẽ được biên dịch thành mã PHP và được lưu vào bộ nhớ đệm cho đến khi chúng được sửa đổi.

Câu 4: Có những cách query nào trong Laravel?

Có 2 cách query trong Laravel bao gồm: 

  • Query builder: thao tác với database sử dụng PDO (PHP Data Object) có sẵn của PHP có thể kết nối đến các CSDL thông dụng
  • Eloquent: thao tác với database qua model với sự hỗ trợ của nhiều function hữu ích

Câu 5: Middleware trong Laravel là gì?

Middleware là nơi chứa những đoạn mã xử lý trung gian nằm giữa các request và response. Cơ chế này cho phép chúng ta tham gia vào luồng xử lý request trong ứng dụng Laravel. Ví dụ như middleware Authenticate có tác dụng kiểm tra xem user đã đăng nhập chưa; trong trường hợp xác thực thất bại thì trả về trực tiếp response yêu cầu đăng nhập mà không cần xử lý bước tiếp theo.

Middleware trong Laravel là gì?

Câu 6: Liệt kê các phương thức làm việc với session

Các thao tác cơ bản với Session trong Laravel gồm:

  • Lấy dữ liệu từ session: get(‘key’)
  • Lấy toàn bộ dữ liệu từ session: all()
  • Xóa dữ liệu từ session: forget(‘key’) hay flush()
  • Lưu dữ liệu vào session: put(‘key’, ‘value’)

  So sánh Laravel và Phalcon - Framework nào tốt hơn?

  Những tính năng cao cấp trong Laravel mà có thể bạn chưa biết

Câu 7: Xóa mềm trong Laravel là gì?

Xóa mềm – Soft delete là một tính năng của Laravel giúp dữ liệu được ẩn đi khỏi chương trình nhưng không thực sự bị xóa đi khỏi hệ thống. Laravel sử dụng một cột delete_at đánh dấu cho tính năng xóa mềm cho một Model. Ngược lại với xóa mềm là xóa cứng (Hard delete) là việc xóa hoàn toàn 1 record trong table và sẽ không thể khôi phục lại trừ khi có backup database.

Câu 8: Caching trong Laravel được xử lý thế nào?

Mặc định Laravel cấu hình caching lưu trữ các đối tượng trong file một cách nối tiếp, thư mục lưu trữ file cache này là storage/framework/cache/data . Khi các dự án lớn cần quản lý caching tốt hơn thì chúng ta có thể sử dụng Memcached hoặc Redis.

Middleware trong Laravel là gì?

Tham khảo nhiều chương trình tuyển dụng Laravel hấp dẫn trên TopDev

Câu 9: Hãy giải thích về Service Provider

Service Provider là trung tâm khởi tạo tất cả các ứng dụng trong Laravel, các thành phần core sẽ được khởi tạo từ đây. Để đăng ký một service provider mới, chúng ta cần tạo một file Provider và đăng ký thông qua method register; sau đó add service provider này vào config/app.php. Chúng ta cũng có thể sử dụng lệnh php artisan make: provider ClientsServiceProvider trên CLI (command line interface) để tự tạo cho mình một service provider.

Câu 10: Liệt kê những điểm mới trong Laravel 9

Liệt kê những điểm mới trong Laravel 9

Laravel 9 phát hành vào đầu năm 2022 với một số điểm mới hữu ích:

  • Route:list: gọn gàng và đẹp hơn
  • Anonymous Stub Migrations: trả về class Anonymous khi chạy make:migration
  • Symfony Mailer: thay thế cho Swift Mailer
  • Forced Scoping Of Route Bindings: ràng buộc định tuyến
  • Rendering Inline Blade Templates: hỗ trợ render text thành HTML
  • Hỗ trợ Full Text Indexes và Where Clauses

Kết bài

Trên đây là danh sách 10 câu hỏi phỏng vấn Laravel mà bạn sẽ thường xuyên gặp phải trong các buổi phỏng vấn của mình. Hy vọng qua bài viết giúp bạn tự tin hơn để có thể chinh phục được nhà tuyển dụng hay củng cố thêm kiến thức về Laravel của bản thân. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Tham khảo thêm các vị trí tuyển dụng ngành IT tại Topdev

Angular là gì? Vì sao nên chọn Angular thay vì các framework khác?

Angular là gì?

Trong thế giới phát triển ứng dụng web ngày càng phức tạp, Angular đã trở thành một trong những framework JavaScript phổ biến và mạnh mẽ nhất. Với khả năng xây dựng ứng dụng web đa nền tảng, mạnh mẽ và linh hoạt, Angular đã thu hút được sự quan tâm của các Developers và các doanh nghiệp trên khắp thế giới. Trong bài viết này, chúng ta sẽ tìm hiểu về Angular là gì và tại sao công cụ này lại trở thành một công nghệ quan trọng trong việc phát triển ứng dụng web.

Angular là gì?

Angular là gì?

Angular là một framework JavaScript mã nguồn mở, được phát triển và duy trì bởi Google, giúp cung cấp một bộ công cụ đầy đủ các tính năng như two-way data binding, dependency injection, routing, forms để xây dựng ứng dụng web hiện đại, đáp ứng các yêu cầu về tính năng, khả năng mở rộng và hiệu suất cao. Angular sử dụng ngôn ngữ TypeScript, giúp phát hiện lỗi sớm và nâng cao khả năng bảo trì.

Ưu điểm và nhược điểm của Angular

Ưu điểm và nhược điểm của Angular

Tương tự như các framework khác, Angular cũng có những điểm nổi bật và hạn chế riêng. Cùng TopDev điểm qua một số ưu điểm và nhược điểm của framework này!

Ưu điểm

Angular được sử dụng rộng rãi vì có nhiều ưu điểm so với các framework khác, bao gồm:

  • TypeScript: 

Angular sử dụng TypeScript, một phiên bản mở rộng của JavaScript với kiểu dữ liệu tĩnh, giúp phát triển ứng dụng web một cách có cấu trúc, dễ quản lý và bảo trì.

  • Two-way data binding: 

Angular cung cấp khả năng two-way data binding giữa mô hình (model) và giao diện người dùng (view). Điều này đồng bộ dữ liệu tự động giữa các thành phần, giúp tiết kiệm thời gian và công sức cho các developers.

  • Dependency Injection: 

Angular sử dụng Dependency Injection (DI) để quản lý và cung cấp các đối tượng cho các thành phần của ứng dụng một cách linh hoạt. Điều này giúp tạo ra mã nguồn dễ bảo trì và dễ tái sử dụng.

  • Routing: 

Angular cung cấp hệ thống routing mạnh mẽ, cho phép chuyển đổi giữa các trang dễ dàng và linh hoạt, cải thiện trải nghiệm người dùng.

  • Forms: 

Angular cung cấp các tính năng mạnh mẽ để xử lý và kiểm tra dữ liệu đầu vào từ người dùng, giúp quản lý biểu mẫu dễ dàng và hiệu quả.

  • Cộng đồng và hệ sinh thái: 

Angular có một cộng đồng lớn và mạnh mẽ, đi kèm với hệ sinh thái phong phú của các thư viện và công cụ hỗ trợ. Điều này giúp các developers dễ dàng tìm kiếm giải pháp và nhận sự hỗ trợ khi cần.

Nhược điểm

Mặc dù có nhiều ưu điểm, song Angular vẫn còn tồn tại một số điểm yếu như sau:

  • Kích thước: 

Ứng dụng Angular có thể có kích thước tải xuống lớn do việc bao gồm và tải xuống các thư viện và framework lớn như Angular core và các thư viện liên quan. Điều này có thể làm tăng thời gian tải trang và tiêu thụ bộ nhớ.

  • Quản lý phiên bản: 

Vì Angular liên tục phát triển và cập nhật, việc duy trì và nâng cấp phiên bản cho các dự án lớn có thể gặp khó khăn.

  • Hiệu suất: 

Mặc dù đã có nhiều cải tiến, hiệu suất của ứng dụng Angular có thể bị ảnh hưởng khi ứng dụng trở nên lớn và phức tạp.

  So sánh Angular và ReactJS: 8 đặc điểm nổi bật

  Nên học Angular hay React? So sánh 2 framework

Sự khác biệt giữa Angular và AngularJS

Sự khác biệt giữa Angular và AngularJS

AngularJS là phiên bản đầu tiên của Angular, ra đời vào năm 2010. Angular (hay Angular 2+) là phiên bản hoàn toàn mới, được viết lại từ đầu với nhiều cải tiến. Từ đó, cả hai phiên bản có những sự khác nhau, gồm:

  • Về ngôn ngữ lập trình:

Angular sử dụng TypeScript, AngularJS sử dụng JavaScript.

  • Về kiến trúc:

Angular sử dụng kiến trúc dựa trên các thành phần (component-based), AngularJS sử dụng kiến trúc controller-based.

  • Về Dependency Injection:

Angular cung cấp hệ thống dependency injection mạnh mẽ và linh hoạt, AngularJS sử dụng tính năng này thông module và service

  • Về hiệu suất:

Angular có hiệu suất và khả năng mở rộng tốt hơn AngularJS.

Tính ứng dụng của Angular là gì?

Tính ứng dụng của Angular là gì?

Angular được sử dụng rộng rãi trong phát triển ứng dụng web hiện đại, đặc biệt là các ứng dụng doanh nghiệp quy mô lớn. Framework này phù hợp với các ứng dụng cần tính năng phức tạp, khả năng mở rộng cao và bảo trì dễ dàng. Dưới đây là một số cách mà Angular đóng góp vào việc phát triển web:

Hỗ trợ tăng năng suất

Angular cung cấp nhiều tính năng và công cụ hỗ trợ hiệu quả để nâng cao năng suất cho lập trình viên, bao gồm:

  • Sử dụng TypeScript với kiểu dữ liệu tĩnh, giúp giảm lỗi, tăng tính dự đoán và tái sử dụng mã nguồn.
  • Two-way data binding tiện lợi, đồng bộ dữ liệu giữa mô hình và giao diện, tiết kiệm thời gian.
  • Angular CLI mạnh mẽ để tạo nhanh thành phần, module, service và ứng dụng, giảm lỗi sai.
  • Hệ thống Dependency Injection linh hoạt, quản lý đối tượng hiệu quả, giảm lặp lại mã.
  • Hệ sinh thái phong phú với nhiều thư viện, module và công cụ hỗ trợ.

Tham khảo việc làm Angular lương cao trên TopDev!

Cấu trúc phát triển rõ ràng

Angular cung cấp cấu trúc phát triển rõ ràng với các thành phần, module, service và hệ thống routing, giúp tạo ra ứng dụng có cấu trúc và dễ bảo trì. Điều này bao gồm kiến trúc component-based, mô-đun hóa, chia sẻ logic và dữ liệu, cùng hệ thống điều hướng hiệu quả.

Hỗ trợ đầy đủ tính năng điều hướng

Angular Router cung cấp hệ thống điều hướng mạnh mẽ với tính năng đầy đủ như lazy loading, quản lý trạng thái ứng dụng, guards và resolvers, child routes, và quản lý lịch sử điều hướng.

Tối ưu kích thước và hiệu suất ứng dụng

Angular bao gồm các tính năng như tree shaking, Ahead-of-Time (AOT) compilation, lazy loading, hỗ trợ xây dựng Progressive Web Apps (PWA) và service worker, giúp giảm kích thước ứng dụng, tối ưu hóa tải trang và cải thiện hiệu suất chung của ứng dụng.

Các câu hỏi thường gặp về Angular

Câu 1. Angular có hỗ trợ các ứng dụng di động không?

Angular được thiết kế chủ yếu cho ứng dụng web, nhưng có thể sử dụng để xây dựng ứng dụng di động bằng cách kết hợp với Ionic hoặc NativeScript.

Câu 2. Angular có khó học không?

Angular được coi là khó hơn so với một số JavaScript khác, đặc biệt là đối với những người mới bắt đầu trong lĩnh vực phát triển web. Một số lý do khiến Angular khó học hơn là do: có nhiều khái niệm mới, cấu trúc và tài liệu học tập phức tạp, khó hiểu và phải cập nhật kiến thức liên tục.

Câu 3. Angular và React, framework nào tốt hơn?

Cả Angular và React đều là các framework mạnh mẽ, lựa chọn nào tốt hơn phụ thuộc vào nhu cầu dự án và sở thích của nhà phát triển.

Kết luận

Angular là một framework phát triển web mạnh mẽ và linh hoạt, được phát triển bởi Google. Với kiến trúc module, thư viện công cụ và tiện ích đa dạng, Angular đã trở thành một công nghệ quan trọng và được sử dụng rộng rãi. Nếu bạn đang tìm kiếm một framework để xây dựng các ứng dụng web mạnh mẽ và dễ bảo trì, có thể nói Angular là một sự lựa chọn tuyệt vời.

Hy vọng rằng bài viết của TopDev đã cung cấp cho bạn được nhiều thông tin về framework Angular. Hãy tiếp tục theo dõi Blog TopDev để cập nhật thêm nhiều kiến thức hữu ích về lập trình và các tips tuyển dụng hiệu quả.

Xem thêm:

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

So sánh Angular và ReactJS: 8 đặc điểm nổi bật

So sánh Angular và ReactJS

Angular và React là hai công nghệ phổ biến được sử dụng để xây dựng ứng dụng Web phía Frontend, cả hai đều có những tính năng tương đồng cung cấp cho các nhà phát triển một sự lựa chọn đáng giá để xây dựng dự án Web của mình. Bài viết hôm nay chúng ta cùng nhau so sánh giữa Angular và ReactJS xem bạn sẽ quyết định lựa chọn công nghệ nào cho dự án tiếp theo của mình nhé.

Tổng quan về Angular và ReactJS

Angular được phát triển bởi Google từ năm 2016, nó là bản thiết kế lại hoàn toàn khác với AngularJS (còn được gọi là Angular 1.0 ra mắt từ năm 2010). ReactJS được Facebook (hiện nay là Meta) phát hành và sử dụng từ năm 2013. Cả 2 nền tảng này ngay từ khi ra mắt đã cho thấy nhiều ưu điểm vượt trội cho việc xây dựng ứng dụng đơn trang (Single Page Application) và được đông đảo lập trình viên Frontend lựa chọn làm công nghệ cho dự án của mình.

So sánh Angular và ReactJS

Ưu điểm đặc biệt của cả 2 là việc nó cung cấp mã nguồn mở, hoàn toàn miễn phí cho cộng đồng. Cách tiếp cận Component-based (hướng thành phần) giúp cả Angular và React có khả năng xây dựng từng thành phần nhỏ, cơ bản nhất của một UI, từ đó tái sử dụng trong nhiều trang khác nhau mang lại tính nhất quán trong trải nghiệm người dùng. Sự hỗ trợ phát triển và cập nhật phiên bản, công nghệ thường xuyên của cả hai nền tảng giúp nó luôn giữ vững vị thế của mình trong cộng đồng lập trình viên Web.

Phiên bản mới nhất hiện nay của ReactJS là version React 18 phát hành từ năm 2022; trong khi đó với Angular, ver 17 ra mắt cuối năm 2023 vừa rồi cũng mang đến nhiều cập nhật đáng giá cho người dùng.

So sánh Angular và ReactJS

Tính phổ biến

Về độ phổ biến thì ReactJS tỏ ra vượt trội so với Angular. ReactJS tỏ ra thân thiện và dễ tiếp cận sử dụng hơn so với Angular, vì vậy nó thường được lựa chọn dành cho các dự án vừa và nhỏ với thời gian phát triển nhanh.

So sánh Angular và ReactJS

Ngoài ra, sự thành công của mạng xã hội Facebook – một sản phẩm được tạo ra bởi React cũng giúp tính phổ biến của thư viện này lớn hơn đáng kể so với Angular.

Framework vs Library

Angular là một framework, trong khi ReactJS là một thư viện. Điều này có nghĩa là khi làm việc với React, bạn cần phải sử dụng thêm các thư viện khác bổ trợ cho việc quản lý trạng thái dữ liệu trong ứng dụng. Facebook cũng đã phát triển Flux – một kiến trúc hỗ trợ xử lý luồng dữ liệu một chiều dành cho React.

Với Angular, bạn có thể không cần thêm bất cứ thư viện xử lý dữ liệu nào, bản thân nó đã là một framework hoàn chỉnh được xây dựng vững chắc trên mô hình MVC (trong khi với React có thể xem chỉ đang có phần V – View)

Ngôn ngữ sử dụng

Angular sử dụng TypeScript cho việc viết code, điều này giúp tận dụng được thế mạnh về khả năng lập trình hướng đối tượng và mang lại tính nhất quán cho source code của dự án. TypeScript cũng được đánh giá cao hơn trong các dự án quy mô lớn mà vẫn đảm bảo việc sử dụng đầy đủ các kỹ thuật mới nhất của JavaScript. Trong khi đó ReactJS sử dụng JavaScript với cú pháp mở rộng JSX, điều này cũng giúp các lập trình viên mới bắt đầu học React có khả năng tiếp cận dễ dàng hơn.

Xem ngay các tin tuyển dụng ReactJS mới nhất trên TopDev

Ràng buộc dữ liệu

Data Binding là khái niệm chỉ việc đồng bộ dữ liệu giữa trạng thái của ứng dụng và các component view hiển thị lên với người dùng React sử dụng liên kết dữ liệu một chiều với việc thay đổi trạng thái dữ liệu sẽ cập nhật lên các thành phần UI. Angular cho phép ràng buộc dữ liệu hai chiều, nghĩa là khi thành phần UI thay đổi thì model state cũng sẽ được cập nhật. Mặc dù vậy, cách tiếp cận của React giúp quản lý dữ liệu tổng quan và hợp lý hơn trong nhiều trường hợp, nhất là với các ứng dụng phức tạp. 

Ràng buộc dữ liệu

Tốc độ phát triển

Sử dụng Angular framework giúp dự án của bạn thống nhất ngay từ đầu với quy trình rõ ràng cùng với sự nhất quán của source code đến từ ngôn ngữ lập trình TypeScript. Điều này giúp tốc độ phát triển dự án viết bằng Angular sẽ nhanh hơn nếu như các thành viên có chung một level lập trình và hiểu biết nhất định về framework này.

React đòi hỏi việc tích hợp thêm nhiều thư viện khác nhau, điều này có thể gây mất thời gian cho việc xác định hướng giải quyết vấn đề hay quy trình áp dụng trong việc phát triển dự án; nó cũng khiến tốc độ triển khai bị ảnh hưởng.

  AngularJS Là Gì? AngularJS và Angular có khác nhau?

  Top 10 plugin tốt nhất cho ReactJS cho lập trình viên

Hiệu năng ứng dụng

Khó có thể nói được nền tảng nào tốt hơn trong 2 nền tảng trên về mặt hiệu năng. React tỏ ra tốt hơn trong việc nạp (loading) các tài nguyên và thực thi mã (scripting). Ngược lại thì Angular lại cho thấy ưu điểm trong khả năng render và hiển thị lên trình duyệt (painting) của mình.

Hiệu năng ứng dụng

Cả 2 nền tảng này cũng đang từng ngày cập nhật phiên bản mới với sự tối ưu về hiệu năng, hiệu suất cùng việc giảm kích thước ứng dụng. Ở thời điểm hiện tại thì lựa chọn nào cũng đều tốt cho việc trải nghiệm của người dùng.

Hỗ trợ từ cộng đồng

Với sự hậu thuẫn từ 2 ông lớn Google và Facebook; cả Angular và React đều có bộ tài liệu đầy đủ, chi tiết cùng sự hỗ trợ đông đảo đến từ cộng đồng lập trình viên; bạn sẽ dễ dàng tìm kiếm và giải quyết được hầu hết các vấn đề gặp phải trong quá trình triển khai dự án. Phần nào đó thì nếu trên GitHub, cộng đồng React có quy mô lớn hơn Angular, nhưng ngược lại thì số lượng lập trình viên Angular theo khảo sát đến từ StackOverflow có phần cao hơn so với thư viện của Facebook.

Tương lai của 2 nền tảng

React đã có những thay đổi lớn nhằm hỗ trợ các nhà phát triển dễ dàng cung cấp phản hồi về tính năng mới và cải thiện cú pháp JavaScript trong những cập nhật gần đây. Với Angular, sự tăng trưởng về tốc độ sử dụng giúp nền tảng này đang gia tăng thị phần phát triển ứng dụng Web. Rõ ràng trong tương lai gần, cả 2 nền tảng này vẫn sẽ là những công nghệ phổ biến được lựa chọn bởi đông đảo nhà phát triển Web, vì vậy nhu cầu tuyển dụng React và Angular cũng sẽ đều cao.

Kết bài

Thật khó để kết luận đâu là nền tảng tốt hơn giữa Angular và ReactJS vì cả 2 đều là những lựa chọn tốt dành cho dự án Web giúp xây dựng ứng dụng Frontend. Hy vọng những so sánh trong bài sẽ giúp bạn có cái nhìn cụ thể, chi tiết hơn về 2 công nghệ này và đưa được ra quyết định lựa chọn cho dự án sắp tới của mình. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev

Check list những thứ cần phải học để trở thành Software Architect

Software Architect

Bài viết được sự cho phép bởi tác giả Vũ Thành Nam

Đây là bài viết tiếp tục chặng đường trở thành SA của mình mà mình có đề cập đến trong bài viết “Software Architect – Con đường chẳng hề dễ dàng“. Đúng là một con đường chẳng hề dễ dàng. Bài viết này mình đã tổng hợp được những kỹ năng cụ thể cần phải đạt được khi dấn thân vào con đường đầy chông gai này, có thể sau này mình có vững tâm rẽ theo con đường này hay không thì bài viết này mình cũng xin chia sẻ những kỹ năng này tại đây để các bạn cũng có thể nắm được như mình tại thời điểm hiện tại.

Software Architect

Cùng đi tiếp nghiệp Architect sẽ gồm 3 level cơ bản sau:

  • Application Level: Đây là level thấp nhất, nó tập trung vào một ứng dụng riêng lẻ, thiết kế kiến trúc chi tiết nhưng ở mức thấp, sẽ phải làm việc chủ yếu với team dev của bạn.
  • Solution Level: Đây là tầng ở giữa của Architecture, nó sẽ phải tập trung vào ứng dụng cùng với những nghiệp vụ xung quanh, cao hơn Application level nhưng chỉ xoay quanh các giải pháp để xử lý nghiệp vụ. Ở mức độ này bạn sẽ phải làm việc với BA và các team dev lớn khác nữa mà không chỉ riêng team dev của bạn.
  • Enterprise Level: Đây là mức độ cao nhất của Architecture. Nó tập trung vào các giải pháp tối ưu nhất, các thiết kế hệ thống ở mức cao và trừu tượng hóa mà không nhất thiết phải chi tiết đến từng bước làm triển khai. Ở đây bạn sẽ làm trực tiếp với khách hàng và tổ chức dự án ở cấp cao.

Khi trải qua từng level bạn sẽ phải là cầu nối của các bên như: Business – Development, Development – Development,  Development – Management, Client – Team, 3rd Team – Internal Team.

Những công việc mà một SA cần phải làm như:

– Xác định và ra quyết định những công nghệ và nền tảng phát triển ứng dụng
– Đưa ra những quy định, tiêu chuẩn code, công cụ, quy trình review code hay các cách tiếp cận kiểm thử…
– Hỗ trợ làm yêu cầu khách hàng với BA
– Thiết kế hệ thống và đưa ra những giải pháp dựa trên yêu cầu khách hàng
– Viết tài liệu thiết kế hệ thống và tích hợp kiến trúc với các bên
– Review và kiểm tra lại kiến trúc thiết kế cũng như code base bên cạnh những patterns và coding standards trước khi thực hiện hóa
– Trao đổi với những SA khác về giải pháp cũng như các công nghệ xử lý
– Hướng dẫn và training cho các lập trình viên khác
– Khác thảo thiết kế từ high level tới detail design
– …

1. Design

Một bản vẽ thiết kế tốt sẽ là tiền đề quan trọng của cả một hệ thống sản phẩm. Nó cần sự tổng hợp của rất nhiều kỹ năng mới có thể có được kinh nghiệm thiết kế.

– Hiểu biết về design patterns. Các mẫu mô hình thiết kế phải nắm chắc được cùng với những ưu và nhược điểm từng mẫu thiết kế là tiền đề quyết định cho sự lựa chọn.

– Nắm được những best practice hay những anti pattern nhằm lường trước được những vấn đề phía sau trong quá trình thực hiện hóa

– Biết được cách đo lường chất lượng sản phẩm. SA không phải chỉ thiết kế xong kiến trúc là hết trách nhiệm họ còn phải đưa ra những hướng dẫn hay quy chuẩn để được áp dụng vào dự án, những cách thức đo lường thế nào là đạt chất lượng code hay những tính chất nằm ngoài yêu cầu như khả năng bảo trì, thay thế, thích ứng, bảo mật, hiệu năng, kiểm thử, mở rộng… Còn vô vàn thứ xung quanh một sản phẩm mà bạn cần phải có những tiêu chuẩn đo lường thế nào là đạt

– Cố gắng hiểu được thật kỹ càng những công nghệ nền tảng mà mình áp dụng cho dự án, điểm mạnh điểm yếu, những giải pháp khắc phục và bù đắp lại những khuyết điểm của công nghệ. Nó sẽ ảnh hưởng đến quá trình thiết kế và thi công của một sản phẩm nếu đã được triển khai

– Phân tích và hiểu rõ những patterns cho từng nền tảng được áp dụng, trả lời những câu hỏi tại sao dùng nó và một vài mẫu thiết kế dự phòng khi trường hợp xấu xảy ra.

– Phân tích được yêu cầu người dùng để có thể lựa chọn và phác thảo bản thiết kế một cách phù hợp nhất cho người dùng.

2. Quyết định

Một điều kiện kiên quyết là SA là người ra quyết định, người chốt kèo và cũng là người chịu trách nhiệm cho quyết định của mình trong một sản phẩm. Level càng cao thì trách nhiệm càng cao.

– Khả năng đánh giá được cái gì là quan trọng. Có thể tại thời điểm ngày sẽ có những giải pháp phù hợp trong ngắn hạn, trung hạn, dài hạn. Nhưng phải đánh giá được thời điểm cũng như cái gì là quan trọng nhất trong thời điểm đó để xử lý

– Ngoài khả năng đánh giá thì còn phải sắp xếp thứ tự quan trọng, mức độ ưu tiên để thực hiện. Có thể tại thời điểm đó team sẽ không thể xử lý được nhưng phải biết được sự ưu tiên của từng công việc cho team.

– Đánh giá năng lực của team cũng như bản thân. Đôi khi phải nắm được khả năng của đội ngũ phát triển còn định hướng và thay đổi chiến lược, có thể là đổi người hay là tuyển dụng sao cho phù hợp với công nghệ và dự án đang xây dựng

– Khả năng phân tích nhiều phương án khác nhau. Đối với một vấn đề phải luôn đặt ra những giải pháp hay những sự dự phòng, có những phân tích chặt chẽ những sự lựa chọn tốt xấu, phù hợp hay không thì mới có thể đưa ra quyết định chính xác.

3. Sự đơn giản hóa

Thực sự thì những vấn đề phức tạp sẽ thường được xử lý bởi những thứ đơn giản. Cố gắng làm sao biến những thứ phức tạp trở nên đơn giản hơn để có thể dễ dàng xử lý.

– Dung hòa những giải pháp. Khó có thể tìm được một giải pháp nào là hoàn hảo cả, đôi khi còn phải kết hợp nhiều phương án khác nhau để có thể giải quyết được vấn đề. Cần phải có sự cân bằng và chắt lọc những thế mạnh của từng phương án để có được một giải pháp tốt nhất có thể.

– Ném đá dò đường. Có thể nói đây là một kỹ thuật sử dụng khá nhiều khi chính những SA đó không thật sự chắc chắn về giải pháp của họ, họ sẽ phải thử từng bước một. mò mẫm và dò ra được phương án để giải quyết vấn đề trước mắt mà không làm ảnh hưởng đến tiến độ hay quá trình vận hành dự án

– Chia để trị. Đây cũng là một phương pháp hay dùng, khi một vấn đề quá phức tạp không thể xử lý. Khi này SA sẽ thường chia nhỏ chúng ra và đưa ra những giải pháp cho từng vấn đề một. Đơn giản hóa sự phức tạp thông qua một cách thức vô cùng truyền thống.

– Tái kiến trúc một cách dứt khoát. Một sản phẩm về mặt tổng thể có thể ổn nhưng khi bắt đầu một giải pháp phức tạp và cồng kềnh nếu không có giải pháp nào tốt hơn nó. Khi gặp vấn đề sau một quá trình kiển khai để đáp ứng những yêu cầu mới phát sinh thì bạn phải đưa ra một sự tái kiến trúc và đưa ra một giải pháp mới hoàn toàn. Khi này thì giải pháp mới phải được tiến hành một cách triệt để tuy nhiên vẫn phải cân nhắc về chi phí, thời gian, kiểm thử tính năng cũ… rồi mới thay thế dần cho đến khi thay thế hoàn toàn.

4. Code

Một người thiết kế hệ thống, SA cấp cao đi chăng nữa thì vẫn phải nắm được những anh em lập trình viên bên dưới đang và sẽ phải làm gì, triển khai nó như thế nào. Đừng vẽ một bản thiết kế mà không thể thực hiện hóa nó được. Có 2 trường hợp có thể xảy ra với những anh em cấp dưới: Họ không chấp nhận và không tin những giải pháp bạn đưa ra và họ không hiểu những gì bạn đưa ra. Vấn đề nảy sinh lúc này là bạn phải làm sao để họ phục và tin tưởng vào giải pháp của bạn. Những người sếp đi lên từng những nhân viên quèn sẽ hiểu được điều này. Họ trải qua và biết được những gì cần phải làm thì mới có được những kinh nghiệm mà thiết kế.

– POC mà mình có nhắc tới trong bài viết “POC là gì? Câu chuyện không chỉ riêng phát triển phần mềm” là một cách để bạn chứng minh giải pháp của mình.

– Đưa ra những nguồn dẫn hay những case study thuyết phục, có thể nó không đúng cho mọi trường hợp nhưng nó sẽ giải quyết được những vấn đề trước mắt. Code mẫu, tiếp cận trước và tham khảo những anh em dự án đã từng triển khai sẽ làm tiền đề cho những quyết định của sếp.

  Đâu là điểm khác biệt giữa Solution Architect và Software Architect?

  Top 5 câu hỏi phỏng vấn Software Architect hàng đầu

5. Document

Kiến trúc thiết kế luôn đi liền với tài liệu, nó thật sự rất quan trọng để quyết định xem giải pháp đó có khả thi và được triển khai hay không. Khi sản phẩm chưa được hình thành thì tài kiệu kiến trúc sẽ là những thái nghén quyết định thành bại của dự án. Sự lựa chọn các giải pháp cũng phải được đề cập trong các tài liệu liên quan.

– Clean code. Có thể bạn đã nghe ở đâu đó chính những dòng mã nguồn là những tài liệu đúng đắn nhất. Code tốt là phải dành cho người hiểu máy móc chỉ thực thi mà thôi.  Kiến trúc sao để tự bản thân những thứ mình vẽ ra ai cũng hiểu được là một điều hoàn hào nhất.

– Tự động hóa sinh những tài liệu nếu có thể. Một số công nghệ hay công cụ Apis có thể giúp bạn tự động tạo ra cho bạn những tài liệu Apis của hệ thống. Việc bạn tổng hợp và chỉnh sửa chúng sẽ giúp bạn tiết kiệm nhiều thời gian.

– Viết những gì cần thiết và đủ để có thể hiểu một cách cô đọng trước mắt và cập nhật dần dần. Thật sự khó khăn khi mới bắt đầu mà phải tổ chức tất cả mọi thứ. Để có thể triển khai nhanh và tối ưu thì bạn sẽ phải làm những gì cần thiết để thi công trước sau đó bổ sung dần sau.

– Học thêm những nền tảng công nghệ. Việc nắm được những thứ trong công nghệ bạn sử dụng để phát triển phác thảo những công nghệ đó cần một lượng kiến thức rất sâu. Để làm được vậy thì bạn phải học và tìm hiểu mỗi ngày.

Tham khảo việc làm Solution Architect hấp dẫn trên TopDev

6. Giao tiếp

Phần đầu mình có đề cập là SA là cầu nối của rất nhiều bên nên giao tiếp với họ là một kỹ năng cần thiết.

– Học cách làm sao để diễn đạt ý tưởng của mình cho người khác. Ý tưởng chỉ mãi là ý tưởng nếu chỉ nằm trong đầu bạn và không thể thoát ra ngoài và triển khai thực tế.

– Trao đổi với các nhóm lớn. Dừng biến mình thành ếch ngồi đáy giếng, và không ai có thể nắm chắc được tất cả mọi thứ. Trao đổi với các nhóm lớn hơn có thể giúp bạn có giải pháp và nhiều góc nhìn khác nhau cho một vấn đề.

– Xác định đúng đối tượng và level khi nói chuyện. Cách giao tiếp với mỗi role hay mỗi vị trí là khác nhau. Không phải vị trí nào cũng hiểu cùng một cách diễn đạt của bạn. Nên bạn phải xác định đúng đối tượng trước khi trao đổi vấn đề

– Giao tiếp thường xuyên. Có khi nào là khi thiết kế sau một thời gian thì sản phẩm đi một hướng hoàn toàn khác. Nên theo sát dự án và trao đổi gỡ bỏ những vấn đề trong quá trình thực thi một cách kịp thời.

– Linh hoạt khi đưa ra quyết định, có thể tại thời điểm nói chưa có giải pháp nhưng bạn sẽ suy nghĩ và đưa ra cách giải quyết sau. Điều này có những khi phải trao đổi với mọi người. Có những khi phải tìm cách trì hoãn thêm thời gian. Linh hoạt trong từng hoàn cảnh.

7. Estimate

Định lượng ước tính những vấn đề trong dự án, về tiến độ, chi phí, khả năng thực hiện, đội ngũ,…

– SA đôi khi phải biết những nguyên tắc hay cách thức vận hành của một quản lý dự án mặc dù không hẳn phải quản lý. Dù sao đi chăng nữa thì cũng là sếp, là cán bộ cấp cao, là người nắm quyền sinh quyền sát trong tay. Kỹ năng quản lý con người cũng cần phải biết

– Xác định đánh giá thời gian và chi phí kiến trúc mình đưa ra. Điều này không phải là dễ dàng gì, nó phụ thuộc vào rất nhiều yếu tố, nhưng SA vẫn phải hoạch định được sát nhất có thể cho team.

8. Balance

Cân bằng về mọi mặt.

– Chất lượng và giá cả, chi phí, ngân sách. Không thể nào ôm hết mọi thứ chỉnh chu mọi mặt trong khi giá hữu nghị và thời gian quá ngắn được. Ai cũng vẫn biết không 1 bà bầu sinh con trong vòng 9 tháng nhưng khó có thể bắt 9 người làm sinh trong vòng 1 tháng được. Cân nhắc.

– Giải quyết mâu thuẫn trong mục tiêu. Mục tiên ngăn hạn, dài hạn sẽ có thể bị thay đổi và đôi khi SA phải đánh đổi, và trả một chi phí không hề nhỏ khi đưa ra một giải pháp cái nhìn dài hạn cho khách hàng. Có những giải pháp biết là tốt hơn trong dài hạn nhưng trước mắt thì khó có thể thực thi. Sự đánh đổi và quyết định là ở SA lúc này.

– Xung đột trong quản lý. Việc là cầu nối giữa nhiều bên khiến nhiều khi SA bị kẹt ở giữa nhiều bên. Họ hay phải cân bằng lợi ích giữa các bên và có những giải pháp hợp tình hợp lý, đối nội, đối ngoại tốt nữa.

9. Phát triển team

SA đâu chỉ là đưa ra giải pháp dự án đâu. Họ còn có những sứ mệnh riêng để build up lên một đội ngũ phát triển lớn mạnh hơn mỗi ngày.

– Hướng dẫn và định hướng cho đội ngũ bên dưới hiểu được những bước đi trong tương lai. Có thể thời gian đầu họ sẽ phải là người chỉ dẫn chi li tiểu tiết từng chút một nhưng dần dần khi đội ngũ cứng cáp thì họ có thể nhẹ nhàng hơn.

– Tạo ra những buổi chia sẻ kiến thức cho nhau, brainstorming, để có những giải pháp cho dự án. Mở rộng tư duy và hạ thấp cái tôi xuống để có thể phát triển hơn.

10. Quảng bá thương hiệu

Ngoài việc truyền động lực cho anh em trong team ra đôi khi SA phải có những niềm tin từ các bên khiến họ phục và tin tưởng giải pháp của mình.

– Trong một thời giai ngắn có thể thuyết phục được khách hàng hay team về giải pháp mình đưa ra khá khó khăn. Nhưng nếu đã có niềm tin và uy tín trước đó thì sẽ dễ dàng hơn với những lời nói của bản thân.

Trên đây là những ý kiến cá nhân đúc kết của bản thân sau khi đọc cuốn sách “Become A Better Software Architect“.  Do là ý hiểu của bản thân dựa trên những quan sát thực tế trong ngành công nghệ thông tin ở Việt Nam. Có thể nó sẽ khác so với nước ngoài hay mình hiểu sai ý tác giả. Bạn nào đã đọc rồi thì có thể bổ sung và đính chính giúp mình nếu mình hiểu sai nhé.

Bài viết gốc được đăng tải tại ntechdevelopers.com

Xem thêm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Test Report là gì? Hướng dẫn cách viết Test Report chuẩn cho Tester

Test Report là gì?

Trong quá trình triển khai phát triển một dự án phần mềm, kiểm thử là một công đoạn không thể thiếu giúp đảm bảo chất lượng của dự án. Với việc thực hiện rất nhiều test case với rất nhiều kết quả khác nhau thì việc đòi hỏi có một báo cáo kiểm thử thể hiện được toàn bộ kết quả liên quan là điều vô cùng cần thiết. Vậy Test Report là gì? và cách để một Tester có thể viết được một Test Report chuẩn; bài viết này chúng ta cùng nhau tìm hiểu nhé.

Test Report là gì?

Test Report hay báo cáo kiểm thử là một bản tóm tắt chứa các thông tin về mục đích, hoạt động và kết quả của quá trình kiểm thử diễn ra trong dự án. Mục đích của test report là giúp toàn bộ các thành viên trong team phát triển cùng các bộ phận liên quan đến dự án có thể nắm được tình trạng hiện tại và đánh giá được chất lượng sản phẩm phần mềm; từ đó có quyết định xem phần mềm, sản phẩm có thể được nghiệm thu, thực hiện bước triển khai tiếp theo hay chưa.

Test Report là gì

Test report cũng là một tài liệu để xác nhận về quy trình triển khai kiểm thử đã thực hiện trong dự án; nó đóng vai trò như một Evidence (bằng chứng) xác thực rằng sản phẩm đã được đánh giá bởi team kiểm thử; từ đó xem xét liệu hướng kiểm thử đã đúng và phù hợp chưa, còn thiếu trường hợp nào hay không.

Lợi ích của Test report bao gồm:

  • Là cơ sở giúp người quản lý đánh giá lại sản phẩm tại thời điểm hiện tại, tiến độ thực hiện nhanh hay chậm và quyết định xem có đủ điều kiện để đưa ra vận hành
  • Chứa thông tin tổng hợp thống kê về số lượng testcase đã thực hiện, số lượng manual test/ automation test thực tế đã triển khai cũng như chi phí cụ thể dành cho kiểm thử
  • Giúp team dự án và các bên liên quan nắm được tình hình phát triển của hệ thống; đồng thời là tài liệu hỗ trợ các bộ phận liên quan thực hiện các bước tiếp theo
  • Là tài liệu kiểm chứng về hiệu suất hoạt động thực tế của phần mềm, đóng vai trò là bằng chứng khi bàn giao sản phẩm dự án đến cho khách hàng

Thành phần cần có trong Test Report

Test report là một tài liệu ở dạng tóm tắt kết quả, vì vậy đòi hỏi nội dung cần thể hiện đầy đủ và chính xác các thông tin, trình bày số liệu dưới dạng các biểu đồ với thời gian cụ thể, ngoài ra tài liệu còn được thường xuyên cập nhật. Tùy vào tổ chức, dự án mà sẽ có những biểu mẫu (template) cho việc viết Test report khác nhau, nhưng các thành phần chính dưới đây vẫn cần đảm bảo có trong một báo cáo kiểm thử.

Thành phần cần có trong Test Report

1. Thông tin về dự án

Thông tin cơ bản về dự án, tên sản phẩm, cùng mô tả các thông tin liên quan cần thiết khác như thời gian dự án, thời gian kiểm thử, … 

2. Mục tiêu của kiểm thử (Test Objectives)

Mô tả mục tiêu hướng tới của lần kiểm thử này và sẽ cần thực hiện những loại test nào. Trong đó mỗi phần báo cáo sẽ chứa thông tin cho từng giai đoạn kiểm thử như kiểm thử hiệu năng (performance test), kiểm thử hệ thống (system test) hay kiểm thử đơn vị (unit test). 

3. Tóm tắt kết quả (Overall Summary)

Bao gồm thông tin tổng hợp toàn bộ kết quả các bài test đã thực hiện cùng với thông tin về sản phẩm vận hành trong bài test. Cụ thể phần kết quả cần thể hiện được:

  • Số lượng test case đã thực thi, loại test là manual hay automation
  • Tỷ lệ test case Pass/ Fail
  • Tỷ lệ kiểm thử hoàn thành theo kế hoạch
  • Tỷ lệ thất bại của sản phẩm sau kiểm thử
  • Các ghi chú, phản hồi được đưa ra từ các bộ phận có liên quan

3. Báo cáo về những thiếu sót (Defect Report)

Đây là phần quan trọng nhất của một Test report, cần nêu lên rõ những vấn đề, thiếu sót, lỗi mà phần mềm hiện tại đang gặp phải hay chính là những công việc cần ưu tiên làm để hoàn thiện sản phẩm ở giai đoạn tiếp theo. Việc đánh giá mức độ nghiêm trọng đi kèm với những đề xuất và phương án ưu tiên giải quyết cũng sẽ được báo cáo tổng hợp lại trong phần này.

  Test case là gì? Cách viết Test case hiệu quả

  Test plan là gì? 4 bước cần thiết để thực hiện test plan?

Hướng dẫn cách viết Test Report

Test Report là tài liệu được nhiều phòng ban, đội nhóm sử dụng bao gồm cả quản lý, team phát triển và cả khách hàng, vì vậy việc viết báo cáo kiểm thử cần đảm bảo sự rõ ràng, dễ hiểu; các thông tin được trình bày ngắn gọn nhưng đủ để các bộ phận liên quan dễ dàng nắm được công việc tiếp theo cần làm.

Có nhiều template (mẫu) dùng cho việc viết Test Report; team dự án sẽ lựa chọn một mẫu thống nhất từ trước, có thể theo tổ chức hoặc theo yêu cầu của khách hàng để giúp việc theo dõi trở nên thuận tiện.

Hướng dẫn cách viết Test Report

Hiện nay có nhiều công cụ tích hợp được sử dụng để lấy số liệu, xuất các báo cáo mẫu dành cho Test Report, thông thường các công cụ quản lý tasks của dự án cũng được trang bị tính năng này. Ví dụ nếu sử dụng Jira làm công cụ quản lý dự án, bạn có thể lựa chọn một số loại báo cáo dưới đây cho mục đích viết Test Report:

  • Requirements Coverage Reports: Báo cáo phạm vi bao phủ
  • Traceability Report: Báo cáo truy xuất nguồn gốc
  • Test Execution Progress Report: Báo cáo tiến độ thực hiện kiểm thử
  • Test Progress Reports: Báo cáo tiến độ thực hiện

Khám phá việc làm Tester lương cao trên TopDev

Sử dụng các báo cáo xuất ra từ công cụ với hình ảnh trực quan từ các biểu đồ số liệu sẽ giúp Test Report của bạn trở nên rõ ràng, ngắn gọn và mang tính thuyết phục cao hơn. Ngoài ra có một số kinh nghiệm được chia sẻ khi viết báo cáo mà bạn nên tham khảo như sau:

  • Hiểu rõ yêu cầu của dự án và phạm vi kiểm thử trước khi viết báo cáo
  • Sử dụng ngôn ngữ chuyên môn, thuật ngữ kỹ thuật một cách thống nhất và rõ ràng, đảm bảo người đọc có thể hiểu được
  • Tổ chức bố cục báo cáo một cách hợp lý, mang đến sự thuận tiện cho người đọc khi cần tìm kiếm thông tin
  • Tập trung vào kết quả và đánh giá, không cần trình bày chi tiết các nội dung đã được thể hiện trong test case
  • Luôn nhớ kiểm tra lại cẩn thận trước khi gửi; đánh phiên bản đi cùng ngày tháng cụ thể cho báo cáo

Kết bài

Test Report là một tài liệu quan trọng trong dự án và việc viết báo cáo kiểm thử cũng là một kỹ năng quan trọng của mọi Tester. Qua bài viết này, chắc hẳn các bạn đã có câu trả lời cho câu hỏi Test Report là gì cũng như tầm quan trọng của nó trong dự án phát triển phần mềm. Hy vọng với những hướng dẫn và kinh nghiệm được chia sẻ trong bài sẽ giúp các bạn Tester mới vào nghề có thể viết được Test Report một cách chuyên nghiệp và hiệu quả hơn. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Xem ngay tin đăng tuyển lập trình viên đãi ngộ tốt trên TopDev

Một số phương pháp bảo mật hiệu quả dành cho webhook

Một số phương pháp bảo mật hiệu quả dành cho webhook

Bài viết được sự cho phép của tác giả Tống Xuân Hoài

Vấn đề

Mấy hôm vừa rồi tôi có công việc nghiên cứu tích hợp App Store Server Notifications là một dạng webhook để nhận thông báo từ Apple về máy chủ của mình. Trong quá trình tích hợp có một vài chi tiết thú vị mà tôi nghĩ nếu kể ra ở đây hẳn sẽ giúp ích được cho bạn đọc. Nếu chưa biết webhook là gì, bạn đọc có thể tham khảo bài viết Webhook là gì? Tổng hợp các kiến thức cơ bản về Webhook.

Chắc hẳn chúng ta ai cũng biết việc mua hàng trong ứng dụng. Khi mua thành công một đơn hàng, Apple sẽ gửi thông báo về máy chủ của chúng ta, trong thông báo có chứa nhiều thông tin về đơn hàng như tên, ngày mua, trạng thái… từ đó làm căn cứ để tiếp tục xử lý đơn hàng của khách. Bởi vì hành động mua hàng trong ứng dụng thành công chỉ khi người dùng mua thành công, mà để biết mua thành công hay không thì chỉ có Apple mới biết vì họ xử lý quá trình cộng trừ tiền cho chúng ta. Sau đó là một thông báo gửi đến một API (webhook) mà chúng ta thiết lập từ trước, cho biết kết quả của quá trình thanh toán thành công hay thất bại.

Trong quá trình làm, tôi phát hiện ra Apple có cách để bảo vệ dữ liệu mà họ gửi sang máy chủ của mình một cách rất “uy tín”, nó tiêu tốn một “chút” thời gian tìm hiểu của tôi và do đó khơi mào cho tôi tổng hợp lại một số phương pháp bảo mật của webhook lâu nay tích lũy được.

Lưu ý rằng vẫn có rất nhiều phương pháp khác không xuất hiện ở đây. Tôi chỉ đơn giản là thống kê lại một số cách thường gặp hoặc đã biết. Vì thế nếu bạn đọc còn biết cách nào nữa thì vui lòng để lại thông tin trong phần bình luận dưới bài viết nhé.

Một số phương pháp bảo mật webhook

Khi cung cấp một đầu API (endpoint) để nhận dữ liệu, nếu chẳng may kẻ tấn công hoặc những người tò mò biết được, kẻ gian sẽ cố tình khai thác bằng cách gửi nhiều thông tin sai lệch đến máy chủ, từ đó khiến cho nhiều rủi ro có thể xảy ra. Thế nên cách hữu hiệu nhất vẫn là giữ bí mật API, đồng thời luôn luôn xác thực dữ liệu nhận được có phải xuất phát từ bên dịch vụ mà chúng ta tích hợp.

Lấy ví dụ bạn cung cấp một endpoint /webhook/serviceA để nhận dữ liệu từ serviceA thì bằng cách nào đó phải chắc chắn dữ liệu vừa nhận được là từ chính serviceA gửi.

HTTPs

Điều kiện tiên quyết đầu tiên là phải yêu cầu https, tức là serviceA sẽ từ chối gửi dữ liệu nếu endpoint không hỗ trợ https.

Ngày nay https đang dần thay thế http truyền thống vì độ tin cậy và khả năng bảo mật cao hơn. Dữ liệu được mã hóa trên đường truyền và hạn chế các cuộc tấn công Man-in-the-middle.

Vì lẽ đó cho nên https trở thành yêu cầu bắt buộc để truyền dữ liệu thông qua các cuộc gọi API – vốn là cơ chế gửi/nhận dữ liệu của webhook.

Trust IPs

Cách tốt nhất để biết được serviceA gửi thì chắc chắn phải gửi từ đúng địa chỉ IP của nó. serviceA có thể phải cung cấp một danh sách các địa chỉ IP thuộc sở hữu của nó, những địa chỉ đó sẽ được dùng để thực hiện truy vấn đến endpoint của chúng ta. Việc cần làm là xác thực xem địa chỉ IP nhận được có nằm trong danh sách mà chúng ta tin tưởng, nếu không thì khả năng rất cao chúng ta đang bị tấn công.

Phương pháp này nhanh mà hiệu quả, nhưng phải được chính serviceA hỗ trợ bởi vì họ phải cung cấp tất cả địa chỉ IP. Tuy nhiên, trong thời đại công nghệ phân tán và hệ thống thông tin chằng chịt như hiện nay, địa chỉ IP có thể được sửa đổi liên tục cho nên việc triển khai có phần phức tạp và mang lại rủi ro trong quá trình vận hành.

Hãy tưởng tượng một ngày đẹp trời, họ (serviceA) thêm một địa chỉ IP mới vào danh sách mà hệ thống của chúng ta chưa kịp cập nhật thì điều gì sẽ xảy ra?

Mã bí mật

“Hãy tự chọn một mã bí mật, nhập vào trang quản lý của chúng tôi và chúng tôi sẽ gửi nó kèm theo dữ liệu về endpoint của bạn” – đây chính là châm ngôn của phương pháp này.

Vì mã bí mật chỉ có hai bên biết cho nên việc không cung cấp đúng mã bí mật có thể coi là một cuộc tấn công từ bên khác nhằm vào. Mã bí mật thường sẽ được gửi lại thông qua tiêu hề (headers) http. Việc của chúng ta là cần lấy ra và so sánh nó xem có khớp với nhau.

Phương pháp này dễ triển khai và có độ tin cậy nhất định, tuy nhiên nếu chẳng may bị lộ mã bí mật thì…ba chấm. Vì mã này thường nằm dưới dạng văn bản, không mã hóa và phải được ghi lại ở đâu đó cho nên độ tin cậy cũng vì thế mà giảm xuống.

Nằm trong mục này thì Basic Auth cũng là một dạng mã bí mật. Cung cấp username và password cho serviceA biết để xác thực trước khi thực hiện cuộc gọi đến endpoint.

  Tấn công các cụm Kubernetes qua lỗi API Kubelet misconfigure

  DevSecOps – Tương lai của an ninh bảo mật phần mềm

Chữ ký số

Các phương phát trên vẫn có một điểm yếu đó là dữ liệu chưa được mã hóa đúng cách, hay nói cách khác là chưa có cách nào để biết liệu dữ liệu được gửi đến máy chủ của chúng ta có đảm bảo tính toàn vẹn? Vì quá trình truyền dữ liệu không chỉ đơn giản là giữa serviceA và endpint, mà nó còn đi qua rất nhiều điểm khác trước khi đến đích. Giả sử dữ liệu bị sửa đổi ở đâu đó thì phải làm như thế nào để phát hiện?

Nếu đã làm việc với JSON Web Tokens (jwt), bạn đọc sẽ biết cơ chế bảo vệ dữ tính toàn vẹn của dữ liệu bằng cách mã hóa bất đối xứng. Với cấu trúc 3 phần được mã hóa bằng base64 của jwt, phần đầu chứa các chỉ dẫn về thuật toán sử dụng mã hóa, phần thân chứa dữ liệu và phần cuối cùng là một chuỗi được tạo ra bằng cách mã hóa bất đối xứng dữ liệu với khóa bí mật. Để xác thực, chúng ta chỉ cần sử dụng khóa công khai để xem dữ liệu có bị sửa đổi sau khi ký (sign) hay không, vì bất cứ thay đổi nào dù là nhỏ nhất trong phần thân cũng khiến cho chuỗi ký bị sai lệch.

Phương pháp này có phần phức tạp hơn nhưng lại cho độ tin cậy cao hơn hẳn. Khóa bí mật cần được giữ an toàn tuyệt đối để ký dữ liệu trước khi gửi đi, khóa bí mật cũng được mã hóa do đó nguy cơ tấn công thấp hơn so với văn bản thông thường.

Bảo mật webhook của Apple

Về cơ bản Apple cũng lựa chọn cách thức mã hóa bất đối xứng để bảo vệ tính toàn vẹn của dữ liệu mà họ gửi đến, nhưng với độ phức tạp cao hơn một chút.

Đầu tiên dữ liệu được mã hóa hết dưới dạng base64 để tăng độ “nguy hiểm”, mã hóa này góp một phần nào đó cho quá trình nhìn trộm nhanh và yêu cầu giải mã để biết được nội dung thật là gì.

Apple ký trên một số đối tượng dữ liệu, theo dạng JWS vì thế trước khi sử dụng cần xác định tính toàn vẹn của dữ liệu. Cách làm có thể tóm lại trong 2 bước:

  • Lấy public key trong headers của chuỗi mã hóa
  • Sử dụng public key đó để xác thực chữ ký

Vì vậy, khi giải mã headers, bạn sẽ thấy thuật toán chữ ký, kèm theo một đối tượng x5c giống như:

{
  "alg": "ES256",  
  "x5c": [
    "MIIEMDCCA...",  
    "MIIDFjCCA...",  
    "MIICQzCCA..."
  ]
}

Khi đó khóa công khai để xác nhận dữ liệu là x5c[0]. Nhưng vậy thì x5c[1] và x5c[2] có ý nghĩa gì? Chúng ta biết thuật toán mã hóa bất đối xứng dựa trên ES256 rất khó để bẻ khóa, vì thế chỉ cần sử dụng khóa công khai để xác nhận tính toàn voẹn của dữ liệu gần như là tuyệt đối, bởi vì chỉ có Apple mới biết được khóa bí mật.

Sau một lúc tìm hiểu, thì ra hai khóa còn lại dùng để xác thực khóa công khai. Đúng vậy, tức là x5c[1] và x5c[2] được dùng để xác thực x5c[0] có đúng là của Apple hay không.

Như vậy, x5c[2] là chứng chỉ dịch vụ gốc của Apple (Certificate Authority (CA)) đã được tin cậy, trong khi x5c[1] là chứng chỉ trung gian và x5c[0] là chứng chỉ dùng để xác minh chữ ký mà Apple đã ký cho dữ liệu.

CA tin cậy được phân phối thông qua hệ điều hành, nghĩa là máy tính khi xuất xưởng đã được cài đặt sẵn một số chứng chỉ CA đáng tin cậy trên thế giới, trong đó có CA của Apple. Một số công cụ như openssl có thể xác định được liệu một CA có đáng tin hay là không. Vì thế luồng xác thực dữ liệu lúc này là sử dụng công cụ để xác minh CA (x5c[2]) -> xác minh chứng chỉ trung gian (x5c[1]) -> xác minh khóa công khai (x5c[0]). Nếu tất cả đều hợp lệ thì chúng ta có thể tin chắc rằng dữ liệu được gửi từ Apple.

Bài viết gốc được đăng tải tại 2coffee.dev

Xem thêm:

Phương pháp đọc sách kỹ thuật cho lập trình viên

Phương pháp đọc sách kỹ thuật cho lập trình viên

Bài viết được sự cho phép bởi tác giả Vũ Thành Nam

Sau bài viết “5 cách để phát triển tư duy logic trong lập trình“, có bạn hỏi mình về vấn đề đọc sách kỹ thuật thế nào sao cho hiệu quả.

Ở bài viết này mình xin phép chia sẻ ít những kinh nghiệm cá nhân về phương pháp đọc sách mà mình thấy khá hiệu quả. Hy vọng bài viết có thể giúp ích cho anh em lập trình viên.

Bắt đầu nhé!

Phương pháp đọc sách kỹ thuật cho lập trình viên

Lựa chọn kỹ sách trước khi đọc

Hãy dành thời gian để đọc review, lắng nghe trải nghiệm của những người đã viết ra cuốn sách đó, nếu không có liên hệ gì được với tác giả của cuốn sách bạn hãy lên các diễn đàn, hội nhóm review sách về công nghệ cùng có nhiều gợi ý dành cho bạn đó. Việc làm này sẽ giúp bạn nắm được nội dung khái quát của sách và phần nào xác định được nó có phù hợp với mình hay không.

Một cách khác cũng hay được sử dụng đó là đọc mục lục của sách hoặc đọc tóm tắt nội dung. Việc làm này sẽ giúp bạn biết qua được cấu trúc của sách và đồng thời phát triển tư duy cho bạn với những từ khóa, lý giải cho từng chương mục. Việc suy nghĩ và đặt ra một số câu hỏi cho một số chương trong mục lục sẽ khiến mình cảm thấy thích thú hơn và mong chờ đến lúc đọc chương đó.

Mình cũng đã đề cập đến vấn đề đọc mục lục trước để phát triển cách học ở trong bài viết “Cách mà tôi học một công nghệ mới“, bạn có thể đọc lại nhé!

Sau khi đã có một khái niệm chung về nội dung chính của sách, bạn hãy tự trả lời 3 câu hỏi sau:

– Vì sao bạn lại muốn đọc cuốn sách này?
– Bạn muốn phát triển kỹ năng gì được gì từ cuốn sách này?
– Đọc xong cuốn sách này thì bạn sẽ làm gì tiếp theo với những kiến thức bạn đã học?

Đọc chủ động

Hãy bắt đầu tập thói quen đọc chủ động. Luôn cầm sẵn một chiếc bút để có thể vừa đọc, vừa highlight. Đọc sách kỹ thuật mục đích là nghiên cứu và tìm hiểu kiến thức mới. Mức độ học thuật trong sách rất cao. Vậy nên hãy cố gắng ghi chú lại những gì bạn đã đọc, đã học được ở bước tiếp theo. Và để ghi chú được hiệu quả thì đọc đến đâu hãy cố gắng đánh dấu lại hoặc ghi nó luôn ngay tức thì nhé!

Bạn cũng có thể sử dụng một số kí hiệu riêng biệt cho những đoạn có nội dung khác nhau. Ví dụ, bạn có thể ký hiệu hình ngôi sao cho đoạn có nội dung đặc biệt cần ghi nhớ, ký hiệu dấu hỏi cho đoạn nào bạn cảm thấy khó hiểu hoặc muốn phản biện lại tác giả.

Gạch chân, ghi chú trên sách sẽ giúp bạn theo dõi cuốn sách một cách tập trung hơn. Hơn nữa, việc đọc chủ động còn giúp bạn kết nối với cuốn sách, đồng thời giao tiếp với tác giả thông qua những bình luận, những suy nghĩ được note lại trên trang sách.

Lựa chọn môi trường và thời gian đọc

Bạn có thể đọc sách ở đâu cũng được, nhưng với mình do đây được coi là như mà tính chất nghiên cứu, học tập thì nên để việc nào ra việc đó. Để tập trung đọc sách kỹ thuật theo hình thức nghiên cứu thì nên dành thời gian cho nó như thời gian làm việc, ngồi vào bàn làm việc như khi bạn đang đi làm hay đi học trên trường vậy.

Có thể có những thể loại sách bạn đọc mang tính chất giải trí thư giãn như tiểu thuyết, truyện, tản văn,… bạn sẽ thường đọc nó vào thời gian rảnh, trước khi đi ngủ hay thường ghé các quán cafe sách để đắm chìm vào trong việc đọc.

Nhưng đối với những cuốn sách khô khan như sách kỹ thuật lập trình này thì dường như những thời điểm đó sẽ không phù hợp. Nó khiến bạn mau chán và nhanh bỏ cuộc nếu cứ đọc theo cách thông thường.

Bên cạnh đó, môi trường đọc sách không cần phải yên tĩnh tuyệt đối, nhưng càng ít vật chuyển động thì càng tốt. Một thức uống yêu thích hay không gian với nhiệt độ phù hợp cũng sẽ mang đến cho bạn sự hứng thú đối với việc đọc sách hơn.

Thời gian lý tưởng cho một phiên đọc là 45 đến 60 phút. Sau khoảng thời gian này, bạn nên đứng dậy đi lại một vòng hoặc vận động một cách nhẹ nhàng để thư thả đầu óc.

Lựa chọn môi trường và thời gian đọc

  Dân IT đọc sách như thế nào đây?

  32 cuốn sách học lập trình bạn nhất định phải đọc

Dành thời gian suy nghĩ và tìm hiểu những vấn đề xung quanh

Sách kỹ thuật không đơn thuần là để cũng cấp thông tin, nó chứa một hàm lượng kiến thức rất cao. Vậy nên hãy dành thời gian suy nghĩ về những vấn đề đã đọc được. Mình thường đọc sách cùng với việc tra cứu thông tin đang đọc trên mạng để tiện ghi chú lại luôn. Việc kết hợp này cho mình nhiều góc nhìn khác nữa dựa trên cấu trúc của một cuốn sách mình đang đọc.

Bên cạnh đó, một số cuốn sách thường bắt bạn phải thực hành ngay cuối chương. Đối với lập trình thì cấu trúc đoạn code thực hành là rất phổ biến trong sách nên việc đọc không là chưa đủ, hãy thử suy nghĩ và làm các bài tập thực hành cuối chương ngay khi bạn đọc nhé, điều này sẽ giúp bạn hiểu và nhớ lâu hơn.

Ngoài ra ý nghĩa của một cuốn sách không chỉ nằm trên những con chữ trên trang sách, mà nó còn là những ẩn ý mà tác giả muốn gửi gắm đằng sau những trang sách đó. Ví dụ có những vấn đề được sách ghi lại những phương pháp giải quyết vấn đề mà tác giả đã từng gặp phải, đôi khi nó sẽ giúp bạn tiết kiệm được rất nhiều thời gian khi gặp vấn đề tương tự.

Vậy nên hãy dành thời gian để ngẫm nghĩ về những gì bạn đã đọc. Suy cho cùng thì đọc sách để học hỏi, để khám phá thì phải hiểu và khám phá ra được cả những bài học sâu xa, chứ không đơn thuần là những trang sách nhìn được, sờ được.

Phương pháp đọc sách kỹ thuật cho lập trình viên

Chia sẻ trong và sau khi đọc

Việc viết review và chia sẻ cuốn sách với người khác chính là cách ghi nhớ hiệu quả nhất. Nếu bạn là một người yêu thích mạng xã hội, việc share cảm nghĩ của mình lên Facebook hay trang blog cá nhân sẽ giúp bạn giải tỏa cảm xúc, cung cấp thông tin về cảm nhận cá nhân cho những người đọc khác.

Mình thường viết review sách kỹ thuật trên fanpage của mình sau khi mình đọc. Đôi khi nó chỉ là những đoạn review ngắn thể hiện quan điểm tại thời điểm đọc đó. Rồi lần thứ 2 bạn đọc, hãy đọc lại cả review, nhiều khi bạn tự mình nhận ra rằng cách hiểu trước đó của mình có phần chưa chính xác hoàn toàn thì sao.

Phương pháp đọc sách kỹ thuật cho lập trình viên

Đây cũng là phương pháp vô cùng hiệu quả để bạn lưu trữ nội dung cuốn sách một cách tóm tắt nhất theo ý hiểu của bạn. Qua đó, bạn sẽ thấy dễ dàng hơn trong việc tìm đọc lại.

Trên đây là những phương pháp đọc sách kỹ thuật cho dân lập trình mà mình nhận thấy nó hiệu quả. Anh em có thêm ý kiến gì thì để lại dưới phần bình luận nhé.

Chúc anh em đọc sách vui vẻ và lượm được nhiều thứ hay ho!

Bài viết gốc được đăng tải tại ntechdevelopers.com

Có thể bạn quan tâm:

Xem thêm các việc làm ngành CNTT hấp dẫn trên TopDev

Bí quyết làm chủ một ngôn ngữ lập trình mới dễ dàng

học ngôn ngữ lập trình mới

Bài viết được sự cho phép bởi tác giả Sơn Dương

Có nhiều người hỏi mình rằng “Để làm chủ một ngôn ngữ lập trình thì làm thế nào? Làm sao để học tất cả nhanh nhất?”

Trong quá trình học tập và làm việc, mình đã tìm ra một kinh nghiệm để học các ngôn ngữ mới. Mô hình này sẽ xuyên suốt từ khi bắt đầu cho đến khi trở nên thành thạo ngôn ngữ đó.

Điểm mấu chốt ở đây chính là: cách bạn khái niệm hóa (conceptualization) một vấn đề.

Mình hy vọng qua bài viết này sẽ giúp các bạn thay đổi tư duy và áp dụng hiệu quả vào học một ngôn ngữ lập trình mới.

Khái niệm hóa là cách chúng ta định nghĩa, tổng quát hóa một vấn đề hoặc nhiều vấn đề. Từ đó, chúng ta có thể hình dung và có cái nhìn toàn diện hơn”.

Trong bài viết này, mình sẽ chỉ đề cập các khái niệm tổng quan của ngôn ngữ lập trình. Còn chi tiết hơn về kỹ thuật của từng ngôn ngữ, các bạn có thể tham khảo các bài viết hướng dẫn học lập trình của mình nhé.

ngôn ngữ lập trình

Ngôn ngữ lập trình là gì?

Trước khi bàn tới các khái niệm to tát và xa xôi, mình sẽ quay lại khái niệm cơ bản nhất.

Vậy ngôn ngữ lập trình là gì?

Đúng như tên gọi của nó, ngôn ngữ là phương tiện để giao tiếp giữa hai thực thể. Nếu là giao tiếp giữa con người với con người thì gọi là ngôn ngữ giao tiếp con người. Còn ngôn ngữ để giao tiếp giữa con người và máy tính. Hay nói chính xác hơn là phương tiện để con người có thể truyền tải ý muốn cho máy tính hiểu và thực hiện.

Nó cũng trải qua quá trình phát triển từ rất lâu rồi. Từ ngôn ngữ máy đơn giản, đến ngôn ngữ bậc cao (Java, C#, PHP…).

Các ngôn ngữ lập trình

các ngôn ngữ lập trình

Ngày nay, có rất nhiều ngôn ngữ lập trình ra đời. Mỗi ngôn ngữ lập trình lại có thế mạnh riêng của nó.

Chắc hẳn bạn đã nghe đến Java, PHP, Javascript, C#… Nhưng cũng có những ngôn ngữ mà mình tin chắc bạn chưa bao giờ nghe tới: lolcode, Glass, Brainfuck…

Tuy nhiên, để các bạn đỡ lạc lối trên con đường học lập trình và lựa chọn cho sự nghiệp coder sau này. Mình sẽ liệt kê 5 ngôn ngữ lập trình phổ biến và nên học nhất:

Để bắt đầu một ngôn ngữ lập trình mới? Hãy bắt đầu với Java

Giống như hầu hết những người phát triển phần mềm đã học lập trình tại các trường học vào những năm 2000.

Phương pháp lập trình đầu tiên mà bạn được tiếp xúc là lập trình hướng đối tượng (OOP). Với ngôn ngữ lập trình đầu tiên thường sử dụng là Java. (Tham khảo ngay bài viết lập trình hướng đối tượng Java)

Việc học ngôn ngữ Java là khá nực cười. Bây giờ nghĩ lại, mình vẫn thấy thực sự khâm phục bản thân vì đã cố gắng và không bỏ cuộc vào thời điểm đó.

Mình đã mất khoảng ba tháng để học Java từ sơ cấp đến nâng cao, và cuốn sách mình học là “Deitel: Java how to program“.

Với cuốn sách này, tác giả Deitel đã viết một cách khá chi tiết, với chủ đề chính là các đối tượng (Object) hoặc sự kế thừa (Inheritance).

Tác giả xây dựng sơ đồ chi tiết để giải thích về đối tượng, về nguyên lý lập trình hướng đối tượng. Mình rất thích những ví dụ của tác giả như dùng hình tượng sư tử để giải thích về tính thừa kế (inherited class).

#Mình đã thu được điều gì từ việc học Java

học lập trình java cơ bản

Qua cuốn sách, Deitel muốn truyền đạt một điều rằng: Để học nhanh một ngôn ngữ, đừng có tìm hiểu chi tiết mọi thứ của ngôn ngữ đó. Thay vào đó, bạn cần phải biết cách khái quát những chi tiết.

Chẳng hạn, mình sử dụng chồng đĩa để giải thích cấu trúc dữ liệu ngăn xếp (stack).

Khái niệm tương tự như vậy được sử dụng để triển khai các stack-frame khi thực thi chương trình. Và tất nhiên back-stack trong Android cũng tương tự.

Ý tưởng chung là như nhau, cứ back-stack thì là vào sau ra trước (Last in – First out). Do đó nên hiểu khái niệm trước khi tìm hiểu chi tiết về cách thực hiện.

  Lập trình Web nên học ngôn ngữ nào là phù hợp?

  Người mới bắt đầu nên học ngôn ngữ lập trình nào?

Để làm chủ một ngôn ngữ lập trình, hãy thử áp dụng “khái niệm hóa”

Sau khi khái niệm hóa các thứ trong suy nghĩ, điều tiếp theo bạn làm là áp dụng khái niệm này vào việc học.

Bài viết này của mình chính là khái niệm hóa các ngôn ngữ.

Đầu tiên, chúng ta chia ngôn ngữ thành các thành phần cơ bản nhỏ hơn. Thành phần đầu tiên là câu (sentence). “Câu” được khái niệm hóa là khối xây dựng của tất cả các ngôn ngữ, cả ngôn ngữ nói/viết và ngôn ngữ lập trình.

Nếu bạn có thể xâu chuỗi vài câu lại với nhau thành một đoạn văn có nghĩa. Điều đó có nghĩa bạn đã thành thạo trong ngôn ngữ nói/viết.

Quy tắc này cũng được áp dụng cho các ngôn ngữ lập trình. Nếu bạn có thể xâu chuỗi vài dòng mã lệnh với nhau để giải quyết một bài toán nào đó, thì bạn được coi là thông thạo, giỏi ngôn ngữ lập trình đó(đây là chỉ quan điểm của cá nhân mình thôi)

# Sử dụng 5 thành phần chính của câu

Với ngôn ngữ nói/viết, một câu nói thường gồm các thành phần như:

  1. Danh từ (Noun) / Đại từ (Pronoun): Có thể là chủ thể hoặc đối tượng của câu.
  2. Động từ (Verb) – đóng vai trò là hành động đang được thực hiện.
  3. Cụm từ (Phrases) / Biểu thức (Expression): Đóng vai trò như các phần của một câu (cũng là các phần của một dòng mã lệnh).
  4. Cú pháp (Syntax) / Ngữ nghĩa (Semantics): Đóng vai trò như cấu trúc và quy ước để diễn đạt các câu (cũng như các cấu trúc để viết các dòng mã lệnh).
  5. Đặc tả ngôn ngữ (Language Specifics): Các đặc trưng đối với ngôn ngữ đó.

Đây là 5 thành phần của một câu trong ngôn ngữ nói/viết thông thường nhưng nếu hiểu kĩ và áp dụng nó vào lập trình thì bạn sẽ thấy có nhiều nét tương đồng.

Dưới đây là 5 rào cản mà mình đã vượt qua để đi từ cơ bản đến nâng cao khi bắt đầu học một ngôn ngữ lập trình mới: (Trước đó bạn có thể tham khảo top 5 ngôn ngữ lập trình Android mình đã viết ở bài trước)

1. Các danh từ / đại từ

Các danh từ và đại từ được sử dụng trong tiếng Anh để xác định các thực thể (chủ ngữ/đối tượng) của một câu.

Ngôn ngữ lập trình cũng mô tả các đối tượng tương tự như vậy. Trong các khối mã lệnh chúng ta gọi đó là định danh (Identifier). Ví dụ như tên biến, tên hằng số…

Rào cản đầu tiên là xem cách định nghĩa các định danh trong ngôn ngữ. Nghĩa là một định danh như thế nào là hợp lệ trong ngôn ngữ đó.

int myNumber = 12; // java
let myNumber = 12 // F#
my_number = 12 # python

2. Các động từ

Trong một câu, động từ dùng để chỉ hành động. Có thể hành động đó đã được thực hiện hoặc chưa được thực hiện.

Với ngôn ngữ lập trình, chúng ta cũng định nghĩa hàm hay phương thức tương tự như vậy.

Như vậy rào cản thứ hai để bạn giỏi ngôn ngữ lập trình là phải tìm hiểu cách định nghĩa các hàm bằng ngôn ngữ .

// Java
public void addNumbers() {
      //… add numbers
}

// JavaScript
function addNumbers() {
      //…add numbers
}

# Python
def add_numbers():
  #…addd numbers

3. Các cụm từ / biểu thức

Các cụm từ và biểu thức là một tập hợp con của một câu, nó có thể đứng như một đơn vị riêng của chính nó, mang đến cấu trúc cho câu.

Điều này đồng nghĩa với biểu thức (expression) hoặc câu lệnh (statement) trong ngôn ngữ lập trình, bao gồm cả luồng điều khiển (control-flow).

Như vậy rào cản thứ 3 mà bạn phải tìm hiểu là các câu lệnh hoặc biểu thức hợp lệ

Biểu thức và câu lệnh xác định luồng để thực hiện, gọi là luồng điều khiển (control-flow), bao gồm ternary-expression, if-else, for, while và do-while… Điều may mắn là khái niệm này giống nhau đối với tất cả các ngôn ngữ lập trình.

Tham khảo nhiều vị trí JavaScript Developer hấp dẫn trên TopDev

4. Cú pháp và ngữ nghĩa

Cú pháp cho biết cách thức để định nghĩa một câu đúng, được thực hiện bằng cách đánh giá chuỗi các ký tự hoặc chuỗi các từ.

Chẳng hạn như trong tiếng Anh, bạn có các thứ như dấu chấm câu và viết hoa. Ví dụ, xhfrst không phải là từ hợp lệ nhưng cherish là từ hợp lệ, ‘we you cherish‘ không phải là một câu hợp lệ, nhưng ‘we cherish you’ thì lại là câu hợp lệ.

Các ngôn ngữ lập trình cũng tương tự như vậy. Có những thứ làm cho một dòng mã lệnh trở nên không hợp lệ, ví dụ như thiếu dấu chấm phẩy hoặc sử dụng ký tự sai cho định danh.

Rào cản thứ 4 là đánh giá một dòng mã lệnh hợp lệ trong ngôn ngữ lập trình (tức là cú pháp của ngôn ngữ).

int myNumber$ = 12; // Java: syntax error - invalid token '$'
var myNumber$ = 12 // JavaScript: valid identifier
my_number = 12; # Python: syntax error - invalid token ';'

Đối với ngữ nghĩa, thì đó là sự liên quan đến ý nghĩa ngữ cảnh của câu hoặc tuyên bố được đề cập đến.

Sau khi đánh giá về cú pháp, cần đánh giá ý nghĩa trong ngữ cảnh. Chẳng hạn ‘The tree climbed the boy’ có một cấu trúc hợp lệ hoặc cú pháp chính xác, nhưng lại sai về ý nghĩa.

Lập trình cũng vậy, hầu hết các ngôn ngữ đều có các ngữ nghĩa riêng và việc học nó trở thành rào cản thứ tư đối với bạn.

// java 
int myNumber = 12;
myNumber = "12"; // error
# python
my_number = 12
my_number = "12" # valid expression

5. Các đặc tả ngôn ngữ giúp bạn giỏi ngôn ngữ lập trình

Các đặc tả ngôn ngữ là những thứ liên quan trực tiếp đến một ngôn ngữ cụ thể.

Chẳng hạn như: danh từ trong tiếng Pháp được chia giới tính. Nhưng điều này lại không có trong tiếng Anh.

Các ngôn ngữ lập trình cũng có những cái riêng gắn liền với nó. Bao gồm các lớp (Class), các kiểu dữ liệu (Data Type) và các cấu trúc dữ liệu (Data Structure)…

Chẳng hạn trong JavaScript có khái niệm về Prototype (nguyên mẫu). Nhưng trong Java thì không. Vì vậy, rào cản thứ năm là bạn phải hiểu và khái niệm hóa những đặc tả về ngôn ngữ.

Vì liên quan đến từng ngôn ngữ cụ thể nên có thể mất nhiều thời gian để khái niệm hóa hơn. Đặc biệt nếu là khái niệm hoàn toàn mới như ngôn ngữ F#.

Tạm kết

Việc trừu tượng hóa sẽ giúp bạn thấy được sự giống nhau giữa các thể hiện khác nhau.

Khi bạn hiểu được và thực hiện được 5 quy tắc trên, bạn sẽ dễ dàng học và làm chủ một ngôn ngữ lập trình mới.

Việc lặp lại quá trình này sẽ khá khó khăn trong lần đầu tiên, nhưng đừng nản chí vội.  Bạn cứ lặp lại vài lần thì nó sẽ trở thành bản năng đối với bạn.

Qua bài viết này, mình hi vọng sẽ giúp các bạn có nhìn khác về việc học lập trình. Từ đó thay đổi tư duy và cách học để nhanh chóng thành thạo, giỏi ngôn ngữ lập trình mới. Ý kiến của bạn về cách học lập trình như thế nào? Để lại bình luận bên dưới nhé.

Bài viết gốc được đăng tải tại vntalking.com

Xem thêm:

Tìm kiếm việc làm IT mới nhất tại TopDev!