Lời khuyên cho người làm phần mềm

Lời khuyên cho người làm phần mềm

Nhiều người lập trình tin tri thức phần mềm là các ngôn ngữ lập trình hay công nghệ tính toán như: Java, C++, Linux, Windows NT,.Net, v.v. những tri thức cho phép người lập trình xây dựng phần mềm có thể chạy được trên máy tính. Họ tin rằng nếu công ty thuê họ viết chương trình trong Java, họ phải biết cái gì đó về Java và nếu công ty muốn.Net thì họ cần biết.Net và đó là tất cả những gì họ phải học. Vì ngôn ngữ lập trình và các công nghệ đều thay đổi thường xuyên, người lập trình phải theo kịp với những thay đổi này bởi vì điều họ biết hôm nay có thể thành lạc hậu trong vòng vài năm tới. Tuy nhiên, có một loại tri thức phần mềm khác không thay đổi mấy và kéo dài theo thời gian có tên là "bộ môn Kĩ nghệ phần mềm" và đây là khác biệt then chốt giữa đào tạo về khoa học máy tính và kĩ sư phần mềm.

Bộ môn kĩ nghệ phần mềm là tri thức bản chất mà những người làm việc trong lĩnh vực phần mềm phải có, bất kể họ đã có công nghệ hay ngôn ngữ lập trình. "Tri thức bản chất" này là khả năng hiểu chiến lược doanh nghiệp, thiết lập đặc tả yêu cầu, kiến trúc hệ thống máy tính, thiết kế giao diện giữa phần cứng và phần mềm, thực hiện và trắc nghiệm rằng việc thực hiện đáp ứng các yêu cầu nguyên gốc và hiểu thuộc tính chất lượng v.v. Người kĩ sư phần mềm giỏi phải có cái nhìn rộng hơn về doanh nghiệp phần mềm so với chỉ có mỗi ngôn ngữ lập trình. Ngày nay, dễ dàng tìm ra người có kĩ năng lập trình, nhưng tìm những người có bộ môn phần mềm cần thiết để dẫn dắt dự án tới thành công lại khó hơn.

Theo một số nghiên cứu về lương trong công nghiệp phần mềm, cái nhìn rộng hiện này là đã có nhiều người lập trình trên thế giới rồi, cho nên lương của người lập trình gần như đứng lại hay hơi giảm đi trong vài năm qua. Ngày nay hầu hết các công ty Mĩ và châu Âu không thuê người lập trình nữa bởi vì rất dễ dàng khoán ngoài công việc lập trình cho Trung Quốc và Ấn Độ, nơi người lập trình làm việc chỉ vì một phần lương so với điều những người làm ở Mĩ hay châu Âu yêu cầu. Điều công nghiệp phần mềm cần là dịch chuyển từ kĩ năng lập trình sang “kĩ năng doanh nghiệp-kĩ thuật” và thường những kĩ năng này đòi hỏi lương cao hơn bởi vì họ là những người đặt ra chiều hướng và hướng dẫn cho nhu cầu dự án.

Nhiều người trong các bạn nghĩ rằng bởi vì khoán ngoài, việc lập trình là tốt nhưng đây là tư duy ngắn hạn. Nếu bạn chỉ đi theo xu hướng toàn cầu, bạn không bao giờ lên hàng đầu bởi vì ngày nay bạn đang cạnh tranh trong công việc khoán ngoài với Ấn Độ và Trung Quốc nhưng trong vài năm tới bạn sẽ phải cạnh tranh với những người khác ở Nam Mĩ và châu Phi nơi họ cũng có kĩ năng lập trình và yêu cầu lương thấp hơn nhiều. Sau đây là lời khuyên của tôi cho những người đang làm việc trong ngành công nghiệp phần mềm:

