Làm phần mềm không chỉ có ngôn ngữ và kiểm thử

Một số người tin rằng việc làm phần mềm chỉ là lập trình, kiểm thử nhưng đây là một quan niệm rất giới hạn. Có người cho rằng muốn có việc làm phần mềm chỉ cần học ngôn ngữ lập trình như: Java, C++, C#, Python, Ruby v.v. để 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 gì đó về Java; nếu công ty muốn C++ thì họ cần biết C++ và đó là tất cả những gì họ phải học.

Nếu chỉ quan niệm giản dị như thế, không ai cần phải bỏ ra bốn năm trong đại học chỉ để học ngôn ngữ lập trình. Nếu đào tạo đại học chỉ dạy chuyên về lập trình mà không gì khác, thì chương trình khác gì các trường hướng nghề?

Có những tri thức phần mềm “căn bản” được dạy ở đại học mà mọi người làm việc phải biết như kiến thức về các quy trình phát triển phần mềm (Software Process), ), thiết lập đặc tả yêu cầu (Requirements Development), kiến trúc hệ thống máy tính, (Computer architecture) thiết kế giao diện giữa phần cứng và phần mềm (Hardware/Software Interface), 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 (Verification and Validation) và thuộc tính chất lượng (Qualirty Attributes) v.v.

Người kĩ sư phần mềm phải có cái nhìn rộng về việc phát triển phần mềm và sự liên quan giữa tác dụng của sản phẩm phần mềm với thương mại của doanh nghiệp thay vì chỉ chú trọng vào ngôn ngữ lập trình. Ngày nay, dễ dàng tìm người có kĩ năng lập trình (Programmer/Coder) ở mọi nước, nhưng tìm người kĩ sư phần mềm (Software Engineer) để dẫn dắt dự án tới thành công thì khó hơn nhiều. Trên thế giới đã có nhiều người lập trình rồi, cho nên lương của người lập trình không tăng như trước. 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ễ khoán gia công phần mềm (Outsource) công việc lập trình cho Ấn Độ, nơi người lập trình làm việc với lương bổng thấp hơn người lập trình ở Mĩ và châu Âu. Điều công nghiệp phần mềm cần hiện nay là kĩ năng “kĩ sư phần mềm (Software Engineer).

Nhiều người nghĩ rằng bởi vì gia công phần mềm (Outsourcing), việc làm 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 này, bạn chỉ chạy theo người khác và không bao giờ bắt kịp những biến chuyển của công nghệ. Nếu doanh nghiệp của bạn cạnh tranh công việc gia công ngoài với Ấn Độ vì họ sẵn sàng nhận giá cả thấp hơn nhưng họ sẽ phải cạnh tranh với Nam Mĩ và châu Phi nơi họ cũng có kĩ năng lập trình với số lương thấp hơn nhiều. Tôi mong các bạn theo dõi những biến chuyển trong công nghệ, để bắt kịp những trào lưu chứ không đi theo những điều gì mà người khác đã làm.

Để thành công, bạn phải phát triển các kĩ năng có nhu cầu cao trong các vị trí liên quan đến doanh nghiệp phần mềm như người phân tích hệ thống, (System Analyst) kĩ sư yêu cầu (Requirements Engineer), người quản lí dự án (Project Management), hay kiến trúc sư hệ thống (System Engineer) để chuẩn bị cho những xu hướng tiếp trong tương lai. Do đó bạn phải chọn đại học nào có những đào tạo chuyên về những kỉ năng này. Đào tạo giáo dục là một đầu tư quan trọng đòi hỏi nỗ lực, tiền bạc và thời gian nên bạn cần bỏ thời giờ nghiên cứu cẩn thận để chọn trường đúng và đào tạo đúng. Bằng việc có cả kĩ năng lập trình và kĩ nghệ phần mềm, bạn đặt mình vào ưu thế của xu hướng tương lai thay vì chỉ đi theo người khác.

Tất nhiên, người lập trình (Programmer/Coder) không thể trở thành người kĩ sư phần mềm (Software Engineer) ngay được. Sự chuyển đổi cần thời gian và kinh nghiệm để thành công cho nên các bạn sẽ cần đào tạo thêm. 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ề 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 và áp dụng tri thức này vào dự án của bạn. Không 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ờ dừng lại.

Chìa khóa thành công trong gia công phần mềm (Outsourcing) là hiểu nhu cầu của khách hàng và có khả năng giải quyết vấn đề. Tôi khuyên bạn nên lấy đào tạo về kĩ sư yêu cầu (Requirements Engineer – System Analyst) để làm việc trực tiếp với khách hàng và phát triển khả năng nhận diện và giải quyết vấn đề hiệu quả. Bạn càng làm việc với khách hàng, bạn càng học được nhiều về doanh nghiệp của họ. Bạn càng biết nhiều về doanh nghiệ của họ, bạn càng cải tiến kĩ năng tốt hơn. 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ư dự án, và khách hàng để nhận diện những chức năng phải được thực hiện trong thời gian, chi phí giới hạn.

Nếu bạn không thích làm việc với khách hàng mà ưa chuộng kĩ thuật thì bạn có thể lấy khóa đào tạo trong kiến trúc (Software Architecture). Đây là vị trí kĩ thuật bao hàm các quyết định then chốt đề cập tới cách hệ thống mới 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à tích hợp (Integration) của các cầu phần (Componens) trong hệ thống thông tin, chi phí (cost) và may rủi (Risks) của giải pháp được đề nghị. Kiến trúc sư hệ thống phải ra quyết định về 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.

Kĩ năng khác đang có nhu cầu cao là người quản lí dự án phần mềm (Software project manager) . Người này chịu trách nhiệm thuê nhân viên, 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 chia công việc, giải quyết vấn đề hàng ngày, và đảm bảo nhân viên đang thực hiện nhiệm vụ riêng của họ. Người quản lí dự án phải vừa làm việc với các nhân viên kĩ thuật và khách hàng để thành công trong mục đích của mình.

Ngày nay, để thăng tiến trong nghề nghiệp chuyên môn bạn cần hiểu cách các doanh nghiệp tổ chức và vận hành và áp dụng công nghệ để làmtốt hơn. Tôi khuyên các bạn nên có thái độ học liên tục để cải tiến kĩ năng của mình, thu nhận tri thức mới như 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ó kinh nghiệm để có hiệu quả. Nhiều khách hàng không hiểu kĩ thuật để mô tả chi tiết yêu cầu của họ 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, cần có thái độ kiên nhẫn biết “lắng nghe”, là kĩ năng mà nhiều người không có.

Kĩ năng lãnh đạo cũng không phải là gì bạn có thể học được qua vài khóa huấn luyện, nó cần thời gian. Bạn phải tích cực tự mình học từ những sai lầm, học từ kinh nghiệm của người khác, và tự tạo cho mình một vị thế riêng biệt. Cách tốt nhất để thăng tiến trong nghề nghiệp ở mọi công ty là để cấp quản lí biết bạn có khả năng 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 để phân biệt bạn với những người khác.

ITZone via sonnguyen

Chia sẻ bài viết ngay