Với tư cách là giảng viên chuyên giảng dạy Full Stack Web Development, tôi thường nhấn mạnh với sinh viên tầm quan trọng của chất lượng mã code, hoàn thành dự án đúng thời hạn và làm việc theo nhóm. Gần đây một sinh viên đã hỏi tôi: “Thế nào là một lập trình viên giỏi?” nhưng tôi chưa thực sự trình bày đầy đủ chính xác thế nào là một lập trình viên giỏi.

Từ câu chuyện đó, tôi đã nghĩ ra một định nghĩa như sau:

“Một lập trình viên giỏi là người viết mã hoạt động được, đã được thử nghiệm để đảm bảo tính chính xác, trong khoảng thời gian quy định, tuân theo các phương pháp tốt nhất đã được chấp nhận và mã đó phải dễ dàng duy trì và nâng cấp. Có sự phối hợp ăn ý với đồng đội, và không ngừng cải thiện kiến thức và kỹ năng trong suốt sự nghiệp của mình.”

Cùng xem qua giải thích cặn kẽ hơn về định nghĩa trên nhé!

1. Viết mã hoạt động được

Máy tính có thể xem là một thứ khá khó tính. Chỉ một sai lệch nhỏ không như máy tính của bạn mong đợi thì điều đó có nghĩa là mã sẽ không biên dịch được, không chạy hoặc sẽ gặp sự cố khi nhập dữ liệu không mong muốn.

Toàn bộ mục đích của việc lập trình và xây dựng phần mềm là viết mã mà máy tính hiểu và thực thi thành công để tạo ra kết quả mong muốn. Nói cách khác, mã chạy được.

Như vậy với tư cách là một lập trình viên, bạn cần có con mắt tinh tường để biết chi tiết và liên tục quét mã của mình để tìm bất kỳ thứ gì có vẻ “không ổn”.

Nó cũng có nghĩa là bạn là người chủ động. Bạn sử dụng các công cụ để giúp bản thân xác định các lỗi tiềm ẩn TRƯỚC KHI chạy mã - tất cả các trình biên dịch và linters đều phục vụ mục đích này. 

Bạn sử dụng định dạng nhất quán để giúp bạn xem và hiểu cấu trúc mã của mình dễ dàng hơn. Bạn đọc tài liệu về ngôn ngữ, thư viện và framework bạn sử dụng và hiểu sắc thái của chúng. Bạn rèn luyện bản thân để nhận ra các lỗi tiềm ẩn trong quy trình khi bạn viết mã.

Mã của bạn là trách nhiệm của bạn và đảm bảo rằng nó hoạt động là những gì bạn được trả lương. Vì thế,

“Một lập trình viên giỏi viết mã hoạt động được.”

2. Đã được thử nghiệm để đảm bảo tính chính xác

Việc làm cho mã của bạn hoạt động chỉ là bước đầu tiên. Câu hỏi tiếp theo là: mã của bạn có hoạt động chính xác không? Kết quả sai có thể gây ra hậu quả mà bạn không lường trước được, từ những phiền toái vô hại trên giao diện người dùng khiến họ bực bội và ảnh hưởng đến hiệu suất làm việc của họ — đến việc ảnh hưởng đến doanh thu của công ty. Do đó, mã không hoạt động chính xác cũng vô nghĩa như mã không hoạt động vậy.

Là một lập trình viên, bạn cần áp dụng tư duy kiểm thử và tưởng tượng tất cả các tình huống mà lỗi có thể xảy ra và chúng sẽ được xử lý như thế nào? Tất cả những lỗi mà bạn bỏ sót có thể khiến chương trình của bạn bị sập, dữ liệu bị hỏng, thông tin bí mật bị rò rỉ qua lỗ hổng bảo mật, . . .

Khi bạn đưa mã chưa được kiểm tra vào production…

Tương tự như việc xây dựng các cấu trúc vật lý, phần mềm cũng cần phải được kiểm tra kỹ lưỡng để đảm bảo tuân theo các tiêu chuẩn “có thể mã hóa”. Mã nguồn phần mềm của chúng ta yêu cầu các tiêu chuẩn chặt chẽ tương tự. 

Đó là lý do tại sao phương pháp Phát triển dựa trên kiểm thử (Test Driven Development) ra đời. Bạn cần xây dựng một chiến lược và hệ thống kiểm thử tự động liên tục, kiểm tra tất cả các thay đổi mới trong mã nguồn — từ việc viết mã cho đến kiểm thử tích hợp và thử nghiệm end-to-end trên môi trường staging.

Việc này cũng đóng vai trò quan trọng trong việc giảm thiểu chi phí phát triển. Đối với lập trình viên, việc phát hiện lỗi nhanh chóng và dễ dàng khi viết mã trên máy tính vô cùng quan trọng. Mỗi lỗi mà bạn bỏ qua và sau đó được phát hiện bởi QA hoặc người dùng cuối cùng đều có giá trị đắt đỏ. Việc phát hiện lỗi sớm giúp bạn tránh phải tạo thêm công việc, kéo theo nhiều người tham gia và có thể tránh việc đưa ra tuyên bố công khai để đảm bảo người dùng rằng mọi thứ đều được kiểm soát.

Dù bạn không thể bắt được mọi lỗi, nhưng việc bạn đã cố gắng hết mình để đảm bảo mã của bạn xử lý tốt nhất có thể với mọi tình huống là điều đáng tự hào.

Do đó “Một nhà lập trình viên giỏi luôn kiểm thử mã của mình để đảm bảo tính chính xác.”

3. Trong khoảng thời gian quy định

Năng suất và hiệu suất đóng vai trò quan trọng trong thế giới của máy tính. Điều này có nghĩa là, với tư cách là những lập trình viên, chúng ta đang bước vào thế giới của năng suất và hiệu suất. Một mặt, chúng ta phải viết mã để làm cuộc sống của con người trở nên năng suất và hiệu quả hơn, và mặt khác, chúng ta tận dụng máy tính để đem những tiến bộ này đến với người dùng.

Một tác dụng phụ của thế giới này là sự mong đợi của xã hội về việc hoàn thành mọi việc ngay bây giờ. Áp lực đó đến từ các sếp, khách hàng, người dùng và môi trường kinh doanh để tiếp cận thị trường trước tiên.

Điều này có thể tạo ra rất nhiều áp lực, và chúng ta cũng chỉ là con người. Chúng ta không phải lúc nào cũng hiệu suất và năng suất.

Việc ước tính thời gian có thể rất phức tạp và có thể có rất nhiều vấn đề chưa biết, không mong muốn xuất hiện khi xây dựng phần mềm phức tạp. Với áp lực xã hội đã đề cập - và xu hướng bỏ qua các chi tiết trong tâm trí của chúng ta, luôn khiến chúng ta đánh giá thấp về vấn đề thời gian. Các mốc thời gian rất quan trọng và có rất nhiều người khác phụ thuộc vào việc bạn đáp ứng các mốc thời gian đã thống nhất.

Tốt nhất là bạn nên đánh giá thời gian hợp lý hơn, xây dựng một khoảng trống phòng trường hợp mọi thứ gặp vấn đề. Chẳng hạn như bạn đã từng làm công việc này trước đây và mất bao lâu? Phần nào là không biết hoặc mới với bạn?

Hiểu về bản thân dựa trên hiệu suất trong quá khứ khá quan trọng. Ngoài thời gian viết mã, bạn cũng cần tính thời gian cho nghiên cứu, kiểm thử và debug. Đừng bao giờ giả định rằng mã của bạn sẽ hoạt động đúng lần đầu, hãy trò chuyện trung thực với leader, quản lý và khách hàng về những lo ngại của bạn và thỏa thuận thời gian làm việc phù hợp cho tất cả mọi người.

