Chương 3

Viết code không phải là công việc chính của kỹ sư phần mềm

Tôi vẫn nhớ lần đầu tiên ai đó hỏi tôi, "Bây giờ AI có thể viết code, điều đó có nghĩa là chúng ta có thể xây dựng mọi thứ nhanh gấp 10 lần không?"

Tôi cười. Không phải vì câu hỏi đó sai, mà vì - thành thật mà nói - đó chính là cách người ngoài ngành thường hiểu về việc phát triển phần mềm.

Vâng, AI có thể viết code. Nhưng viết code không phải là phần khó. Nó chưa bao giờ là vậy.

Sự thật là, nếu tất cả những gì tôi làm chỉ là viết code, tôi có thể sẽ mất việc sớm thôi. Code chỉ là một công cụ để giải quyết vấn đề của kỹ sư phần mềm. Công việc chính của kỹ sư phần mềm vẫn là giải quyết vấn đề, sử dụng những công cụ khác nhau để biến giải pháp thành sản phẩm phần mềm mà người khác có thể sử dụng được.

Đối với việc phát triển sản phẩm phần mềm, bạn dành nhiều thời gian hiểu vấn đề hơn là viết code. Bạn tranh luận về những sự đánh đổi với đồng nghiệp, tranh cãi với chính mình trong quá khứ khi xem lại code cũ, và đôi khi chỉ nhìn chằm chằm vào một biểu đồ nào đó và cố gắng hiểu độ phức tạp của giải pháp. Code? Nó chỉ là bước cuối cùng.

Viết code là nền tảng của việc xây dựng sản phẩm phần mềm và giải quyết các vấn đề kỹ thuật. Trước khi có làn sóng AI, "khả năng viết code" là huy hiệu danh dự của một kỹ sư phần mềm. Kỹ sư được kiểm tra khả năng viết code trong quá trình phỏng vấn, đo lường bản thân bằng số lượng merge requests được tạo ra, và tự hào vì điều đó. Bạn viết càng nhiều code, bạn càng có vẻ có giá trị.

Và trong một thời gian, điều đó có ý nghĩa. Các công cụ bị hạn chế. Nếu bạn không thể viết code, bạn không thể xây dựng sản phẩm phần mềm.

Nhưng ngay cả khi đó, những kỹ sư tốt nhất không phải là những người biết nhiều cú pháp nhất. Họ là những người hiểu rõ lý do đằng sau một giải pháp cụ thể. Họ đào sâu vào nhu cầu nghiệp vụ, hiểu người dùng, và tìm ra giải pháp tốt nhất, đứng vững trước thử thách về mặt thời gian. Họ cũng có kiến thức sâu rộng về công cụ và ngôn ngữ lập trình họ sử dụng, biết khi nào nên áp dụng các kỹ thuật cụ thể, và có thể đưa ra quyết định tốt nhất dựa trên bối cảnh họ đang gặp phải.

Rồi AI xuất hiện và làm cho sự thật này bị thay đổi.

AI bây giờ có thể viết rất nhiều code với một prompt đủ tốt. Nó có thể xây dựng ứng dụng từ đầu, viết tests, chuyển đổi giữa các frameworks. Những gì nó chưa thể làm tốt là việc giải quyết vấn đề trong từng bối cảnh cụ thể. Nó không biết mục tiêu của sản phẩm của bạn. Nó không nói chuyện với khác hàng. Nó chưa học từ nỗi đau của việc sửa lỗi hoặc chi phí của ra mắt một thay đổi gây ra sự cố trên production.

Điều này có nghĩa là công việc của kỹ sư phần mềm không còn về việc là người viết code nhanh nhất trong phòng, và thực tế, nó cũng chưa bao giờ thực sự là vậy.

Công việc thực sự của kỹ sư phần mềm là khả năng:

  • Hiểu vấn đề một cách rõ ràng
  • Hiểu những đánh đổi khi chọn các giải pháp khác nhau
  • Hướng dẫn AI (hoặc đồng nghiệp) hướng tới những giải pháp chất lượng
  • Làm chủ kết quả, không chỉ code

Viết code là một phần của của quá trình, nhưng nó không phải là trung tâm.

Vậy, làm thế nào để bạn phát triển trong bức tranh mới này?

Giỏi trong việc hiểu vấn đề

Đừng bắt đầu với "Làm thế nào để tôi làm cái này?".

Bắt đầu với "Tại sao điều này quan trọng?".

Hiểu bối cảnh, mói chuyện với PMs, nói chuyện với người dùng, vẽ luồng dữ liệu, v.v. Bạn nắm càng nhiều thông tin, giải pháp bạn đưa ra càng chính xác và việc prompt AI sẽ càng hiệu quả hơn.

Đối xử với việc code như nói chuyện với người khác

Code tốt không phải là code nhìn có vẻ thông minh nhất. Code tốt là code mà mọi người có thể hiểu sau này, và không cần phải gào thét trước màn hình khi đọc nó.

Chắc chắn, AI có thể giúp bạn viết code nhanh hơn. Nhưng vẫn là công việc của bạn để đảm bảo cấu trúc hay code có ý nghĩa, đúng nghiệp vụ, và đồng nghiệp (hoặc bản thân bạn trong tương lai) sẽ có thể hiểu được tại sao code lại như vậy.

Thực hành việc lựa chọn đánh đổi

AI có thể cho bạn ý tưởng, nhưng quyết định cuối cùng vẫn thuộc về bạn.

Bạn chọn xử lý nhanh với nợ kỹ thuật hay giải pháp dài hạn nhưng mất nhiều thời gian? Thêm bảng mới hay tái sử dụng một cái khác đã tồn tại?

Một kỹ sư giỏi biết khi nào giữ mọi thứ đơn giản và khi nào thì cần sự phức tạp.

Hướng dẫn AI

AI không phải phép màu, nó không đoán được những gì bạn nghĩ. Hãy nghĩ về nó như một người đồng nghiệp thông minh nhưng thiếu kinh nghiệm. Nó có thể giúp rất nhiều, nhưng chỉ khi bạn đưa ra định hướng rõ ràng.

Chia nhỏ vấn đề. Kiểm tra công việc của nó. Đừng ngại bắt đầu lại quá trình từ đầu nếu kết quả không đạt kì vọng của bạn.

Tiếp tục học, nhưng chuyển sự tập trung vào những thứ quan trọng hơn

Học debug, đọc hệ thống, và mô hình dữ liệu, nghiên cứu design patterns và kiến trúc hạ tầng.

Việc là chuyên gia trong việc sử dụng một framework hay thư viện nào đó sẽ dần bớt quan trọng, điều quan trọng hơn là biết khi nào và tại sao sử dụng chúng. AI có thể viết code, bạn vẫn chịu trách nhiệm cho việc tại sao lại có đoạn code đó.

Trong thế giới mới này, những kỹ sư giỏi là những người suy nghĩ như những người xây dựng sản phẩm, không chỉ tập trung vào việc viết code. Nếu đó là bạn, bạn không thể thay thế.

Bạn thích cuốn sách này?

Hãy cho tôi biết bạn nghĩ gì. Chia sẻ phản hồi, suy nghĩ, và câu hỏi của bạn trong form dưới đây.

Chia sẻ cảm nhận