- Khi gặp gỡ nhiều lập trình viên khác nhau, tác giả bắt đầu suy ngẫm về những đặc điểm chung mà các lập trình viên xuất sắc nhất cùng sở hữu
- Bài viết này là bản ghi chép quan sát được viết ra để truyền cảm hứng cho các lập trình viên mới bắt đầu hoặc những ai muốn phát triển hơn nữa
Hãy đọc tài liệu tham khảo trước
- Thay vì tìm Stack Overflow hay LLM trước, điều quan trọng là hình thành thói quen đọc tài liệu chính thức trước tiên
- Tài liệu chính thức của Apache, Python, TOML... thực sự được viết khá tốt
- Thói quen học trực tiếp từ nguồn sẽ mang lại lợi ích lớn về lâu dài
Hãy hiểu công cụ thật sâu
- Biết cách “dùng” công cụ và “hiểu” nó là hai cấp độ hoàn toàn khác nhau
- Người thật sự hiểu công cụ có thể giải thích từng cấu hình một
- Để hiểu rõ, cần nắm được đầy đủ về công cụ, bao gồm:
- Lịch sử (vì sao nó được tạo ra)
- Hiện tại (ai đang duy trì nó)
- Giới hạn (khi nào nó không phù hợp)
- Hệ sinh thái (các công cụ, thư viện xung quanh...)
- Nếu dùng Kafka làm công cụ chủ lực, bạn cần biết về nó nhiều hơn mức đọc lướt trên Reddit
Hãy đọc kỹ thông báo lỗi
- Nếu quan sát thật kỹ thông báo lỗi, bạn sẽ thấy trong đó có manh mối
- Những lập trình viên giỏi nhất có thể suy luận vấn đề chỉ từ một lượng thông tin rất ít
- 80% vấn đề có thể được giải quyết chỉ bằng việc đọc kỹ thông báo lỗi
Hãy biết chia nhỏ vấn đề
- Ai rồi cũng có lúc bị mắc kẹt, và chỉ khi biết chia nhỏ vấn đề thì mới có thể giải được
- Người có nhiều kinh nghiệm hoặc khả năng giải quyết vấn đề tốt thường chia nhỏ rất dễ dàng
- Công việc cốt lõi của lập trình viên, rốt cuộc, là biến một vấn đề lớn thành nhiều vấn đề nhỏ
- Nếu giải từng vấn đề đơn giản một cách tuần tự, toàn bộ vấn đề cũng sẽ được giải quyết
Hãy làm việc với mã nguồn mà không sợ hãi
- Những lập trình viên giỏi nhất không ngại đọc mã nguồn
- Họ không nói những câu như “đó không phải lĩnh vực của tôi” mà cứ thử và học
- Ngay cả với đoạn mã lần đầu tiếp xúc, họ cũng thường nhanh chóng trở thành người hiểu rõ nhất trong nhóm
Hãy luôn giúp đỡ người khác
- Một lập trình viên vẫn sẵn sàng giúp đỡ dù đang bận là một đồng đội tốt và cũng là một chuyên gia xuất sắc
- Sự tò mò và tinh thần hợp tác là phẩm chất thiết yếu của một lập trình viên giỏi
Hãy viết
- Những lập trình viên xuất sắc nói tốt và cũng biết diễn đạt suy nghĩ bằng văn bản
- Họ chia sẻ suy nghĩ qua blog, bài nói chuyện, hoạt động mã nguồn mở...
- Kỹ năng viết có liên hệ trực tiếp với cấu trúc tư duy
- Mã của người viết tốt thường có cấu trúc, rõ ràng và đôi khi còn sắc sảo
Đừng ngừng học hỏi
- Người không ngừng học bất kể tuổi tác mới là lập trình viên thực sự xuất sắc
- Họ không ngần ngại thử công cụ hay ngôn ngữ mới
- Họ không mù quáng chạy theo công nghệ mới mà tự phân tích ưu nhược điểm
- Dù còn trẻ, nếu rơi vào định kiến cố hữu thì sự phát triển cũng sẽ dừng lại
Đừng quá bận tâm đến vị thế
- Một lập trình viên giỏi sẵn sàng học hỏi từ bất kỳ ai, bất kể chức danh
- Họ giữ thái độ rằng ngay cả người mới vào nghề cũng có điều để mình học
- Họ tìm cảm hứng từ những cuộc trò chuyện với những người có góc nhìn mới
Hãy xây dựng danh tiếng
- Năng lực là quan trọng, nhưng việc để người khác biết đến năng lực đó cũng quan trọng không kém
- Danh tiếng là công cụ để mở rộng tầm ảnh hưởng
- Có thể xây dựng danh tiếng bằng những cách như:
- Tự tay tạo ra hoặc triển khai những dịch vụ quan trọng
- Phát triển những công cụ được biết đến rộng rãi
- Đóng góp cho các dự án mã nguồn mở nổi tiếng
- Viết những cuốn sách thường xuyên được trích dẫn
- Danh tiếng không thể xây trong một sớm một chiều, mà cần nỗ lực bền bỉ và thời gian
Hãy có sự kiên nhẫn
- Cần có sự kiên nhẫn với cả con người lẫn máy tính
- Người xung quanh không phải kẻ ngốc, chỉ là họ thiếu thông tin mà thôi
- Nếu thiếu kiên nhẫn, bạn sẽ dễ tích tụ bất mãn và khó cộng tác
- Muốn giải quyết vấn đề khó, cần có sự tập trung và bền bỉ
Đừng đổ lỗi cho máy tính
- Những lập trình viên giỏi nhất tuyệt đối không đổ lỗi cho hệ thống hay các yếu tố bên ngoài
- Những vấn đề trông có vẻ ngẫu nhiên thực ra đều có lý do logic
- Điều quan trọng là thái độ đào sâu đến cùng để tìm ra nguyên nhân
Hãy biết nói “tôi không biết”
- Đã có lúc tôi cố ý chờ đợi khoảnh khắc ứng viên nói “tôi không biết” trong buổi phỏng vấn
- Điều quan trọng không phải là câu trả lời, mà là thái độ
- Những ứng viên tốt nhất sẽ thừa nhận mình không biết rồi bắt đầu suy luận
- Thái độ thừa nhận không biết cho thấy khả năng học hỏi
- Người nói dối hoặc giả vờ biết sẽ gây ảnh hưởng tiêu cực đến cả đội
Đừng đoán mò
- Giống như triết lý của PEP 20, khi còn mơ hồ thì tuyệt đối đừng đoán
- Rủi ro của việc đoán:
- Nếu sai thì sinh ra bug
- Ngay cả khi đúng, bạn vẫn có thể tin vào một tiền đề sai và gây ra vấn đề về sau
- Nếu chưa chắc chắn, hãy:
- Hỏi
- Đọc tài liệu
- Dùng công cụ debug
- Tìm bằng chứng
Hãy giữ mọi thứ đơn giản
- Người thông minh viết mã thông minh, còn người xuất sắc viết mã đơn giản
- Mã đơn giản có lợi hơn rất nhiều cho việc bảo trì
- Chỉ khi biết phân biệt lúc nào cần phức tạp và lúc nào không thì mới là năng lực thực sự
Suy nghĩ kết lại
- Bài viết này không phải là một checklist, và kỹ nghệ phần mềm giỏi không phải là một cuộc thi
- Tuy vậy, đừng tự lừa dối bản thân rằng bạn có thể bỏ qua những phần việc khó
- Không có đường tắt nào để trở thành một lập trình viên xuất sắc
19 bình luận
Cảm ơn bạn vì bài viết rất hay.!!
Tôi thấy được an ủi bởi câu nói rằng bài viết này không phải là một danh sách kiểm tra, và được tiếp thêm can đảm bởi câu nói rằng không có đường tắt.
Nếu hiểu dự án của công ty,
thì dù trở thành lập trình viên senior ở bất kỳ lĩnh vực nào
dù lĩnh vực đó là firmware, app hay web,
có vẻ bạn sẽ đạt đến mức có thể debug để tìm ra vấn đề đã phát sinh như thế nào
chỉ bằng cách xem log debug của web, app hoặc firmware.
Tôi nhớ lại hành vi mà mình đã suy đoán trong buổi phỏng vấn.
Cá nhân tôi cũng xem trọng việc "luôn suy nghĩ mình đang tạo ra thứ gì".
Có vẻ như có một thuật ngữ hay là Critical Thinking.
Điều này thực sự đã giúp ích rất nhiều. Cảm ơn bạn vì bài viết hay.
Vậy thì cứ bảo LLM đọc tài liệu chính thức là được nhỉ!
RTFM: Hãy đọc tài liệu chính thức đi.
Dù nói không phải là checklist, nhưng có lẽ tôi nên lấy nó làm checklist cho mình.
Tôi rất đồng cảm với ý kiến rằng nhất định phải đọc tài liệu chính thức.
Khi mới dạy lập trình, tôi cảm thấy tố chất làm lập trình viên của một người lần đầu bộc lộ ở chỗ người đó có thể đọc kỹ thông báo lỗi hay không.
.... Những kẻ không có nhận thức cơ bản để thừa nhận rằng lỗi và bug luôn luôn tồn tại thì chính là lừa đảo.
Câu văn khó hiểu quá..
Trên web thì vậy.
Không phải tất cả, nhưng hầu hết đều là những điểm khiến tôi thấy đồng cảm.
Ý kiến trên Hacker News
Điều quan trọng nhất trong công việc là không suy đoán
Khi tiếp cận điều mới, thích đoán thử một chút trước khi đọc sâu tài liệu tham chiếu
Tốt hơn là tự tham chiếu trực tiếp source thay vì phụ thuộc vào Stack Overflow hay LLM
Những lập trình viên giỏi nhất giao tiếp và học hỏi từ mọi tầng lớp
Nếu biết tận dụng Stack Overflow tốt thì sẽ rất hữu ích
Những lập trình viên xuất sắc nhất vẫn có thể đạt thành tích nổi bật dù không có nền tảng CS
Ngoài lập trình, việc giao tiếp với domain business cũng rất quan trọng
Đọc và hiểu thông báo lỗi giúp ích rất nhiều cho việc giải quyết vấn đề
asdfđể quản lý phiên bản Python, Go, NodeJS, có thể giải quyết vấn đề thông qua thông báo lỗiasdflà gì? Cần phải xem cảnh báo.Ừm, tôi lại thấy thái độ không nhất quyết phải trở thành người giỏi nhất tuyệt đối có lẽ tốt hơn. Nào là viết lách... nào là giúp đỡ... nhưng hễ kiểu người như vậy thì...