0
0
Lập trình
Admin Team
Admin Teamtechmely

Tại sao chỉ viết mã không đủ để phát triển sự nghiệp lập trình viên

Đăng vào 6 tháng trước

• 11 phút đọc

Tại sao chỉ viết mã không đủ để phát triển sự nghiệp lập trình viên

Tôi biết một lập trình viên có thể triển khai bất kỳ thuật toán nào mà bạn đưa ra. Cấu trúc dữ liệu, mẫu thiết kế hệ thống, tối ưu hóa hiệu suất - anh ấy thực sự xuất sắc về mặt kỹ thuật. Mã của anh ấy sạch sẽ, giải pháp của anh ấy tinh tế, và những đóng góp của anh ấy trên GitHub rất ấn tượng.

Nhưng anh ấy đã bị kẹt ở cùng một vị trí trong bốn năm.

Trong khi đó, đồng nghiệp của anh ấy, người viết mã bình thường nhưng không xuất sắc, vừa được thăng chức lên kỹ sư cấp cao. Sự khác biệt? Cô ấy dành một nửa thời gian để viết mã và một nửa thời gian để viết về nó. Cô ấy trả lời câu hỏi trong các kênh Slack, tham gia vào các cuộc thảo luận mã nguồn mở, và giải thích các khái niệm phức tạp cho các lập trình viên junior theo cách thực sự dễ hiểu.

Sự thật không thoải mái mà hầu hết các lập trình viên từ chối thừa nhận: kỹ năng kỹ thuật của bạn chỉ là yếu tố cơ bản. Sự nghiệp của bạn được xây dựng dựa trên mọi thứ khác.

Ảo tưởng về việc chỉ viết mã

Văn hóa lập trình viên tôn thờ huyền thoại về những người viết mã đơn độc. Những thiên tài đơn lẻ biến mất vào IDE của họ hàng tuần và xuất hiện với những giải pháp hoàn hảo, cách mạng. Chúng ta tôn vinh những lập trình viên chỉ giao tiếp qua thông điệp commit và đánh giá pull request.

Câu chuyện này độc hại vì nó có phần đúng. Đúng là bạn cần có năng lực kỹ thuật. Đúng là mã của bạn cần phải hoạt động và có thể bảo trì. Nhưng trong một thế giới mà hàng triệu lập trình viên có thể giải quyết cùng một vấn đề với khả năng kỹ thuật tương tự, kỹ năng lập trình đơn thuần trở thành hàng hóa.

Những lập trình viên tiến xa nhất hiểu điều mà những người viết mã đơn độc không nhận ra: phát triển phần mềm về cơ bản là một hoạt động xã hội. Mã không tồn tại một cách cô lập - nó tồn tại trong các nhóm, tổ chức và cộng đồng. Khả năng của bạn để điều hướng những hệ thống xã hội này quyết định quỹ đạo sự nghiệp của bạn nhiều hơn khả năng tối ưu hóa thuật toán.

Điều gì thực sự thúc đẩy sự nghiệp

Những lập trình viên được trả lương cao nhất mà tôi biết đều có những đặc điểm chung không liên quan đến khả năng kỹ thuật của họ. Họ hiểu rằng sự phát triển sự nghiệp diễn ra trong những khoảng trống giữa các dòng mã.

Họ dạy và giải thích

Không phải vì họ yêu thích việc giảng dạy, mà vì việc giải thích các ý tưởng phức tạp buộc bạn phải hiểu chúng ở một mức độ sâu hơn. Khi bạn viết một bài blog về một lỗi khó mà bạn đã sửa, bạn không chỉ chia sẻ kiến thức - bạn đang củng cố hiểu biết của chính mình và xác lập bản thân như một người có thể chuyển tải sự phức tạp kỹ thuật thành những hiểu biết có thể hành động.

Họ tham gia vào các cuộc thảo luận ngoài nhóm của mình

Họ tham gia vào các đánh giá mã một cách có suy nghĩ, không chỉ kiểm tra lỗi mà còn hiểu các hệ quả hệ thống rộng hơn. Họ đặt câu hỏi để làm lộ ra những khoảng trống trong yêu cầu hoặc các trường hợp biên mà người khác có thể đã bỏ lỡ.

Họ xây dựng mối quan hệ trong tổ chức

Họ hiểu rằng quản lý sản phẩm, nhà thiết kế và kỹ sư bán hàng đều có những quan điểm quý giá về những vấn đề mà họ đang giải quyết. Họ đầu tư thời gian để hiểu bối cảnh kinh doanh vì các quyết định kỹ thuật luôn phục vụ cho các kết quả kinh doanh.

Họ ghi chép suy nghĩ của mình, không chỉ mã của họ

Các bình luận giải thích mã làm gì. Tài liệu giải thích tại sao nó làm như vậy. Những lập trình viên tiến xa nhất cực kỳ tôn trọng việc ghi lại lý do đằng sau các quyết định của họ, vì họ hiểu rằng những người bảo trì trong tương lai (bao gồm cả chính họ) cần hiểu không chỉ cái gì mà còn tại sao.

