Có một câu nói rằng “một lập trình viên giỏi có thể làm gấp 10 lần một lập trình viên bình thường”.
Không ai muốn mình bị xem là một lập trình viên tệ. Nhưng có một thực tế là rất nhiều lập trình viên nhận thức được rằng mình khá tệ. Vậy thì điều gì làm cho bạn trở nên một lập trình viên giỏi, và tại sao bạn lại là một lập trình viên tồi? Bài viết này sẽ liệt kê những đặc điểm giúp bạn nhận ra được mình là một lập trình viên như thế nào. (Lưu ý trong bài có sử dụng cả developer lẫn programmer nhưng về cơ bản các đặc điểm là như nhau)
Lập trình viên tệ
Nếu bạn vẫn là người mới bắt đầu viết code và bạn lo lắng liệu mình có đang viết code kém hay không, thì về mặt khả năng, đương nhiên bạn không giỏi ngay được. Tuy nhiên, đừng nản lòng vì có một đặc điểm chính khiến lập trình viên trở nên tệ hơn và miễn là bạn không rơi vào cái bẫy đó, bạn có khả năng cải thiện.
Trước tiên chúng ta hãy hiểu hai kiểu bad developers thường gặp:
- Cowboy/girl Coder (để đơn giản trong bài viết này ta chỉ gọi ngắn gọn là cowboy coder)
- Mediocre Developer
Về cốt lõi, hai kiểu lập trình viên này giống nhau, nhưng thường thể hiện các hành vi khác nhau.
Cowboy Coders
Cowboy Coders có thể phá hỏng đội ngũ mà họ làm việc cùng. Họ làm việc tốt nhất khi một mình và trong một dự án duy nhất có tuổi thọ ngắn.
Những lập trình viên tự học chưa bao giờ nhận được bất kỳ hướng dẫn nào về cách viết code sẽ là những lập trình viên kiểu này. Vậy đặc điểm chính của một cowboy coder là gì?
1. Code rất nhanh
Thông thường, bad developers có thể tạo ra các tính năng mới nhanh hơn nhiều so với các developer bình thường và những người không biết code sẽ nghĩ rằng những người lập trình nhanh này thật tuyệt vời. Những lập trình viên này hoạt động tốt nhất một mình và cho những khách hàng có thời hạn cực kỳ chặt chẽ và những người chỉ muốn giới thiệu tính năng càng sớm càng tốt.
2. Code lộn xộn, không thể đọc được
Thiết kế code của các dự án được xây dựng nhanh chóng sẽ là một mớ hỗn độn hoàn toàn. Loại code lộn xộn này thường được gọi là “Code Spaghetti”, nhưng lại không “ngon” như tên gọi của nó..
Code spaghetti rất khó hiểu và phức tạp một cách không cần thiết đến mức người khác sẽ khó hiểu những gì lập trình viên làm, và do đó nó thường là một cơn ác mộng để bảo trì sau này. Điều này đồng nghĩa với việc giảm năng suất cho cả nhóm nếu bất kỳ ai không may phải làm việc với cowboy coder.
Kết quả của code lộn xộn là…
3. Lỗi. Lỗi, mọi nơi
Nếu phần mềm của một công ty phát triển ngày càng lớn và phức tạp hơn và code của họ vẫn là một đống mì Ý, thì đó chỉ là một quả bom tích tắc chờ phát nổ. Tệ nhất là sẽ gây ra các vấn đề nghiêm trọng như việc Toyota tăng tốc ngoài ý muốn. Mọi người đều có thể đồng ý rằng vụ thu hồi xe Toyota là một thảm họa.
Cũng không bao giờ dễ chịu nếu phần mềm của bạn tình cờ lọt vào the Daily WTF (một blog đưa ra những ví dụ về coding tệ nhất trong môi trường làm việc thực tế)
Hơn nữa, code spaghetti không thể mở rộng. Điều này có nghĩa là việc thêm các tính năng mới vào code Spaghetti giống như đi bộ trong một bãi mìn sẽ phát nổ, bất kể bước lớn hay nhỏ và bạn đi theo hướng nào. Điều này thường là do một lập trình viên đã trộn lẫn mọi chức năng với nhau, vì vậy bất kỳ thay đổi nào cũng sẽ phá vỡ hoàn toàn phần mềm. Điều này có thể được ngăn chặn bằng thiết kế code tốt hơn hoặc unit tests, nhưng tất nhiên, các lập trình viên không quan tâm đến việc code của họ có thể sử dụng được hay không và cũng không quan tâm đến việc viết các bài test. Chưa kể, đều thường xảy ra với một lập trình viên là họ nhanh chóng “sửa” một số lỗi, chỉ để tạo ra nhiều lỗi hơn. Họ có thể cảm thấy như những người lính cứu hỏa anh hùng, bận rộn, những người không bao giờ thực sự dập tắt được nguồn gốc của đám cháy.
Nói chung, mọi lỗi và lỗi do bad developer tạo ra sẽ gây ra năng suất tiêu cực. Lúc đầu, có vẻ như anh chàng lập trình viên này đang làm việc siêu năng suất khi luôn đáp ứng các thời hạn mà các nhà phát triển khác sẽ không dám hứa, nhưng điều này phải trả giá bằng vô số lỗi “không mong muốn” có thể được ngăn chặn bằng code được thiết kế tốt và được lập trình sạch bởi một nhà phát triển giỏi.
Nếu bạn đang dành hơn 80% thời gian phát triển để gỡ lỗi code của chính mình và nếu code của bạn là một cơn ác mộng để gỡ lỗi (tức là cuối cùng bạn tạo ra một lỗi khác), điều này thường có nghĩa là codebase không tốt và bạn có thể cần trợ giúp về cải thiện code của mình.
4. Kiêu căng
Nhiều lập trình viên mới thường mắc phải sai lầm khi viết code mà không lập kế hoạch và tạo ra một loạt code lỗi, đôi khi vì họ có ít kinh nghiệm với những vấn đề này nên họ đưa ra quyết định không tốt.
Những người mới bắt đầu này có thể dễ dàng thăng tiến bằng cách nhận được sự cố vấn từ các nhà phát triển có kinh nghiệm, những người tự hào về việc xây dựng code chất lượng, vì rất nhiều lần những người mới bắt đầu là bình thường vì họ không biết rõ hơn. Tuy nhiên, nếu xung quanh họ là những nhà phát triển tồi tệ hoặc tầm thường như nhau, thì họ sẽ gặp rắc rối khi rơi vào ảo tưởng rằng họ giỏi.
Miễn là bạn sẵn sàng chịu trách nhiệm cho những sai lầm của mình và miễn là bạn đang học hỏi từ những sai lầm của mình, bạn không phải là bad developer.
Tính cách quan trọng nhất khiến bạn trở thành lập trình viên tệ là tính kiêu ngạo.
Lập trình viên tệ nghĩ rằng code của họ là hoàn hảo và sẽ đổ lỗi cho khách hàng vì đã làm hỏng chương trình của họ hơn là tìm lý do tại sao phần mềm bị lỗi. Hơn nữa, những lập trình viên kiêu ngạo này cũng nghĩ rằng những người khác kém họ về trí thông minh. Họ thường cho rằng những người cần nhận xét và những người không hiểu code của họ quá “ngu ngốc” để làm việc với họ, nhưng lại bao giờ cố gắng nghĩ về lý do tại sao mọi người không hiểu code. Kết quả của việc luôn nghĩ rằng mình đúng và luôn nghĩ người khác kém hơn, họ thiếu sáng tạo khi xây dựng các tính năng, điều này có thể gây ra rất nhiều vấn đề cho một nhóm.
Tệ hơn nữa, bad programmers không muốn lắng nghe hoặc học hỏi từ những sai lầm vì họ không thừa nhận rằng họ đã mắc sai lầm – như đã đề cập trước đây, họ thường chơi trò đổ lỗi để thay thế.
Xin lưu ý rằng điều này không có nghĩa là cowboy coders là những người khó tính – họ có thể là người dễ chịu nhất mà bạn từng gặp – nhưng sự kiêu ngạo và không sẵn sàng chịu trách nhiệm cho những sai lầm thường ăn sâu vào thái độ tinh thần của họ bất cứ khi nào.
Có thể bạn muốn tìm hiểu thêm:
- 21 sai lầm trong sự nghiệp có thể khiến lập trình viên phải hối tiếc
- Những sai lầm nghiêm trọng mà lập trình viên có thể mắc phải
- Sự khác nhau giữa coder, programmer, developer và software engineer !
Lập trình viên tầm thường (Mediocre Developer)
Ở một khía cạnh nào đó, những nhà phát triển tầm thường tệ hơn những người viết code vì họ biết mình không giỏi, nhưng họ thường hài lòng với việc dậm chân tại chỗ về mặt kỹ năng.
Không giống như cowboys, các nhà phát triển tầm thường (Mediocre programmer or developer) thường không quan tâm đến việc lập trình hoàn toàn và do đó gặp khó khăn trong việc hiểu các khái niệm lập trình. Họ mất nhiều thời gian để xây dựng một thứ gì đó, nhưng code do họ viết vẫn dưới trung bình và có nhiều vấn đề. Họ thường không có niềm đam mê hay hứng thú với việc viết code, và họ học các công nghệ mới chậm hoặc thực tế là không thể học được.
Có thể những nhà phát triển tầm thường không cá tính như cowboy vì họ sẽ chơi trong một đội, nhưng họ chắc chắn không mang lại điều gì đáng bàn và giải pháp của họ sẽ luôn kém hơn những cowboy (họ thường tạo ra rất nhiều lỗi hay code kém hiệu quả cũng như do nhiều quyết định tồi).
Cốt lõi của vấn đề
Cốt lõi của điều làm cho một nhà phát triển trở nên tồi tệ là thiếu mong muốn trở thành một lập trình viên giỏi hơn. Bad programmers hài lòng và thoải mái với hiện tại.
Hơn nữa, bad programmer là người không quan tâm đến việc học những gì họ không biết và do đó không quan tâm đến việc cải thiện bản thân.
Đây cũng là lý do tại sao bạn thường tìm thấy rất nhiều bản copy và dán trong code của bad programmer, vì họ không nỗ lực tìm hiểu lý do tại sao một cái gì đó hoạt động hoặc không hoạt động – họ chỉ muốn sửa chữa. Sao chép và dán không phải là xấu, nhưng chỉ trong các trường hợp sau:
- Bạn biết mình đang làm gì.
- Bạn chắc chắn rằng code bạn đang sao chép và dán sẽ hoạt động.
- Nó chỉ để testing / dùng thử
Bad developers thường sẽ copy & paste StackOverflow mà không hiểu nó hoặc điều chỉnh các giải pháp để phù hợp với code của riêng họ.
Sự thiếu tò mò về cách thức hoạt động của một đoạn code sẽ khiến các bad developers hiểu biết hời hợt về ngôn ngữ, công cụ hay các thư viện mà họ sử dụng. Như Jeff Atwood, người đồng sáng lập của StackOverflow nói, “Read the Source Code, Luke”. Lưu ý rằng, những người luôn nhấn mạnh vào việc tuân theo “các phương pháp hay nhất” mà không hiểu tại sao những phương pháp đó được coi là “tốt nhất” cũng có thể xem bad programmers.
Ngoài ra, lập trình viên tệ dường như không bao giờ học hỏi từ những sai lầm của họ, vì họ không thừa nhận rằng họ đã mắc sai lầm hoặc vì thiếu học hỏi.
Bạn có thể mắc lỗi và tạo ra lỗi vì mọi người đều mắc lỗi. Tuy nhiên, nếu bạn tiếp tục lặp lại sai lầm của mình, điều này có nghĩa là bạn đang không học hỏi và điều đó khiến bạn trở thành một bad developer.
Lập trình viên giỏi
Các nhà phát triển giỏi phải tạo nên phần lớn năng suất làm việc cho cả nhóm và họ thường có các đặc điểm sau:
- Nhận thức rằng luôn có một nhà phát triển tốt hơn
- Khiêm tốn và sẵn sàng chịu trách nhiệm về sai lầm cũng như học hỏi từ sai lầm
- Viết code có cấu trúc, có thể đọc được
- Thiết kế code vững chắc có thể được gỡ lỗi dễ dàng
- Cố gắng hiểu cách mọi thứ hoạt động
- Giao tiếp và hợp tác tốt với những người khác trong nhóm
- Cởi mở với những lời chỉ trích và các cách tiếp cận khác nhau
- Có thể bắt kịp với việc học hỏi các công nghệ mới
- Thích giải quyết vấn đề
Code chất lượng rất khó đo lường (đó là lý do tại sao nó không thể được đưa vào bài kiểm tra, nhưng đây là một khía cạnh quan trọng làm cho nhà phát triển trở nên “tốt”).
(source)
Lưu ý : Nếu bạn là nhà phát triển mới bắt đầu hoặc người làm nghề tự do, bạn có thể nhận được đánh giá code từ các nhà phát triển chuyên gia tại Codementor.
Các nhà phát triển giỏi là những người tốt và khiêm tốn, có trách nhiệm, những người sẽ hoàn thành công việc và đảm bảo mọi thứ hoạt động như bình thường.
Các nhà phát triển thực sự giỏi
Bạn không cần phải cảm thấy áp lực khi trở thành một nhà phát triển “tuyệt vời”, bởi vì những người thực sự giỏi không cần bất kỳ gợi ý nào – họ có thể đã làm những điều này vì niềm đam mê và tình yêu viết code thôi thúc họ.
Có hai kiểu nhà phát triển thực sự sẽ giúp một nhóm:
- Nhà phát triển MVP
- Nhà phát triển hữu ích
MVP
Các nhà phát triển kiểu MVP không chỉ đơn giản là giải quyết vấn đề, họ biết có nhiều cách để thực hiện công việc. Haọ cố gắng tìm ra phương pháp tốt nhất để giải quyết vấn đề. Họ phát triển vượt bậc nhờ thử thách và do đó luôn làm việc hiệu quả nhất trong các nhiệm vụ khó – đây là điều khiến MVP có năng suất cao hơn nhiều so với hầu hết các nhà phát triển vì họ có thể đạt được những điều mà các nhà phát triển bình thường không thể. Tuy nhiên, nhờ sự yêu thích thử thách này, các nhà tuyển dụng có thể gặp khó khăn trong việc giữ chân họ nếu công việc được giao cho họ quá dễ dàng hoặc nhàm chán, bởi vì các MVP có thể bỏ đi nếu họ cảm thấy buồn chán.
Các nhà phát triển MVP thường rất tự hào về công việc của họ và do đó họ là người gắn bó với chất lượng và hiệu suất. Trên thực tế, họ sẽ xem xét nhiều trường hợp phức tạp và giải thích trước khi vấn đề xảy ra. Trong một số trường hợp, họ là kỹ sư QA của riêng mình, họ có thể thiết kế một chương trình để giảm đáng kể thời gian gỡ lỗi. Như vậy, một lập trình viên MVP có thể có năng suất cao hơn ít nhất 10 lần so với một lập trình viên tồi.
Các nhà phát triển MVP có óc tò mò mạnh mẽ và sẽ không dừng lại ở việc tìm hiểu “tại sao” một thứ gì đó hoạt động hoặc không hoạt động. Do đó, họ dành nhiều thời gian để đọc về lập trình cũng chỉ để cập nhật tất cả các công nghệ hoặc tìm hiểu về những điều mới, nhưng họ không nhảy vào bất kỳ trò chơi nào vì họ quan tâm nhiều hơn đến việc tự tìm hiểu mọi thứ. Họ rất đam mê viết code, họ cũng thường lập trình trong thời gian rảnh rỗi, hoặc là các dự án phụ hoặc đơn giản là thử các công nghệ, công cụ và ngôn ngữ mới.
Cuối cùng, các nhà phát triển MVP tự tin nhưng khiêm tốn vì họ luôn ghi nhớ rằng sẽ luôn có ai đó giỏi hơn họ, và thay vì cảm thấy bị đe dọa, họ sẽ thích làm việc với ai đó tốt hơn chỉ vì họ muốn học hỏi từ những nhà phát triển giỏi hơn.
Nhà phát triển mà nhóm của bạn mong muốn
Những nhà phát triển này thể hiện những đặc điểm tương tự như một nhà phát triển MVP với tình yêu mã hóa và sự tò mò không ngừng học hỏi bên ngoài công việc, nhưng họ không nhất thiết phải làm việc hiệu quả (mặc dù họ cũng thường đứng đầu về năng suất). Họ thường chỉ để lại bình luận phù hợp mà người khác cần và chủ động ghi lại những điều cần viết ra. Nhìn chung, những gì họ làm sẽ giúp mọi người khác trong nhóm vì đó là tài liệu sẽ giúp mọi người trong nhóm làm việc hiệu quả hơn. Bạn có thể có một nhóm MVP nhưng nhà phát triển này là người sẽ khiến tất cả họ hoạt động với hiệu quả cao nhất.
Hơn thế nữa, những tâm hồn tốt bụng này là những người có kiến thức, những người rất vui khi giúp những lập trình viên thiếu kinh nghiệm trở thành những lập trình viên giỏi hơn. Họ có kiến thức sâu sắc về các công cụ họ sử dụng và kiên nhẫn giải thích cho người mới bắt đầu lý do tại sao mọi thứ hoạt động và họ cố gắng đảm bảo rằng những người khác sẽ có thể hiểu và học hỏi để cải thiện.
Hầu hết, nếu không phải tất cả, các chuyên gia Codementor là những lập trình viên này. Họ không quan tâm đến việc chỉ giải quyết lỗi khó chịu đó cho bạn mà họ muốn giúp bạn học cách trở thành một lập trình viên giỏi hơn. Nếu bạn muốn hiểu “tại sao” mọi thứ hoạt động và đang gặp khó khăn khi làm như vậy thông qua googling hoặc câu hỏi để tìm câu trả lời tại StackOverflow, thì đây là những người phù hợp để hỏi.
Kết luận
Cuối cùng, yếu tố quan trọng nhất để trở thành một nhà phát triển giỏi, hoặc thậm chí tuyệt vời, nằm ở chính bạn. Có lẽ cần phải có tài năng và niềm đam mê bẩm sinh thực sự để trở thành một lập trình viên top 1%, nhưng bất cứ ai quan tâm đến lập trình và giải quyết vấn đề đều có thể trở thành một lập trình viên “giỏi”. Nếu bạn không muốn trở thành một lập trình viên giỏi, thì không ai có thể giúp bạn, kể cả một người cố vấn tuyệt vời.
Xem thêm bài viết gốc tại đây !
Bạn có biết?
tham gia cộng đồng ITguru trên Linkedin, Facebook và các kênh mạng xã hội khác có thể giúp bạn nhanh chóng tìm được những chủ đề phát triển nghề nghiệp và cập nhật thông tin về việc làm IT mới nhất
Linkedin Page:
Facebook Group:
cơ hội việc làm IT : ITguru.vn