8 cấp độ của nghề lập trình viên
Bài viết được copy từ vinacode để đọc hàng ngày và nhắc nhở bản thân.
Link: https://vinacode.net/2014/09/26/dang-cap-cua-lap-trinh-vien
Bài viết được dịch từ blog Coding Horror
Bạn đã từng bao giờ nhận được một câu hỏi phỏng vấn tuyển dụng kinh điển là, “Bạn nhìn thấy bản thân mình ở đâu sau 5 năm nữa?” Khi được hỏi câu này, tôi luôn luôn nghĩ đến một video của ban nhạc Twisted Sister từ năm 1984. Tôi muốn bạn nói với tôi — không, tốt hơn là đứng dậy và nói với cả lớp —
bạn muốn làm gì với cuộc đời mình?
Bạn muốn được “rock”, tất nhiên rồi! Không thì ít ra cũng trở thành một lập trình viên giỏi. Đây không phải là dạng câu hỏi mà thường nhận được một câu trả lời nghiêm túc — cũng giống như một câu phỏng vấn cũ rích khác là, “Điểm yếu lớn nhất của bạn là gì?” Đôi khi bạn “rock” quá mạnh đúng không nào? Làm những người vô tội đứng ngoài cũng có thể bị văng miểng. Nhưng tôi nghĩ rằng đây loại câu hỏi hoàn toàn khác và có tính nghiêm túc hơn, một trong số đó cũng đáng để bạn thực sự quan tâm. Không phải lợi ích dành cho những nhà tuyển dụng, mà vì lợi ích của chính bạn. Câu hỏi “Bạn nhìn thấy bản thân mình ở đâu sau 5 năm nữa?” là dạng câu hỏi rất dễ hỏi, và hầu hết mọi người đều đã chuẩn bị sẵn cho mình một câu trả lời để đưa ra cho những người phỏng vấn. Nhưng nó nêu lên một mức độ quan tâm sâu hơn: con đường sự nghiệp tương lai dành cho một nhà phát triển phần mềm là gì? Chắc chắn là, chúng ta làm công việc này bởi vì chúng ta yêu thích nó, và chúng ta rất may mắn về mặt này. Nhưng liệu bạn vẫn sẽ ngồi trước màn hình máy tính để lập trình khi mà bạn ở tuổi 50? Khi bạn ở độ tuổi 60? Đâu là thành quả sự nghiệp tốt nhất có thể dành cho một lập trình viên, mẫu người nào mà bạn đang khao khát trở thành? Bạn sẽ nghĩ gì nếu tôi nói vui với bạn rằng, có tất cả 8 Cấp độ của một Lập Trình Viên?
1. Lập trình viên bất tử
Đây là cấp độ cao nhất. Những đoạn code của bạn sẽ trường tồn và vượt lên trên cả cái chết của bạn. Bạn là một phần của các ghi chép lâu dài về lịch sử của ngành điện toán. Những lập trình viên khác sẽ nghiên cứu về công việc và bút tích của bạn. Bạn có thể đã giành một giải thưởng Turing Award, hoặc đã viết ra những công trình nghiên cứu có sức ảnh hưởng lớn, hoặc đã phát minh ra một hoặc nhiều phần của nền tảng công nghệ mà đã tạo ra ảnh hưởng tới các khóa học lập trình như chúng ta đã biết. Bạn không chỉ có một trang wikipedia giới thiệu về mình — mà toàn bộ các trang web đều nghiên cứu về cuộc đời và sự nghiệp của bạn. Rất ít lập trình viên đã đạt được cấp độ này trong cuộc đời của họ. Một số lập trình viên đạt cấp độ này như: Dijkstra, Knuth, Kay
2. Lập trình viên thành công
Những lập trình viên này vừa nổi tiếng và cũng tạo nên những doanh nghiệp tầm cỡ — có lẽ thậm chí họ đã tạo ra toàn bộ ngành công nghiệp — xung quanh những dòng code của họ. Những lập trình viên này đã mang lại cho họ sự tự do thực sự: tự do để quyết định công việc mà họ muốn làm. Và chia sẻ sự tự do đó cùng với những đồng nghiệp của họ. Đây là cấp độ mà hầu hết các lập trình viên đều khao khát vươn tới. Để đạt được cấp độ này thì thường phụ thuộc nhiều vào các kỹ năng kinh doanh hơn là lập trình. Một số lập trình viên đạt cấp độ này như: Bill Gates, Carmack, DHH
3. Lập trình viên nổi tiếng
Đây cũng là một cấp độ tốt để vươn tới, nhưng bạn cũng nên có một công việc hàng ngày. Bạn nổi tiếng trong cộng đồng lập trình viên. Nhưng việc trở nên nổi tiếng đó thì không đồng nghĩa với việc bạn có thể thu được nhiều tiền cho riêng mình. Nổi danh thì tốt, nhưng thành công thì còn tốt hơn. Bạn có thể làm việc cho một công ty công nghệ lớn và nổi tiếng trên thế giới, hay một công ty nhỏ nhưng có sức ảnh hưởng, hoặc bạn là một phần của một nhóm khởi nghiệp khiêm tốn nào đó. Nhưng dù sao đi nữa, những lập trình viên khác cũng đã nghe danh về bạn, và bạn đang có một sức ảnh hưởng tích cực lên cộng đồng.
4. Lập trình viên giỏi
Bạn có một sự nghiệp thành công với tư cách là một nhà phát triển phần mềm. Các kỹ năng của bạn luôn đáp ứng được yêu cầu và bạn chẳng bao giờ phải chờ lâu hoặc khó nhọc để kiếm một công việc tuyệt vời nào đó. Các đồng nghiệp của bạn rất nể phục bạn. Mỗi công ty mà bạn làm việc cho họ thì luôn tăng trưởng và thịnh vượng hơn theo một cách nào đó bởi sự hiện diện của bạn. Nhưng mà bạn sẽ đi đâu từ vị trí này?
5. Lập trình viên trung bình
Tại cấp độ này thì bạn là một lập trình viên đủ tốt để nhận ra rằng mình không là một lập trình viên vĩ đại. Và bạn có thể sẽ chẳng bao giờ đạt được như vậy. Tài năng thường có rất ít việc phải làm cùng với thành công. Bạn có thể rất thành công nếu bạn có một công việc kinh doanh và các kỹ năng mềm khác. Nếu bạn là một lập trình viên trung bình nhưng biết cách kiếm sống với nó thì bạn đã là một tài năng rồi, chứ không nhất thiết phải giỏi ở khả năng lập trình. Đừng đánh giá thấp giá trị bản thân mình. Đôi khi bạn chưa nhận ra là mình cũng có nhiều khả năng đặc biệt. Không có điều gì sai trái với việc thiếu hụt tài năng cả. Hãy can đảm lên. Hãy nhận ra cái mà bạn giỏi nhất và theo đuổi nó. Thật năng nổ vào.
6. Lập trình viên nghiệp dư
Một lập trình viên nghiệp dư yêu thích việc viết code, và điều đó chỉ ra rằng: họ có thể là một sinh viên hoặc một thực tập sinh đầy triển vọng, hoặc có thể họ đang đóng góp công sức vào một số dự án mã nguồn mở, hoặc đang thích thú xây dựng các ứng dụng và các trang web với mục đích “chỉ cho vui” trong thời gian rảnh rỗi. Những ý tưởng và đoạn code của họ cho thấy sự nhiệt tình và đầy triển vọng. Trở thành một lập trình viên nghiệp dư là một điều tốt; từ cấp độ này họ có thể nhanh chóng phát triển lên trở thành một lập trình viên giỏi.
7. Lập trình viên vô danh
Những lập trình viên này thường được gán cho một cái biệt danh là Joe Coder. Họ có đủ trình độ (thường là vậy) nhưng không có gì gọi là nổi bật. Họ có thể làm việc cho một tổ chức lớn và nặc danh như MegaCorp chẳng hạn. Đó chỉ là một công việc, không phải là toàn bộ cuộc đời họ. Và cũng không có điều gì sai trái với điều đó cả.
8. Lập trình viên tồi
Những người mà vì một lý do nào đó dòng đời xô đẩy mà “rớt vào” vai trò lập trình viên và không hề có bất kỳ một khả năng hoặc kỹ năng nào cả. Mọi thứ họ chạm tay vào đều tạo ra những đau khổ cho những lập trình viên đồng nghiệp, vì phải đi hốt rác cho họ — và cũng có thể làm đau khổ là cho những Lập Trình Viên Tồi khác, những người mà thiếu hụt thậm chí những kỹ năng cơ bản nhất cần có để nói rằng họ đang làm việc cùng với những Lập Trình Viên Tồi khác. Điều này thì, có lẽ, là điểm dễ nhận thấy của tất cả các Lập Trình Viên Tồi. Những người không hề có bất kỳ một khả năng viết code nào cả — nhưng dù sao đi nữa họ lại đang làm công việc này. Những cấp độ này thì không hoàn toàn nghiêm túc lắm. Không phải mọi lập trình viên đều khao khát tới những mục đích giống nhau trong sự nghiệp của họ. Nhưng nó cũng chỉ ra những điều mà một lập trình viên cần cân nhắc có thể hoàn thành trong 10 năm, 20 năm, hoặc 30 năm — thậm chí là cả cuộc đời họ. Những lập trình viên nổi tiếng nào mà bạn cảm thấy nể phục nhất? Họ đã đạt được thành tựu gì mà khiến bạn cảm thấy ngưỡng mộ?
Hay ngắn gọn hơn; bạn muốn làm gì với cuộc đời của bạn?