Khi tôi trở thành lập trình viên chuyên nghiệp, tôi chỉ biết một ngôn ngữ:
DBase.
À, hai nếu tính cả BASIC, nhưng càng ít nhắc đến nó càng tốt.
Bạn có thể viết một ứng dụng đầy đủ chức năng bằng DBase và phân phối nó dưới dạng file exe.
Bạn cũng cần biết chút ít về cấu trúc dữ liệu.
Rào cản gia nhập ngành lúc đó không quá cao.

Ngày nay bạn cần gì để viết một ứng dụng web?
Bạn sẽ cần HTML, CSS và Javascript.
Bạn sẽ cần sử dụng một framework front-end như React.
Bạn sẽ cần học một ngôn ngữ back-end, mà ngày nay cũng có thể là Javascript, hay còn gọi là Node.
Hoặc bạn có thể dùng Java hay Python.
Bạn chắc chắn sẽ dùng cơ sở dữ liệu SQL, nên cần biết SQL.
Bạn sẽ cần expose services qua REST, nên cần một framework REST API.
Bạn sẽ cần lưu code trong hệ thống quản lý phiên bản, mà ngày nay thường là Git.
Để triển khai ứng dụng, bạn thường cần biết về dịch vụ đám mây, Docker, Kubernetes.

Ứng dụng của bạn sẽ cần triển khai bảo mật và xác thực, với chuẩn OAuth2.
Bạn cũng cần hệ thống CI/CD, trước đây là Jenkins, nhưng giờ đây thay đổi tùy platform.
Bạn cần học Cloud Formation trên AWS, Bicep trên Azure để triển khai infrastructure as code.

Đây không phải là stack cao cấp.
Đây là bộ kỹ năng được kỳ vọng ở một “full stack developer“.
Là một nhà phát triển phần mềm, tôi luôn biết rằng bạn không thể đứng yên.
Những lập trình viên COBOL ngày xưa đã có thời gian dễ thở, nhưng rồi bạn sẽ mắc kẹt trên một hòn đảo đang dần biến mất.
Vì vậy, việc học hỏi không ngừng luôn là điều tối cần thiết để duy trì sự phù hợp.

Cuối cùng tôi chuyên sâu vào tích hợp và tự động hóa doanh nghiệp, học jBPM, Bonita, Activiti, nhưng ngay cả ở đó thời thế cũng thay đổi với các cách tiếp cận mới khiến các giải pháp kiểu BPM trở nên lỗi thời.

Mặc dù tôi đã nhanh chóng tiếp thu các bộ kỹ năng mới, việc theo kịp các yêu cầu kỹ năng ngày càng khó khăn.
Và nếu tôi còn gặp khó khăn thì tình hình với các developer mới vào nghề hẳn phải giống như leo núi Everest.
Chưa kể đến việc AI đang xâm lấn, khiến các vị trí entry-level càng khó khăn hơn.

Có một nguy cơ khi nghĩ hiện tại giống như quá khứ.
Tôi đã từng nghĩ tương lai sẽ dễ dàng hơn cho developer, công cụ tốt hơn, cuộc sống dễ dàng hơn, nhưng bằng chứng dường như không chỉ ra điều đó.
AI ở một số khía cạnh làm mọi thứ dễ dàng hơn, nhưng cũng mờ ám hơn, trao cho mọi người sức mạnh mà không rèn giũa họ bằng kinh nghiệm phần mềm.

Liệu chúng ta có nên kỳ vọng mọi người trở thành “jack of all trades”, có thể xử lý mọi thứ từ front-end đến thiết kế hạ tầng đám mây?
Khi tôi bắt đầu, mọi thứ đều trên một máy PC, ứng dụng được biên dịch thành một file duy nhất.
Ngày nay chúng ta có các cluster phân tán high availability, pipeline triển khai phức tạp và các quality gate.
Việc developer ít nhất hiểu toàn bộ stack, có tiếp xúc với nó là tốt, nhưng việc hiểu sâu toàn bộ stack đã trở nên không thực tế.

Liệu chúng ta có đang chặn đứng pipeline của các developer trẻ?
Chúng ta có đang đặt quá nhiều kỳ vọng vào họ?
Có cách nào để giảm bớt những kỳ vọng này trong quy trình tuyển dụng không?
Hay chúng ta nghĩ AI sẽ là viên đạn bạc, loại bỏ nhu cầu lập trình hoàn toàn?

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!