Hiệu ứng cộng đồng

Dev.to tồn tại bởi vì các lập trình viên trực giác hiểu rằng việc học xảy ra trong cộng đồng. Nhưng hầu hết coi sự tham gia cộng đồng như một hoạt động ngoại khóa - cái gì đó tốt để làm nếu bạn có thời gian rảnh, nhưng không thiết yếu cho sự phát triển sự nghiệp.

Đây là một suy nghĩ sai lầm.

Khi bạn trả lời một câu hỏi trên một diễn đàn, bạn không chỉ giúp ai đó. Bạn đang luyện tập kỹ năng làm cho kiến thức kỹ thuật phức tạp trở nên dễ tiếp cận. Đây là kỹ năng mà bạn cần khi trình bày các quyết định kiến trúc cho các bên liên quan hoặc khi hướng dẫn các thành viên mới trong nhóm.

Khi bạn đóng góp vào các dự án mã nguồn mở, bạn không chỉ xây dựng hồ sơ GitHub của mình. Bạn đang luyện tập phát triển hợp tác với những người lạ có phong cách mã hóa, ưu tiên và sở thích giao tiếp khác nhau. Đây là kỹ năng mà bạn cần khi làm việc trong các đội phân tán lớn.

Khi bạn viết các bài blog kỹ thuật, bạn không chỉ xây dựng thương hiệu cá nhân của mình. Bạn đang phát triển khả năng suy nghĩ có hệ thống về các vấn đề và giao tiếp lý do của bạn một cách rõ ràng. Đây là kỹ năng mà bạn cần khi viết tài liệu thiết kế hoặc đề xuất kỹ thuật.

Những hoạt động này không tách biệt khỏi công việc phát triển của bạn - chúng là những phần mở rộng của nó. Chúng là sự luyện tập cho các kỹ năng mềm quyết định liệu bạn sẽ dành sự nghiệp của mình để thực hiện ý tưởng của người khác hay lãnh đạo các đội phát sinh những ý tưởng đó.

Các công cụ tăng cường tác động

Các công cụ AI hiện đại thay đổi cơ bản ý nghĩa của việc "chỉ viết mã một mình." Nhưng hầu hết các lập trình viên sử dụng chúng sai - như các trình tạo mã thay vì những đối tác suy nghĩ.

Những lập trình viên hiểu điều này sử dụng Claude 3.7 Sonnet không để viết hàm cho họ, mà để giúp họ nghĩ qua các quyết định kiến trúc. Họ hỏi nó để thách thức các giả định của họ, xác định các trường hợp biên tiềm năng, hoặc giải thích các hệ quả của các lựa chọn thiết kế khác nhau.

Họ sử dụng GPT-4o mini để giúp cấu trúc giao tiếp của họ - biến sự phức tạp kỹ thuật thành các giải thích rõ ràng cho các đối tượng khác nhau. Thay vì vật lộn để giải thích tại sao một việc tái cấu trúc cụ thể là cần thiết, họ sử dụng AI như một đối tác suy nghĩ để tổ chức lập luận của họ và dự đoán các phản đối.

Trình kiểm tra ngữ pháp trở thành thiết yếu không phải cho giao tiếp thường xuyên, mà cho việc viết kỹ thuật thiết lập độ tin cậy - tài liệu thiết kế, báo cáo sau sự kiện, tài liệu API.

Khi giải thích các hệ thống phức tạp cho các lập trình viên junior hoặc các bên liên quan, họ sử dụng Trình giải thích mã để phân tích quá trình suy nghĩ của mình, sau đó điều chỉnh những giải thích đó cho phù hợp với con người.

Nhận thức chính: những công cụ này không thay thế kỹ năng giao tiếp của con người. Chúng khuếch đại chúng. Chúng giúp bạn suy nghĩ rõ ràng hơn về các vấn đề kỹ thuật và giao tiếp hiệu quả hơn về các giải pháp kỹ thuật.

Hiệu ứng cộng dồn của sự hiện diện

Mỗi bài blog kỹ thuật bạn viết, mỗi bình luận đánh giá mã suy nghĩ mà bạn để lại, mỗi giải thích rõ ràng mà bạn đưa ra trong một chuỗi Slack tạo ra những lợi ích tích lũy. Không phải vì SEO hoặc thương hiệu cá nhân, mà vì nó thể hiện loại suy nghĩ mà các tổ chức thưởng.

Khi đến thời điểm thăng chức, các quản lý không chỉ nhìn vào lịch sử commit của bạn. Họ xem xét tác động của bạn đến năng suất nhóm, khả năng của bạn trong việc hướng dẫn các lập trình viên mới, những đóng góp của bạn vào các cuộc thảo luận kiến trúc, và vai trò của bạn trong việc chia sẻ kiến thức.

