Học công nghệ nào?
Tuần trước, một sinh viên trong lớp kĩ nghệ phần mềm của tôi đã hỏi tôi: “Công nghệ phần mềm phức tạp thế và thay đổi thường xuyên, ngôn ngữ lập trình nào em cần học? Công nghệ nào em cần biết để tôi có thể có tương lai tốt hơn khi em tốt nghiệp?”
Tôi bảo anh ta: “Không thể tiên đoán được tương lai. Nếu bạn nhìn vào công nghệ ngày nay, bạn có lẽ sẽ bị lẫn lộn bởi vì có nhiều thế. Tuy nhiên, có một số xu hướng mà bạn có thể cần để ý tới. Từ xu hướng ngôn ngữ lập trình, có lẽ Java và C# sẽ tiếp tục chi phối thị trường trong vài năm tới. Tôi nghĩ Java vẫn là ngôn ngữ lập trình được cần nhất ngày nay và C# có lẽ là thứ hai. Tất nhiên, một số công ty vẫn dùng C và C++. Tôi không biết công ty nào dùng Pascal, nó là ngôn ngữ máy tính tốt cho dạy học và vẫn được dạy ở một số đại học nhưng không được dùng trong công nghiệp. Có các ngôn ngữ lập trình khác như Ruby, Scala, Perl, Python, và Groovy nhưng ứng dụng của chúng rất giới hạn vì chúng chưa phổ biến trong công nghiệp.
Dựa trên xu hướng công nghiệp hiện thời, tôi nghĩ “Phần mềm như dịch vụ” (SaaS) sẽ là quan trọng khi các công ty bắt đầu áp dụng nó vào kinh doanh của họ. Biến thể khác của khá niệm SaaS là “Tính toán mây”. Khu vực này đang được “quảng cáo” bởi nhiều nhà tư vấn và nhà cung cấp phần mềm như khu vực tăng trưởng nhanh nhất. Tuy nhiên, có nhiều vấn đề như an ninh và giao thức truyền phải được giải quyết trước khi nó sẽ được công nghiệp chấp nhận. Với loại xu hướng này, Kiến trúc hướng dịch vụ Service Orient Architecture (SOA) và tích hợp ứng dụng toàn công ty Enterprise Application Integration (EAI) sẽ phổ biến vì chúng là quan trọng cho nhiều công ti, đặc biệt trong khu vực thương mại điện tử để tạo ra kinh doanh doanh nghiệp với doanh nghiệp Business to Business (B2B).
Dựa trên các xu hướng công nghệ, tôi nghĩ cả Dot.Net và J2EE sẽ tiếp tục chi phối khuôn khổ phát triển và thị trường nền do sức mạnh và sự hỗ trợ công nghiệp của họ. Có J2EE "nhẹ cân" mà đơn giản và dễ dùng hơn nhiều cho người phát triển Java, đang được đề xướng trong công nghiệp. Enterprise Java Bean (EJB), kiến trúc để thiết lập cấu phần chương trình chạy trên phần máy phục vụ của mạng máy tính, có có từ nhiều năm nay và vẫn phổ biến với nhiều nhóm kiến trúc doanh nghiệp. Tuy nhiên, có khuôn khổ ứng dụng "nguồn mở” cho cả Java và Dot.Net có tên là “Spring” hiện đang hấp dẫn số đông các tín đồ. Dựa trên việc làm được liệt kê trên vài websites, số việc làm cho người phát triển Spring đang tăng trưởng nhanh gấp đôi EJB.
Từ khu vực khuôn khổ web, tôi nghĩ xu hướng sẽ vẫn là JSP, Strut và GWT và Web Flow khi có nhu cầu lớn cho các khu vực này. Các khu vực khác như Velocity và Seam cũng đang làm tốt nhưng việc mở ra việc làm mới vẫn còn bị giới hạn. Từ khu vực máy phục vụ ứng dụng Java, Java Application Server, tôi nghĩ Oracle Application Server có lẽ là mạnh nhất nhưng Web-Sphere và JBoss cũng tăng trưởng nhanh để bắt kịp. Các công nghệ phục vụ ứng dụng khác như Glassfish và Geronimo đang tăng trưởng nhưng không tốt được như các nơi khác.
Từ khu vực bình chứa web Java, tôi nghĩ Tomcat vẫn chi phối thị trường nhưng Resin và Jetty cũng đang tăng trưởng nhanh nữa. Khó mà dự báo ai sẽ là kẻ thắng trong vài năm tới. Trong phần gắn thêm cho trình duyệt web, tôi nghĩ cả “Flash” và “Silverlight” vẫn trong cuộc đua giành vị trí đầu, “Flash” vẫn có nhiều người dùng trong khu vực phát triển web nhưng Microsoft đang đẩy “Silverlight” được dùng bởi các đối tác của nó và có nhiều việc làm mở ra trong khu vực đặc biệt này ngày nay.
Khó mà dự đoán tương lai trong công nghệ bởi vì nó thay đổi rất nhanh. Việc nóng ngày nay có thể là lạnh trong vài năm tới. Xu hướng công nghiệp chỉ có thể giúp đỡ bạn đặt ra mục đích của mình hay để tập trung vào điều bạn cần biết nhưng không đảm bảo việc làm. Tuy nhiên, trong hai tới bốn năm sắp tới, nếu bạn là người phát triển phần mềm có kĩ năng lập trình Java và C# và tri thức “Spring”, bạn sẽ làm việc tốt. Bạn cũng nên biết cách phát triển ứng dụng web bằng JSP, Struts hay Web Flow và cách thực hiện nó trên Tomcat hay Oracle Application Servers thì bạn có thể là người có giá trị trong thị trường việc làm. Nếu bạn có tri thức về “Flash” hay “Silverlight” thì bạn sẽ không có vấn đề gì trong tìm việc trong khu vực phát triển "khách hàng giầu”. Nếu bạn là người phát triển có kinh nghiệm ưa thích công việc tích hợp thì bạn cần học về Kiến trúc hướng dịch vụ “Service Orient Architecture” (SOA) và tích hợp ứng dụng doanh nghiệp Enterprise Application Integration (EAI). Tôi tin rằng “tính toán mây”, “Spring”, “GWT”, “Sliverlight” là các khu vực mà một số trong các bạn có thể muốn học thêm.
Tác phẩm, tác giả, nguồn
- Tác phẩm: Lời khuyên cho sinh viên
- Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.
- Wiki hóa: https://kipkis.com