Là một lập trình viên, bạn cũng có trách nhiệm tìm ra tất cả cách bạn có thể làm việc để mang lại hiệu suất tốt nhất. Bạn có tận dụng tất cả các công cụ có sẵn để công việc dễ dàng hơn không? Mặc dù bạn có thể học cách gõ và suy nghĩ nhanh hơn, nhưng bạn sẽ muốn dựa vào máy tính của mình để tự động hóa phần lớn công việc của mình để bạn có thể thực hiện những nhiệm vụ quan trọng, sáng tạo hơn.

Vì vậy, “Một lập trình viên phải giỏi ước tính chính xác thời gian cần thiết để hoàn thành nhiệm vụ và hoàn thành nhiệm vụ trong thời gian dự kiến.”

4. Tuân theo các phương pháp tốt nhất đã được chấp nhận

Khi bạn đạt đến cấp độ kỹ năng viết mã hoạt động (và hoạt động chính xác), thì bạn cần có khả năng viết mã mà bạn biết là tốt nhất có thể về mọi mặt. Bạn cần nhận ra rằng mặc dù bạn có thể có một cách giải quyết vấn đề mới lạ hoặc thông minh nhưng điều đó cần được cân nhắc so với các giải pháp của cộng đồng nhà phát triển lớn hơn.

Điều đó có nghĩa là áp dụng các phương pháp thực hành tốt nhất và mẫu thiết kế đã được công nhận rộng rãi để giải quyết các vấn đề phổ biến. Các phương pháp tốt nhất giúp bạn tiết kiệm thời gian vì bạn không cần phải tự mình giải quyết vấn đề từ đầu. Và vì chúng thường được sử dụng, các lập trình viên khác sẽ nhận ra bạn đang làm gì. Các phương pháp thực hành tốt nhất cũng giúp giảm thiểu sai sót và lỗi vì chúng đã tính đến các vấn đề thường gặp và tìm ra cách tốt hơn - đó là lý do tại sao chúng được coi là “tốt nhất”. Việc của bạn là nghiên cứu và áp dụng các mẫu và thực hành phù hợp với lĩnh vực bạn đang làm việc.

Viết phần mềm là một quá trình phức tạp với lịch sử phong phú của nhiều bộ óc suy nghĩ về cách tốt nhất để giải quyết các vấn đề chung. Vì thế,

“Một lập trình viên giỏi tận dụng các phương pháp hay nhất và áp dụng chúng vào quy trình làm việc và dự án của họ.”

5. Dễ dàng duy trì và nâng cấp

Mặc dù máy tính có thể chạy bất kỳ mã nào bạn đưa vào, nhưng đến một thời điểm, có một người nào khác sẽ phải đọc, hiểu và chỉnh sửa mã của bạn. Đó có thể là bạn trong tương lai, hoặc là ai đó khác trong team của bạn, hoặc là lập trình viên tiếp theo mà mã của bạn được chuyển giao sau khi bạn rời đi. Do đó, bạn có thể làm công việc của họ dễ dàng hơn bằng cách viết mã mà họ có thể hiểu được.

Hãy xem xét lại mã của bạn thường xuyên và tự hỏi liệu điều này có hợp lý với người khác không. Có bao nhiêu thông tin rõ ràng? Có bao nhiêu cần được giải thích?

Lưu ý nhỏ: Mặc dù các chú thích trong mã sẽ có lợi, nhưng những nhận xét quá mức kèm theo lời giải thích là một dấu hiệu xấu. Nếu bạn cần nhận xét để giải thích mã của mình đang làm gì, hãy cân nhắc rằng bạn không viết mã để người khác trong tương lai có thể dễ dàng duy trì, mà mã sẽ tự nói lên điều đó.

“Một lập trình viên giỏi viết mã mà các nhà phát triển khác có thể dễ dàng hiểu và sửa đổi.”

6. Phối hợp ăn ý với đồng đội

Nguyên tắc quan trọng khi làm việc là phải tôn trọng các thành viên trong nhóm của bạn, hiểu rõ vai trò của họ, biết bạn thuộc về đâu và cấp trên mong đợi gì từ bạn. Bạn báo cáo vấn đề cho ai? Tầm nhìn và nhiệm vụ của công ty là gì? Bộ sản phẩm lớn hơn mà công ty của bạn phát triển ngoài dự án bạn đang thực hiện là gì? Bạn có quen thuộc với Vòng đời sản phẩm và quy trình tổng thể để từ đó biến ý tưởng trở thành sản phẩm với người dùng thực sự không?