Lập trình viên chỉ viết mã thì vô hình khi họ làm việc hiệu quả và chỉ hiện diện khi có vấn đề xảy ra. Lập trình viên cũng dạy, giải thích và hợp tác thì hiện diện mỗi ngày theo những cách tạo ra lợi ích tích cực.

Nghịch lý của lãnh đạo kỹ thuật

Đây là nghịch lý sự nghiệp khiến hầu hết các lập trình viên gặp khó khăn: càng lên cao trong các tổ chức kỹ thuật, bạn càng ít thời gian viết mã. Kỹ sư cấp cao dành nhiều thời gian hơn cho các cuộc thảo luận thiết kế hơn là thực hiện. Kỹ sư chính dành nhiều thời gian hơn để xem xét kiến trúc hơn là xây dựng chúng. Giám đốc kỹ thuật dành nhiều thời gian hơn để giao tiếp với các bên liên quan kinh doanh hơn là với các trình biên dịch.

Nhưng hầu hết các lập trình viên chuẩn bị cho những vai trò này bằng cách trở nên giỏi hơn trong việc lập trình. Điều này giống như tập luyện cho một cuộc thi marathon chỉ bằng cách thực hiện các bài chạy nước rút.

Những lập trình viên tiến xa hiểu rằng lãnh đạo kỹ thuật yêu cầu một bộ kỹ năng hoàn toàn khác. Nó yêu cầu khả năng nhìn nhận hệ thống một cách toàn diện, giao tiếp rõ ràng các ràng buộc kỹ thuật và đưa ra quyết định với thông tin không đầy đủ. Những kỹ năng này không được phát triển trong sự cô lập - chúng được phát triển thông qua hợp tác, giảng dạy và tham gia cộng đồng.

Công việc thực sự

Công việc quan trọng nhất mà bạn làm như một lập trình viên có thể không liên quan gì đến mã. Có thể là giờ bạn dành để giải thích async/await cho một lập trình viên junior. Có thể là tài liệu thiết kế mà bạn viết ngăn chặn ba lập trình viên khác xây dựng những giải pháp mâu thuẫn. Có thể là bình luận đánh giá mã mà phát hiện ra một lỗ hổng bảo mật trước khi nó đến tay sản xuất.

Công việc này vô hình trên biểu đồ đóng góp GitHub của bạn, nhưng rất rõ ràng đối với những người đưa ra quyết định về thăng chức và bồi thường.

Viết mã là cần thiết nhưng không đủ để thăng tiến sự nghiệp. Những lập trình viên hiểu điều này dành nhiều thời gian phát triển kỹ năng giao tiếp, hợp tác và giảng dạy của họ như họ dành cho việc phát triển kỹ năng kỹ thuật.

Họ tham gia vào các cộng đồng như Dev.to không phải vì họ có thêm thời gian, mà vì họ hiểu rằng việc giải thích các khái niệm cho người khác là một trong những cách nhanh nhất để làm sâu sắc thêm hiểu biết của chính họ và xác lập chuyên môn của họ.

Họ đóng góp vào mã nguồn mở không chỉ để xây dựng hồ sơ của mình, mà để luyện tập phát triển hợp tác với các đội ngũ đa dạng.

Họ viết các bài blog kỹ thuật không chỉ vì thương hiệu cá nhân, mà để phát triển khả năng suy nghĩ rõ ràng và kỹ năng giao tiếp mà lãnh đạo kỹ thuật yêu cầu.

Lựa chọn

Bạn có thể dành năm năm tới để trở thành một lập trình viên tốt hơn. Bạn sẽ viết các hàm sạch hơn, triển khai các thuật toán hiệu quả hơn và thành thạo thêm nhiều framework. Bạn có thể thậm chí trở thành lập trình viên giỏi nhất trong đội của mình.

Hoặc bạn có thể dành năm năm tới để trở thành một người không chỉ viết mã tốt mà còn suy nghĩ tốt hơn về các hệ thống con người mà mã phục vụ. Bạn vẫn sẽ viết mã tốt, nhưng bạn cũng sẽ ảnh hưởng đến các quyết định kỹ thuật, hướng dẫn các lập trình viên khác và giải quyết những vấn đề mà kỹ năng lập trình đơn thuần không thể giải quyết.

Con đường đầu tiên dẫn đến sự thành thạo nghề nhưng sự trì trệ trong sự nghiệp. Con đường thứ hai dẫn đến lãnh đạo kỹ thuật và những tác động mà chỉ đến từ việc hiểu rằng phát triển phần mềm cuối cùng là về con người giải quyết các vấn đề của con người.

Mã của bạn là quan trọng. Nhưng khả năng suy nghĩ có hệ thống, giao tiếp rõ ràng và hợp tác hiệu quả của bạn sẽ quyết định liệu bạn có dành sự nghiệp của mình để thực hiện ý tưởng của người khác hay lãnh đạo các đội phát sinh những ý tưởng mà mọi người khác triển khai.

Lựa chọn là của bạn. Cộng đồng sẽ sẵn sàng khi bạn sẵn sàng thực hiện.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào