Nhái Cốm Blog

I love you just the way you are

0R8A4000_

Sự trỗi dậy và suy tàn của lập trình viên đa năng

Leave a comment


Tác giả: Peter Yared là người sáng lập và CTO (Chief technology officer – Giám đốc công nghệ) của Sapho, CTO/CIO (Chief Information Officer – Giám đốc truyền thông) của CBS Interactive.
Bài gốc: The Rise And Fall Of The Full Stack Developer

(lược dịch)

Ngày nay, trong lĩnh vực công nghệ, dường như tất cả mọi người đều ái mộ lập trình viên đa năng (full-stack developer). Khái niệm “đa năng” có thể đúng trong thời đại Web 2.0. Nhưng việc một thế hệ mới các công ty khởi nghiệp đang nổi lên đã mang đến những giới hạn ở phần lớn các lĩnh vực phần mềm khác nhau. Từ máy móc thông minh cho đến dự báo tính toán, phân tích dữ liệu, thiết bị di động, thiết bị đeo được và nhiều thứ khác. Tất cả những thứ trên khiến việc một lập trình viên có thể lập trình cho bất kì lĩnh vực nào trở nên bất khả thi.

Tôi bắt đầu viết các chương trình cho máy tính từ nhỏ, khoảng cuối những năm 1970, đầu những năm 1980. Khi đó các thiết bị di động hay web vẫn chưa xuất hiện và một người có thể tự mình viết toàn bộ một chương trình phần mềm từ đầu đến cuối. Các chương trình cũng không bị phân chia thành nhiều lớp (layer) giữa lập trình viên và phần cứng. Việc sử dụng hợp ngữ (assembly language) là bắt buộc với các lập trình viên nếu họ buộc phải cải thiện hiệu năng cũng như tiết kiệm bộ nhớ trên những máy tính sử dụng bộ xử lý 8 bit và có bộ nhớ hạn chế.

Lập trình ứng dụng nhanh chóng trở thành một môn thể thao đồng đội với sự ra đời của mô hình máy chủ / máy khách (client-server) vào cuối những năm 1980, đầu những năm 1990 cùng với làn sóng tính toán qua mạng cuối những năm 1990, đầu những năm 2000. Từng khía cạnh nhỏ trong công nghệ mới cũng trở nên vô cùng phức tạp, cần phải có chuyên gia riêng hay chậm chí là nhiều chuyên gia cho các tầng (tier) ứng dụng khác nhau như tầng giao diện, tầng cơ sở dữ liệu, tầng ứng dụng phía máy chủ… Việc quản lý các trang web kinh doanh trở thành một lĩnh vực đặc biệt bao gồm quản lý thiết bị mạng (như thiết bị định tuyến hay cân bằng tải), tinh chỉnh các máy ảo Java và sử dụng các kĩ thuật đánh chỉ mục cơ sở dữ liệu khác nhau.

Khoảng giữa những năm 2000, chi phí tạo ra bất kì thứ gì, từ những trang web đơn giản cho đến thế hệ tiếp theo của các phần mềm dịch vụ (SaaS – Software as a Service), trở nên cực kì tốn kém. Chi phí tăng cao này có tương quan trực tiếp chi phí dành cho các cá nhân ở nhiều tầng giao tiếp (và thường là thiếu sự giao tiếp) với nhau. Sự thay đổi ở một tầng ứng dụng nào đó sẽ ảnh hưởng đến các tầng ứng dụng khác cũng như ảnh hưởng đến quá trình triển khai. Điều này tương tự như điều mà Marc Andreessen đã đề cập: “Việc thêm người sẽ làm tăng chi phí cho việc giao tiếp theo cấp số nhân, đồng thời sẽ làm chậm mọi quá trình khác.”

Trái lại, công nghệ để tạo ra các trang web thế hệ 2 (Web 2.0) được tối ưu và đơn giản hóa nhanh chóng. Thay vì sử dụng những công nghệ phức tạp liên quan đến Java và những cơ sở dữ liệu như Oracle, lập trình viên chuyển sang sử dụng LAMP (Linux, Apache, MySQL, PHP/Python/Perl) như một sự thay thế hiệu quả mà đơn giản hơn nhiều. Những ngôn ngữ và khung ứng dụng (framework) mới như Django, Ruby hay Rails tự động hóa các lớp giữa trang web và cơ sở dữ liệu. Các khung ứng dụng cho giao diện như jQuery giúp thống nhất sự khác nhau giữa các trình duyệt. Các dịch vụ đám mây như Amazon Web Services đơn giản hóa việc triển khai, đồng thời cung cấp hệ thống mạng hoàn chỉnh cho người dùng.

Cuối những năm 2000, nhiều lập trình viên có khả năng tạo ra ứng dụng hoàn chỉnh hay phần mềm dịch vụ (SaaS – Software as a Service); từ trang web động, các lôgíc kinh doanh phía máy chủ, cơ sở dữ liệu khả mở, triển khai hệ thống và hỗ trợ sử dụng. Thế hệ lập trình viên đa năng mới này có thể được đặt vào bất kì vị trí nào trong một nhóm các lập trình viên đang làm cùng nhiệm vụ. Việc thêm vào nhiều lập trình viên đa năng cho phép một cá nhân có thể thêm vào một tính năng dù phải thay đổi nhiều tầng ứng dụng. Thời gian đưa ra một tính năng mới được rút ngắn thông qua việc giảm thời gian (và chi phí) giao tiếp giữa nhiều người ở các tầng ứng dụng khác nhau.

Nếu bạn đang xây dựng một trang web sử dụng đầy đủ các công nghệ như minh họa trên, hãy tìm một lập trình viên đa năng, người có thể tự mình kham mọi việc. Nhưng vào thời điểm này, bạn có thể cho tôi là điên nếu bạn muốn, tôi cho rằng nó chưa đề cập đầy đủ. Dưới đây là hình minh họa đầy đủ hơn cho những công nghệ cần dùng:

Tôi cá rằng không ai có đầy đủ kiến thức chuyên sâu trong mọi lĩnh vực nêu trên để có thể tự mình hoàn thiện thế hệ ứng dụng tiếp theo này. Chỉ nguyên việc theo kịp những tính năng mới cũng như những giao diện lập trình mới của một lĩnh vực nào đó cũng đã chiếm gần như toàn bộ thời gian rồi.

Chúng ta đang ở giai đoạn giữa trong việc nhanh chóng chuyển sang những công nghệ phức tạp yêu cầu chuyên gia ở từng tầng ứng dụng (quá trình chuyển đổi này rồi sẽ kết thúc theo thời gian). Việc phát triển những ứng dụng iOS hay Android tuyệt vời cần đến những chuyên gia trong từng nền tảng, những người hiểu sự phức tạp của nền tảng đó. Quá trình chuyển sang những cơ sở dữ liệu đối tượng mới như MongoDB cần sự lưu tâm nhất định. Chạy một ứng dụng trên các dịch vụ đám mây như Amazon yêu cầu bạn phải biết dữ liệu đầu vào, đầu ra của những dịch vụ khác nhau và quyết định cách thức chuyển sang sử dụng các vùng khác khi có lỗi. Thậm chí giao diện trang web cũng liên quan đến CSS4, JSON và các khung ứng dụng JavaScript MVC như AngularJS hay BackboneJS.

Trong thế giới mới đầy thách thức này, điều cấp thiết là có ít nhất một người có thể hiểu chức năng các phần ứng dụng với nhau. Người này cũng phải có khả năng liên kết các tầng ứng dụng khác nhau, làm việc với các chuyên gia để đảm bảo rằng tính năng có thể được hoàn thiện. Nói cách khác, những kiến trúc sư kết nối các tầng ứng dụng và xây dựng cầu nối trong phần mềm này không phải là những lập trình viên đa năng; họ là những chuyên gia tích hợp đa năng (full-stack integrator), những người chỉ là chuyên gia trong một hoặc một vài tầng cụ thể.

Hãy yên nghỉ, những lập trình viên đa năng! Chúng ta chào đón những chuyên gia tích hợp đa năng cùng với những kĩ sư có hiểu biết sâu sắc về công nghệ ở một lĩnh vực cụ thể. Trước mắt chúng ta là một thế giới phần mềm vô cùng hấp dẫn và chúng tôi cần bạn hơn bao giờ hết.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s