Hỏi: Em đã vào học ngành IT theo chương trình Software Engineering được một thời gian dài rồi, nhưng dường như em vẫn chưa thể đam mê nó, em bị hạn chế về việc lập trình, nó khiến em nhiều lúc phải cảm thấy áp lực, nhưng em lại thích các môn thiên về tài liệu, phân tích. Thầy có thể cho em hỏi em nên tiếp cận lĩnh vực nào trong ngành IT là tốt nhất ạ?

Đáp: Là sinh viên trong Kĩ nghệ phần mềm, bạn có vài tuỳ chọn:

1)  Bạn có thể tập trung vào khu vực Kĩ nghệ yêu cầu để phát triển nghề nghiệp của bạn như người phân tích doanh nghiệp, kĩ sư yêu cầu (đây là cùng việc làm với cái tên khác thôi). Việc làm này không yêu cầu viết mã (vì bạn không thích nó nhưng bạn nên có tri thức về nó) nhưng nó yêu cầu bạn xây dựng mối quan hệ với khách hàng, hiểu doanh nghiệp của họ và nhu cầu của họ. Bằng việc có mối quan hệ này, bạn có thể thu được yêu cầu của họ, phân tích yêu cầu, biến đổi chúng từ cách nhìn của khách hàng thành cách nhìn của người phát triển, rồi làm tài liệu chúng trong đặc tả yêu cầu phần mềm (SRS). Khu vực này là mấu chốt cho thành công của bất kì dự án phát triển nào bởi vì yêu cầu sai, yêu cầu thiếu có thể là thảm hoạ. Mọi yêu cầu đều phải được phân tích kĩ lưỡng, được làm tài liệu, kiểm thử được, theo dõi dấu vết ngược về nhu cầu doanh nghiệp. Vì bạn thích phân tích và làm tài liệu, dường như là khu vực này có thể khớp tốt với bạn vì nó yêu cầu kĩ năng phân tích, kĩ năng viết để phân tích và xác định các yêu cầu này tới mức độ đủ chi tiết cho người phát triển thiết kế và thực hiện chúng. Bên cạnh đó, bạn cần kĩ năng mềm như trao đổi, lắng nghe, và kĩ thuật phỏng vấn. Bạn cũng cần có khả năng áp dụng kịch bản trường hợp sử dụng với cả khách hàng và người phát triển. Bạn có thể cần học môn Ngôn ngữ mô hình hoá thống nhất (UML) để làm mạnh hơn kĩ năng này.

2)    Bạn có thể học các môn doanh nghiệp phụ thêm rồi chuyển sang khu vực Quản lí hệ thông tin (ISM) nơi bạn hoặc quản lí hệ thống thông tin cho công ti hoặc cung cấp dịch vụ hỗ trợ CNTT cho khách hàng. Có hai nghề trong ISM bạn có thể chọn:

a.     Bạn có thể làm việc như người quản lí dịch vụ (SM) tại đó bạn tập trung vào xây dựng mối quan hệ với khách hàng và hỗ trợ cho họ về nhu cầu CNTT của họ. Bạn nên học nhiều nhất có thể được về “Phần mềm như dịch vụ” và “tính toán mây”. Khu vực này nhiều khía cạnh quản lí hơn là khía cạnh kĩ thuật nhưng với nền tảng của bạn trong kĩ nghệ phần mềm, tôi nghĩ bạn sẽ làm tốt.

b.     Bạn có thể làm việc như người quản trị hệ thống (SA) nơi bạn tập trung vào quản lí hệ thống CNTT. Trong trường hợp này, bạn chịu trách nhiệm cài đặt, lập cấu hình, vận hành và bảo trì hệ thống tính toán (phần cứng, phần mềm và mạng) và kết cấu nền. Bạn sẽ phân tích nhu cầu CNTT, phát triển các thủ tục vận hành để đảm bảo hệ thống tính toán thực hiện tương ứng với yêu cầu của công ti. Thực hiện giám sát hệ thống hàng ngày, thẩm tra tính toàn vẹn và tính sẵn có của mọi phần cứng, tài nguyên phục vụ, hệ thống và các qui trình then chốt, kiểm điểm các sổ kí sự hệ thống và ứng dụng, và thẩm tra việc hoàn thành các việc làm theo lịch biểu như sao lưu.

Mọi vị trí đều giải quyết với đa dạng vấn đề và thỉnh thoảng bạn phải quyết định cái nào là tốt nhất cho bạn. Giữ đam mê của bạn về khu vực kĩ thuật và nhớ rằng có nhiều điều nữa trong kĩ nghệ phần mềm hơn chỉ là viết mã. Xu hướng hiện thời đang chuyển động rất nhanh trong khu vực rộng hơn nhiều điều yêu cầu nhiều kĩ năng giải quyết vấn đề và kĩ năng phân tích hơn chỉ lập trình thuần tuý một ngôn ngữ máy tính.

—-English version—-

A question from an IT student

Question: Em đã vào học ngành IT theo chương trình Software Engineering được một thời gian dài rồi, nhưng dường như em vẫn chưa thể đam mê nó, em bị hạn chế về việc lập trình , nó khiến em nhiều lúc phải cảm thấy áp lực, nhưng em lại thích các môn thiên về tài liệu , phân tích. Thầy có thể cho em hỏi em nên tiếp cận lĩnh vực nào trong ngành IT là tốt nhất ạ?

Answer: As student in Software Engineering, you do have several options:

1)    You could focus on Requirements Engineering area to develop your career as a business analysts, requirements engineer (these are same job with different names). This job does not require coding (Since you do not like it but you should have knowledge about it) but it requires you to build customer relationships, understand their business and  their needs. By having this relationship, you can obtain their requirements, analyze requirements, transform them from customer’s view into a developer’s view, then document them in the software requirements specification (SRS). This area is critical to the success of any development project because wrong requirements, missing requirements could be a disaster. All requirements must be thoroughly analyzed, documented, testable, traceable back to business needs. Since you like to analyze and document, it seems that this area may fit you well as it requires analysis skills, writing skill to analyze and define these requirements to a level of detail sufficient for developer to design and implement them. In addition, you need some soft-skills such as communication, listening, and interview techniques. You also need to be able to apply use-case scenario to discuss with both customers and developers. You may want to take a course in Unified Modeling Language (UML) to strengthen this skill.

2)    You could take additional business courses then move into the Information System Management area (ISM) where you either manage IT systems for a company or provide IT support services to customers. There are two careers in ISM that you could choose:

a.     You could work as Service Manager (SM) where you focus on building relationship with customers and supporting them on their IT needs. Learn as much as you can about “Software as a services” and “Cloud computing”. This area is more on the management aspect than technical aspect but with your background in software engineering, I think you will do well.

b.     You could work as System Administrator (SA) where you focus on managing IT systems. In this case, you are responsible for the installation, configuration, operation, and maintenance of computing systems (hardware, software and network) and infrastructure. You will analyze the IT needs, develop operating procedures to ensure computing systems perform according to company requirements. Perform daily system monitoring, verifying the integrity and availability of all hardware, server resources, systems and key processes, reviewing system and application logs, and verifying completion of scheduled jobs such as backups.

Every position deals with a variety of problems and sometime you have to decide which one is best for you. Keep your passion on technical area and remember that there are much more in software engineering than just writing code. The current trends are move very quickly in much broader area that require more problem solving and analytical skills than just purely programming a computer language.