Tôi khuyên rằng bạn cần tiến lên hàng đầu của xu hướng, đừng theo sau. Để thành công, bạn phải đi lên trong các vị trí kĩ nghệ phần mềm hướng theo doanh nghiệp như người phân tích hệ thống, kĩ sư yêu cầu, người quản lí dự án, hay kiến trúc sư hệ thống để chuẩn bị cho những xu hướng tiếp nơi các công ty sẽ khoán ngoài các vị trí đó. Bằng việc có cả kĩ năng lập trình và kĩ năng kĩ nghệ phần mềm, bạn đặt mình vào ưu thế của cả hai xu hướng hiện thời và tương lai thay vì chỉ đi theo người khác. Tất nhiên, người lập trình không thể trở thành người kĩ sư phần mềm qua một đêm. Sự chuyển đổi này cần thời gian và yêu cầu kinh nghiệm và học tập đúng để thành công cho nên bạn sẽ cần đào tạo thêm.

Nếu bạn là sinh viên về khoa học máy tính và sẽ tốt nghiệp sang năm, cơ hội của bạn là nhiều để tìm việc trong ngành công nghiệp khoán ngoài nhưng bạn không nên mong đợi được lương tốt vì cạnh tranh là cao và sẽ gay gắt hơn khi ngày càng nhiều nước đi vào kinh doanh này. Tuy nhiên, nếu bạn lấy đào tạo thêm về "phía doanh nghiệp-kĩ thuật’ của người kĩ sư phần mềm hay quản lí hệ thông tin, bạn sẽ có cơ hội tốt hơn và có thể đòi hỏi lương cao hơn bởi vì ngày nay ít người có những kĩ năng này.

Nếu bạn đã làm việc trong công nghiệp như người lập trình, bạn có thể học thêm về miền “Doanh nghiệp-Kĩ thuật” như thiết kế, kiến trúc hay quản lí. Bạn có thể học về quản lí dự án phần mềm và phân tích doanh nghiệp bằng cách học các môn học ngắn ngày và áp dụng tri thức này vào dự án của bạn. Qua thời gian, người quản lí của bạn sẽ nhận ra điều đó và trao cho bạn nhiều trách nhiệm hơn hay có thể cả thăng cấp. Không cái gì là tốt hơn kinh nghiệm thực tế. Bạn càng biết nhiều bạn sẽ càng nhận ra rằng bạn cần đào tạo thêm bởi vì học tập là liên tục và không bao giờ nên dừng lại.

Chìa khóa cho thành công trong khoán ngoài là hiểu nhu cầu của khách hàng và có khả năng giải quyết các vấn đề cho họ. Tôi cũng khuyên rằng bạn nên lấy đào tạo về kĩ nghệ yêu cầu để làm việc trực tiếp với khách hàng, để biết nhu cầu của họ. Người quản lí của bạn sẽ sung sướng thấy ra rằng bạn có khả năng nhận diện vấn đề và giải quyết chúng nhanh chóng và hiệu quả. Bạn càng có thể làm tốt việc của mình với khách hàng, bạn càng học được nhiều về doanh nghiệp của họ và bạn càng biết nhiều về doanh nghiệp, bạn càng cải tiến tốt hơn kĩ năng của mình. Là người kĩ sư yêu cầu, bạn làm việc với người quản lí dự án, kiến trúc sư, và khách hàng để nhận diện điều phải được thực hiện trong các ràng buộc về thời gian, chi phí và chất lượng, tất cả những điều đó đều là yếu tố mấu chốt có thể tạo ra khác biệt giữa thành công và thất bại. Là người kĩ sư yêu cầu, bạn sẽ làm việc với khách hàng và có thể khó nhận diện ra vấn đề khi bạn không thể trao đổi tốt. Tôi khuyên bạn nên học thêm các môn ngôn ngữ, đặc biệt trong trao đổi vì bạn phải thảo luận trực tiếp với khách hàng. Đây là cơ hội để chứng tỏ cho cấp quản lí rằng bạn có giá trị cho công ty.

