Nhà phát triển đã chết. Nhà phát triển muôn năm.
7 giai đoạn đau buồn của nhà phát triển trong kỷ nguyên AI
Tại sao lại hỏi vậy? Vì mọi nhà phát triển tôi biết hiện đang trải qua điều gì đó. Không giống nhau với tất cả, nhưng nó gieo vần.
Có người tức giận. Có người im lặng theo cách khiến tôi lo lắng. Có người giả vờ như chẳng có gì thay đổi, và vài người đã bước sang bờ bên kia và không ngừng kể cho bạn nó tuyệt thế nào.
Vấn đề là thế này: tất cả họ đang mô tả cùng một sự kiện. Sự kiện đó là thứ bạn dành nhiều năm để học giờ đây máy móc có thể làm được rất nhiều. Không phải tất cả. Nhưng đủ nhiều để "tôi là người viết code" không còn là câu trả lời trọn vẹn cho câu hỏi "bạn làm nghề gì?"
Tôi đã chứng kiến điều này diễn ra ở nhiều đội, và nó theo một khuôn mẫu đủ rõ để có thể dự đoán. Tôi gọi đó là bảy giai đoạn đau buồn của một nhà phát triển trước AI. Không phải các giai đoạn lâm sàng. Mà là các giai đoạn nghề nghiệp. Rất có thể bạn sẽ tìm thấy mình ở đây, và biết mình đang ở giai đoạn nào là điều quan trọng — vì ngành này không chờ bạn đau buồn xong.
Giai đoạn 1: Phủ nhận — "Chỉ là một công cụ tự động hoàn thành cầu kỳ."
Phủ nhận là giai đoạn dễ chịu. Tin rằng đầu ra là rác thì dễ hơn là đối diện với ý nghĩa của chúng. Vì vậy bạn không thử. Bạn lướt qua vài ví dụ tệ và xếp cả danh mục vào mục "đồ chơi".
Dấu hiệu là bạn có quan điểm mạnh mẽ về một công cụ mà bạn chưa từng chạy trên công việc thực. Bạn không đang đánh giá nó; bạn đang bảo vệ một lập trường.
Phủ nhận chẳng tốn gì cho đến khi nó tốn rất nhiều. Đội đầu tiên thực sự quen với những công cụ này sẽ nhanh hơn, và bạn sẽ nhận ra. Đó là khoảnh khắc sự phủ nhận vỡ tan — không phải vì bạn bị thuyết phục, mà vì bằng chứng quá ồn ào để phớt lờ.
Giai đoạn 2: Giận dữ — "Đây là cuộc đua xuống đáy."
Cơn giận thường là chính đáng, và đó chính là điều khiến nó nguy hiểm.
Bạn giận công cụ vì nó giỏi những thứ sai. Giận nhà cung cấp vì thổi phồng quá mức. Giận lãnh đạo vì tin vào các bản demo. Giận anh chàng junior dán code mà không giải thích được. Và giận chính mình một chút, vì cảm thấy lỗi thời.
Một phần cơn giận đó là nỗi bất bình chính đáng. Công cụ bị bán quá lời. Các bản demo được chọn lọc. Có nghề thực sự trong việc bạn làm mà marketing không thừa nhận. Không điều nào trong số đó là sai.
Cái bẫy là cơn giận tạo cảm giác hiệu quả nhưng thực ra không phải. Đó là giai đoạn nhà phát triển ồn ào trên mạng và im lặng ở chỗ làm. Cũng là giai đoạn việc học dừng lại — và khoảng cách giữa bạn với công cụ bắt đầu nhân lên theo hướng sai.
Giai đoạn 3: Mặc cả — "Tôi chỉ dùng nó cho những việc nhàm chán."
Giai đoạn thương lượng.
Tôi chỉ dùng nó cho boilerplate. Tôi sẽ không bao giờ để nó chạm vào hệ thống cốt lõi. Tôi sẽ giữ công việc thật của mình offline. Nếu tôi học prompt engineering, tôi sẽ là một trong những người sống sót.
Cuộc mặc cả luôn thất bại vì cùng một lý do: công cụ không tôn trọng ranh giới của bạn, và thị trường cũng vậy. Ranh giới bạn vẽ — "ở đây được, nhưng không được ở kia" — vô hình với tất cả trừ bạn. Đội của bạn không thấy. Quản lý của bạn không thấy. Công cụ chắc chắn không thấy.
Mặc cả không sai. Đó là cách hầu hết mọi người bắt đầu dùng nó, và bắt đầu là tốt. Chỉ là nó không phải chiến lược. Nó là cách để công cụ vào trong khi bạn tự nhủ mình vẫn kiểm soát. Rồi cuối cùng sự phân biệt đó không còn đứng vững.
Giai đoạn 4: Trầm cảm — "Hai mươi năm học tập để làm gì?"
Đây là giai đoạn không ai viết về, và là giai đoạn mà hầu hết nhà phát triển thực sự đang ở trong.
Không phải trầm cảm lâm sàng. Mà là đau buồn nghề nghiệp. Danh tính của bạn được xây trên "tôi là người viết code." Nếu code có thể được tạo ra, câu hỏi trở thành: chính xác thì bạn là ai? Và câu hỏi đó không có câu trả lời dễ chịu trong tháng đầu tiên.
Đây là nơi các nhà phát triển mắc kẹt. Họ ngừng ship. Họ ngừng học. Họ lặng lẽ rút lui, và không ai để ý trong một thời gian vì đoạn code họ lẽ ra viết vẫn được viết ra — bởi công cụ, một cách tệ hại, không có họ.
Nhìn từ bên ngoài như sự lười biếng. Từ bên trong lại như nỗi đau buồn. Nếu bạn quản lý người, đây là điều bạn nên để mắt, vì đó là giai đoạn khiến bạn mất đi những người giỏi nhất.
Và một điều nữa: lời động viên không có tác dụng ở đây. Nói với ai đó ở giai đoạn này rằng "AI chỉ là công cụ" thì đúng về mặt kỹ thuật nhưng vô dụng về mặt cảm xúc. Đó là thuốc của giai đoạn năm mang cho người ở giai đoạn bốn.
Giai đoạn 5: Chấp nhận — "OK. Nó là một công cụ. Một phần của nó thực sự tốt."
Chấp nhận không phải đầu hàng. Đó là giai đoạn đầu tiên bạn làm việc cùng thực tại thay vì chống lại nó.
Bạn tìm ra nơi nó thực sự giúp ích, và gần như luôn là thứ code bạn chưa bao giờ thích viết. Glue code. Test. Migration. Refactor. Tám mươi phần trăm công việc vốn luôn là ý tưởng vui của người khác.
Và bạn tìm ra nơi nó là mối nguy: kiến trúc, bất biến, phán đoán production — bất cứ nơi nào mà sai một cách tự tin là đắt đỏ. Lỗi thường không phải là công cụ viết code tệ. Mà là nó viết code tự tin, và tự tin không giống với đúng đắn.
Chấp nhận là nơi bạn thành thật về điều mình thực sự làm cả ngày. Điều bất ngờ là câu trả lời thành thật chưa bao giờ là "gõ code." Nó luôn là "đảm bảo thứ đúng đắn được xây dựng và tiếp tục hoạt động." Việc gõ code chỉ là cơ chế giao hàng.
Giai đoạn 6: Tái tạo — Từ "Tôi viết code" đến "Tôi quyết định cái gì được xây và nó được xác minh thế nào."
Đây là nơi sự tiến hóa của nhà phát triển thực sự diễn ra.
Đơn vị công việc không còn là những dòng code mà trở thành những quyết định được đưa ra và được xác minh. Bạn trở thành người nêu rõ ý định, xem xét đầu ra của máy và bắt lấy những sai lầm đầy tự tin. Bạn trở thành người biết hệ thống phải làm gì và giữ nó đúng với điều đó.
Giai đoạn này khó chịu vì một lý do khác: các thước đo cũ không còn áp dụng. Số dòng code. Commit. Pull request. Tất cả đều đo thứ vừa trở nên rẻ. Công việc mới được đo bằng kết quả — uptime, tính đúng đắn, tốc độ doanh nghiệp có thể di chuyển — và kết quả khó khoe hơn trong buổi standup.
Một số nhà phát triển không bao giờ tới được đây. Họ tiếp tục định nghĩa mình bằng đơn vị công việc cũ và cảm nhận giá trị rút cạn khỏi nó trong thời gian thực.
Giai đoạn 7: Nghề mới — "Công việc không chết. Nó dịch chuyển lên trên stack."
Giai đoạn cuối không phải chấp nhận. Mà là một danh tính mới.
Một kỹ sư có phán đoán tốt và công cụ mạnh giờ có thể làm công việc trước đây cần cả một đội. Nghe như một mối đe dọa. Thực ra đó chính là định nghĩa của đòn bẩy — và đòn bẩy luôn là chiến lược sự nghiệp thực sự trong nghề này.
Nguồn tài nguyên khan hiếm không còn là việc gõ phím. Mà là gu thẩm mỹ, ngữ cảnh và phán đoán. Biết điều gì đáng xây dựng. Biết điều gì có thể hỏng. Biết khi nào câu trả lời tự tin là sai. Đó là những thứ mà model không có, và chính là những thứ bạn đã tích lũy nhiều năm mà không nhận ra chúng mới là điểm cốt lõi.
Phát triển phần mềm đang chuyển thành quản trị phần mềm. Việc sản xuất code đang trở thành hàng hóa. Việc sản xuất sự chắc chắn — quyết định xây gì, xác minh nó, chịu trách nhiệm khi nó sai — đang trở thành công việc.
Những nhà phát triển đi qua cả sáu giai đoạn trước giai đoạn này là những người được định nghĩa nghề nghiệp sẽ trở thành gì. Những người không đi qua thì bị nó định nghĩa.
Ngành công nghiệp không chờ đợi
Mỗi tháng ranh giới lại dịch chuyển. Tôi sẽ không nói đó là tin tốt, vì phần đau buồn của nó là thật, và giả vờ khác đi là xúc phạm những người đang trải qua nó.
Nhưng đây là điều tôi đã quan sát: những nhà phát triển đang thịnh vượng không bỏ qua các giai đoạn. Họ đi qua chúng — đôi khi theo thứ tự, đôi khi nhanh hơn mong đợi. Họ để danh tính cũ chết đi, và xây một danh tính mới không phụ thuộc vào việc là người gõ code.
Phần đang đau buồn trong bạn là phần từng gắn bó với định nghĩa cũ của công việc. Đó không phải yếu đuối. Đó là cái giá của việc đã từng quan tâm đến nghề.
Định nghĩa mới của công việc tốt hơn. Nó trả cao hơn, khó tự động hóa hơn, và cần phán đoán mà bạn đã xây dựng suốt sự nghiệp — phán đoán vốn chưa bao giờ thực sự là về code.
Hãy buông cái cũ đi. Còn việc phải làm.
Nghĩ rằng lập luận này phù hợp với sự kiện của bạn? Hãy kể cho tôi về khán phòng — lịch trình có chọn lọc.
Bắt đầu trò chuyện