Mỗi công ty sẽ có sản phẩm khác nhau và việc của bạn là hài hòa với nó. Giống như bất kỳ mối quan hệ nào, luôn có sự đánh giá về sự phù hợp và kỳ vọng mà cả hai bên cần phải đáp ứng.

Hãy tìm cách cải thiện quy trình làm việc mà sẽ giúp ích cho mọi người. Nói chung, việc cải thiện năng suất và hiệu quả cần được hoan nghênh một cách hợp lý và hãy tự đặt mình là người chủ động làm việc để giúp công việc của mọi người trở nên dễ dàng hơn, giúp bạn trở thành người dám nghĩ dám làm và người lãnh đạo trong công ty của mình, bất kể trình độ của bạn là gì.

Sự nghiệp và danh tiếng của bạn là trách nhiệm của bạn. Bạn dành rất nhiều thời gian tại nơi làm việc, và việc tạo điều kiện tốt nhất cho bản thân là trách nhiệm của bạn. Vì vậy,

“Một lập trình viên giỏi luôn cố gắng trở thành người dễ làm việc và luôn tìm cách giúp cho công việc của đội nhóm nhẹ nhàng và hiệu quả hơn.”

7. Liên tục nâng cao kiến ​​thức và kỹ năng trong suốt sự nghiệp

Thế giới công nghệ và máy tính luôn không ngừng phát triển. Một số phần mềm cũ được cố định bằng công nghệ cũ đòi hỏi phải bảo trì nhiều hơn, ít đổi mới, trong khi các lĩnh vực mới nổi có thể yêu cầu viết lại phần mềm thường xuyên mỗi khi có thay đổi.

Và đó không hẳn là một vấn đề nếu bạn là một người luôn tích cực trau dồi kiến thức i, bạn sẽ liên tục phát triển qua từng năm, khiến bản thân trở nên có giá trị hơn đối với công ty và có khả năng được tuyển dụng cao hơn. Học tập tích cực giúp bạn quan tâm hơn đến sự nghiệp của mình, giúp bạn thực sự tiến về phía trước.

Và điều quan trọng là bạn không nên giới hạn bản thân chỉ trong việc hiểu lĩnh vực kỹ thuật cụ thể của mình. Tất cả kiến ​​thức bạn học sẽ củng cố sự hiểu biết tổng thể của bạn về công nghệ và ứng dụng của nó trong công việc nói chung.

Việc nghiên cứu các lĩnh vực khác như UX, Quản lý sản phẩm, Tiếp thị và Kinh doanh, Khoa học dữ liệu, SEO, v.v. sẽ hoàn thiện các kỹ năng của bạn, cho phép bạn linh hoạt hơn trong công việc cũng như giúp bạn hiểu và tôn trọng đồng nghiệp xung quanh mình.

Vì thế “Một lập trình viên giỏi là người học hỏi suốt đời nhằm mở rộng kiến ​​thức và kỹ năng để củng cố cho toàn bộ sự nghiệp của họ.”

Lời kết

Có nhiều khía cạnh để trở thành một lập trình viên giỏi, nhưng suy cho cùng, giống như bất kỳ ngành nghề khác, mọi thứ đều phải bắt đầu bằng việc hãy xem bản thân là một chuyên gia. Chỉ riêng tư duy đó thôi cũng đã đưa bạn đi đúng hướng. 

Theo bạn thì sao, đâu là tố chất của một lập trình viên giỏi?

Tuyên bố miễn trừ trách nhiệm: Các ý kiến ​​trình bày ở đây hoàn toàn là của riêng tôi, dựa trên kinh nghiệm chuyên môn của tôi với tư cách là Giảng viên và Web Developer.

Nguồn: Jonathan Bluks

 VietnamWorks inTECH