Nếu bạn không thích làm việc với khách hàng mà ưa chuộng kĩ năng kĩ thuật thì bạn có thể lấy khóa đào tạo phụ trong miền kiến trúc. Đây là vị trí kĩ thuật cao bao hàm các quyết định then chốt đề cập tới cách hệ thống mới sẽ khớp vào trong kết cấu nền toàn thể của tổ chức. Để thành công, người kiến trúc sư cần hiểu và kiểm soát được các yếu tố liên kết với các nhân tố tiện dụng, chi phí và may rủi của giải pháp được đề nghị. Kiến trúc sư hệ thống phải ra quyết định về cách phân rã và cô lập các cấu phần khác nhau mà sẽ được cần tới, cách khớp các cấu phần này vào trong kết cấu nền hiện có, và thực hiện từng cấu phần theo thứ tự nào. Có thể sẽ thành thảm họa nếu thực hiện một hệ thống mà lại không tương hợp với hệ thống hiện thời của tổ chức.

Kĩ năng khác đang có nhu cầu cao là người quản lí dự án phần mềm. Người này chịu trách nhiệm thuê cán bộ, lập lịch biểu, và theo dõi dấu vết tiến độ qua mọi pha phát triển. Người này cũng chịu trách nhiện phân công việc, giải quyết các vấn đề hàng ngày ảnh hưởng tới công việc đó, và đảm bảo từng người lập trình đang thực hiện nhiệm vụ riêng của họ. Người quản lí dự án có thể tiến hành tốt nhất chức năng này nếu người đó hiểu thực sự công việc mình đang quản lí. Người quản lí dự án phải vừa là "người của con người" và đồng thời là "người của kĩ thuật" để thành công. Cá nhân này phải làm việc với các cán bộ kĩ thuật và phi kĩ thuật tại mọi mức của tổ chức để thành công trong mục đích của mình. Bên cạnh đó, người quản lí dự án phải quản lí tổ của mình một cách có hiệu quả để tạo ra sản phẩm mong muốn đúng thời gian.

Ngày nay, để tiến lên hàng đầu bạn cần hiểu doanh nghiệp và cách áp dụng công nghệ để làm cho nó tốt hơn. Có khả năng đi theo chiều hướng quản lí là tốt nhưng có khả năng đưa ra đánh giá riêng của bạn mà không cần nhiều hỗ trợ còn quan trọng hơn. Chìa khóa để thành công là làm khác biệt bạn với người khác. Tôi đã khuyên bạn cải tiến kĩ năng của mình trong việc thu nhận tri thức mới nhưng có hai kĩ năng quan trọng: trao đổi và lãnh đạo.

Mọi người đều có thể học ngoại ngữ nhưng kĩ năng trao đổi cần nhiều thời gian hơn để phát triển. Trao đổi cần có trộn lẫn đúng giữa kinh nghiệm và đào tạo để trở nên hiệu quả. Nhiều khách hàng không hiểu kĩ thuật để mô tả yêu cầu của họ thật chi tiết và nhiều người kĩ thuật không hiểu các qui trình doanh nghiệp bởi vì họ không thể trao đổi được với khách hàng. Học trao đổi, và có kiên nhẫn để thu được tri thức từ khách hàng, là kĩ năng bản chất mà nhiều người không có.

Kĩ năng lãnh đạo cũng không phải là cái gì đó bạn có thể học được qua đêm. Bạn phải bắt đầu bằng thái độ tích cực, thay vì yêu cầu cấp quản lí của bạn giúp giải quyết vấn đề, hãy tự mình nhận nó để tìm ra lời giải cho vấn đề đó. Cũng không lâu mấy, bạn có thể là người mà người khác trong dự án tới hỏi ý kiến khi có vấn đề cần sửa hay dự án mới cần hoàn thành. Việc có được kinh nghiệm giải quyết vấn đề không chỉ cải tiến việc trao đổi, nó còn cải tiến cơ hội của bạn đi vào các vị trí lãnh đạo.

Cách tốt nhất để đi lên ở mọi công ty là để cấp quản lí biết bạn có khả năng về cái gì. Có khả năng trả lời các câu hỏi của khách hàng, giải quyết các vấn đề, chấp nhận nhiều trách nhiệm hơn, và chia sẻ giải pháp là cách chắc chắn để phân biệt bản thân bạn với việc "chỉ là người lập trình" để thành ứng cử viên hàng đầu cho việc đề bạt quản lí.

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

Có thể bạn muốn xem