Vai trò của lập trình viên đã thay đổi đáng kể trong hai thập kỷ qua. Mặc dù trước đây, các nhà phát triển phần lớn kỹ năng công việc được mong đợi là viết code, sau đó triển khai các bước để chạy. Nhưng ngày nay, mã chỉ là một phần nhỏ trong những kỹ năng mà các nhà phát triển cần có.
Điều này sẽ giúp nâng cấp khả năng viết code của bạn lên một tầm cao mới và sẽ cần đến nhiều kỹ năng liên quan đến các khía cạnh hoạt động của mã hơn, không là chỉ riêng lập trình.
Chúng ta đã chuyển sang thời kỳ mà các lập trình viên không chỉ được yêu cầu viết mã mà còn phải vận hành nó. Điều này có nghĩa là tất nó bao gồm tất cả các khía cạnh liên quan đến quá trình sản xuất — từ chất lượng và hiệu suất, đến bảo mật, tất cả đều cần được chú trọng. Ví dụ, kỹ năng sử dụng một ngôn ngữ lập trình cụ thể sẽ chuyển đổi từ một kỹ năng quan trọng thành một kỹ năng vô định.
Bạn có nhớ thời mà các nhà quản lý tuyển dụng tìm kiếm là các lập trình viên Java hoặc Python và điều này ảnh hưởng đến khả năng tuyển dụng. Vâng không còn nữa! Các kỹ sư ngày nay được tuyển dụng thường ít hoặc không còn quá chú trọng đến ngôn ngữ lập trình mà họ đã thành thạo.
Ngày nay, các kỹ năng cốt lõi mà các lập trình viên cần thể hiện để thực sự có thể được tuyển dụng là các kỹ năng có thể chuyển đổi về mặt vận hành. Chuyên môn về nền tảng, sắp xếp và vận hành kinh doanh đã trở thành những kỹ năng quan trọng hơn nhiều đối với các tổ chức kỹ thuật ngày nay. Vậy điều này ảnh hưởng như thế nào đến vị trí công việc liên quan và tuyển dụng?
Phát triển các kỹ năng tuyển dụng trọng yếu
Để có thể tìm được những tài năng phù hợp với những kỹ năng quan trọng mới này, chúng ta cần suy nghĩ lại về cách đánh giá, tuyển dụng và phỏng vấn các ứng viên và kỹ sư. Một trong những điều trọng tâm mà chúng ta nên tập trung vào khi phỏng vấn các ứng viên là cách họ học và vận hành các công nghệ mới.
Loại kỹ năng này sẽ là một dấu hiệu tốt về việc họ có thể phát triển nhanh như thế nào trong bối cảnh công nghệ đang chuyển động nhanh chóng. Hơn nữa, với tốc độ đổi mới cực kỳ nhanh đang diễn ra trong thế giới Trí tuệ nhân tạo và Máy học, tất cả các phần mã nhỏ lặp đi lặp lại sẽ trở nên tự động, ít mã hoặc thậm chí không có mã. Chúng ta không cần tìm đâu xa ngoài GitHub Copilotor.
Điều này để lại cho chúng ta những con người thực hiện các nhiệm vụ cấp cao hơn. Trong một thế giới mà phần lớn sự phức tạp nằm ở quy mô và mức độ phức tạp tuyệt đối của việc vận hành các vi dịch vụ và hoạt động chủ yếu trên đám mây, chúng ta sẽ cần nguồn nhân lực của mình để đưa ra các quyết định vận hành chính xác.
Mọi thứ từ các giao thức mạng mà chúng ta chọn cho đến các ngăn xếp bên dưới, đến chuỗi cung ứng mà chúng tôi nhập, đều ảnh hưởng đến hiệu suất của ứng dụng của chúng tôi. Với các đối thủ cạnh tranh chỉ bằng một cú nhấp chuột nhiều lần, ngày càng có nhiều sự thiếu khả năng chịu đựng đối với bất kỳ độ trễ nào của hệ thống hoặc hiệu suất và các lập trình viên cũng được kỳ vọng sẽ sở hữu phần trải nghiệm này.
Chúng ta đã nghe thuật ngữ “trải nghiệm người dùng” của các sản phẩm và nền tảng cũng như trải nghiệm của chính lập trình viên khi nói về công cụ dành cho nhà phát triển. Đây là tất cả những gì mà các kỹ sư phát triển sản phẩm sẽ cần đến. Các sản phẩm ngày gồm nhiều thứ hơn chứ không chỉ có mã để phát triển đúng cách trong các hoạt động gốc trên nền tảng đám mây quy mô lớn.
Bảo mật trong thực tế vận hành và các stack cần thiết
Một lĩnh vực mà chúng ta chắc chắn không thể bỏ qua đã đi đầu trong các hoạt động kỹ thuật là bảo mật. Tính bảo mật đã ảnh hưởng đến rất nhiều khía cạnh trong mã của chúng ta, khả năng tự động hóa và hoạt động của mã cũng như cơ sở hạ tầng mà mã đang chạy. Các cân nhắc về bảo mật ảnh hưởng đến mọi phần trong các giải pháp công nghệ của chúng ta, mỗi phần đều có kiến thức chuyên môn riêng từ mã cho bên thứ ba đến cơ sở hạ tầng mà nó chạy trên đó — những điều này chiếm gần 15-20% tầm quan trọng trong việc ra quyết định của chúng ta.
Ngoài ra, stack mà chúng ta sử dụng tác động trực tiếp đến hầu hết mọi khía cạnh của tổ chức kỹ thuật của chúng tôi. Từ những nhân sự muốn tham gia dự án cùng chúng ta (vì tất cả họ đều muốn làm việc trên các stack hấp dẫn nhất), nhưng mặt khác, càng tiên tiến, khoảng cách kỹ năng trong việc vận hành các stack này càng lớn. Và đây mới chỉ là phần liên quan đến tuyển dụng.
Một stack cũng ảnh hưởng đến tốc độ đó là việc chúng tôi có thể hỗ trợ các kỹ sư với đường cong lĩnh hội riêng và thời gian cho đến khi họ có thể bắt đầu mang lại giá trị cho doanh nghiệp. Đây là nơi tự động hóa đã mang lại rất nhiều lợi ích để xây dựng các nhóm kỹ thuật và định hình tương lai phát triển của ngành kỹ thuật.
Ops để tự động hóa tất cả mọi thứ
Đây là lý do tại sao chúng ta đang thấy xu hướng Ops trên tất cả các lĩnh vực kỹ thuật nổi tiếng: AIOps, GitOps, CloudOps, MLOps, DataOps, DevOps, chuyển sang DevSecOps hoặc chỉ SecOps, bởi vì bạn không thể viết các ứng dụng và phần mềm tuyệt vời mà không có biết cách vận hành nó. Một trong những giải pháp tuyệt vời cho phía vận hành đã thực sự trở thành tự động hóa và chúng tôi thấy điều này đã diễn ra trong từng lĩnh vực ở trên — từ tự động hóa chính sách và GitOps, đến CI/CD, đến tự động mở rộng quy mô, tự động khôi phục và thậm chí cả bảo mật thông qua cảnh báo tự động và các yêu cầu như Dependabot và nhiều hơn nữa.
Tuy nhiên, ngay cả tự động hóa cũng có thể phát triển và phù hợp hơn với quy trình công việc kỹ thuật, đồng thời giúp mở ra tương lai cho hầu hết mọi thứ. Hãy cùng xem phần giải thích dưới đây.
Hãy xem đơn hàng tồn đọng phổ biến trong doanh nghiệp — có thể thấy được những vấn đề, pull requests, lỗ hổng bảo mật, bạn có thể liệt kê ra, chúng ta có nhiều vấn đề tương tự trong số này trong các tổ chức kỹ thuật. Tuy nhiên, đây là sản phẩm phụ thường được xử lý thủ công. Chúng ta sẽ sớm tự động hóa việc xử lý các đơn hàng này thay vì sử dụng con người để vận hành chúng và đây là lý do tại sao chúng ta phải tối ưu hóa cho các nhiệm vụ tự động hóa của máy móc. (Không, robot sẽ không thay thế bạn, chỉ thay thế những phần bạn không cần làm).
Ví dụ: Tất cả các công việc tồn đọng cần tập trung vào khắc phục sự cố trước. Nếu chúng ta có các công cụ mở các vấn đề và không đóng chúng, thì đó là tin tức của ngày hôm qua. Chúng ta sẽ không cần thêm các công cụ phán quyết để chỉ cho chúng ta đang lỗi ở đâu. Các máy quét và dò lõi của chúng tôi sẽ đi xa hơn nữa, đồng thời cho phép sửa lỗi và khắc phục tự động cho các tác vụ đơn giản, đồng thời cảnh báo và ưu tiên thông minh hơn cho các tác vụ yêu cầu xử lý thủ công.
Tương tự, điều này cũng có thể áp dụng cho cách chúng ta với tư cách là người quản lý trong việc lập kế hoạch cho các dự án, nhiệm vụ và chạy deadline của mình. Làm thế nào chúng ta có thể chuẩn bị tốt hơn cho thời đại mã vận hành — khi điều này bắt đầu với tư duy ưu tiên sửa lỗi và mọi thứ khác thuộc về tư duy ưu tiên tự động hóa. Dù có một khối lượng nhiệm vụ khổng lồ liên quan đến mã vận hành và sự hiểu biết cần thiết trong các hoạt động hàng loạt và liên tục hay đảm bảo mọi thứ được xây dựng để tự động hóa và theo chu kỳ — đều cần phải phù hợp với các chu kỳ kỹ thuật và chạy nước rút.
Khi chúng ta nghĩ về những lần chạy deadline của mình, về các khía cạnh hoạt động, điều này cũng có thể cho phép chúng ta hiểu rõ hơn về cách chúng ta lập kế hoạch cho các lần chạy deadline của mình. Ví dụ: có một số lần chạy nước rút tập trung vào sản phẩm (nhà phát triển, mã và tính năng) và những lần khác tập trung vào kỹ thuật (nhiệm vụ ops và kỹ thuật chưa hoàn tất).
Tất cả những điều này cùng nhau sẽ ảnh hưởng đến cách chúng ta thiết kế hệ thống của mình và cách chúng ta đưa tự động hóa và khả năng phục hồi vào chúng. Kiến trúc sẽ tập trung vào việc giảm bớt lộ trình học, giúp có thể tận dụng các công cụ không có mã và mã thấp để hỗ trợ các kỹ sư mới, thay vì thêm độ phức tạp không cần thiết vào stack của chúng ta.
Kỹ sư tiến hóa
Với tư cách là kỹ sư, chúng ta cần nhận thức được rằng đây là thứ mà thế giới đang hướng tới và tập trung vào việc nâng cao kỹ năng không chỉ dựa trên cách chúng ta viết mã mà còn cả khả năng vận hành mã trong thời gian dài. Điều này sẽ đưa việc bạn viết mã, bạn sở hữu nó lên một cấp độ hoàn toàn mới và sẽ yêu cầu các kỹ sư phải có nhiều kỹ năng liên quan đến các khía cạnh hoạt động của mã hơn là chỉ lập trình bằng một ngôn ngữ cụ thể.
Điều này cũng có nghĩa là các công cụ của chúng ta cần trở nên đơn giản và dễ sử dụng hơn, phù hợp với quy trình làm việc của lập trình viên và được tối ưu hóa để tự động hóa, với sự hỗ trợ tốt hơn cho việc học tập đi kèm — từ không có mã đến mã thấp đến mã sâu và sẽ có thể thực hiện được không chỉ thông tin (và khi có thể, cũng được tự động hóa). Điều này sẽ giải phóng con người để tập trung vào các nhiệm vụ thực sự phức tạp, thay vì tập trung vào những nhiệm vụ lặp đi lặp lại. Khi chúng ta hiểu điều này với tư cách là người quản lý tuyển dụng, chúng ta sẽ biết cách xác định các kỹ sư thực sự sẽ mang lại tác động và giá trị cho nhóm của mình và với tư cách là kỹ sư, cách xác định giá trị của mình một cách chính xác sẽ rất hữu ích và giúp chúng ta tìm kiếm cơ hội tiếp theo.
(Theo Gabriel Manor-Liechtman)