27 Jan, 2021
Học kĩ nghệ phần mềm
Một độc giả viết cho tôi: “Trong bài “Nhu cầu về việc làm CNTT” thầy đã viết rằng kĩ nghệ phần mềm là việc làm số một, có lương rất tốt, và đang có nhu cầu cao trên khắp thế giới. Em cần cái gì để trở thành người kĩ sư phần mềm thành công? Xin thầy lời khuyên.”
Đáp: Sau khi kiểm điểm mọi việc làm trên thị trường cho sinh viên đại học, Tạp chí CNN Money Magazine đã lựa ra “Kĩ nghệ phần mềm” là việc làm số một ở Mĩ. Để thu được vị trí này, bạn cần bằng đại học. Điều quan trọng là hiểu rằng kĩ nghệ phần mềm không phải là một với lập trình. Mọi kĩ sư phần mềm đều biết cách lập trình, nhưng không phải mọi người lập trình đều là kĩ sư phần mềm. Khác biệt là ở chỗ kĩ nghệ phần mềm được đào tạo trong nỗ lực làm việc tổ, với vai trò và trách nhiệm được xác định cho từng thành viên tổ. Lập trình chủ yếu là nỗ lực cá nhân để viết mã theo hướng dẫn đặc biệt. Người lập trình có thể làm việc trong tổ nhưng người đó không được đào tạo để làm bất kì vai trò nào khác vì việc làm của người đó chỉ là viết mã. Người kĩ sư phần mềm nhận được đào tạo về quản lí dự án, làm việc với khách hàng, thu lấy yêu cầu, phát triển lịch biểu dự án, lập kế hoạch ngày đưa ra, tương tác giữa các thành viên tổ chịu trách nhiệm cho đa dạng các cấu phần, thương lượng ngân sách, nỗ lực, phạm vi dự án, tài nguyên, đo hiệu năng dự án và nhiều nữa. Bằng việc có tri thức rộng hơn, kĩ sư phần mềm có thể tiến bộ trong nghề nghiệp sang các khu vực chuyên môn khác như kĩ nghệ yêu cầu, phân tích doanh nghiệp, quản lí dự án, kiến trúc hệ thống, thiết kế phần mềm v.v.
Để thành công trong kĩ nghệ phần mềm bạn phải bắt đầu với lập trình. Ngược với niềm tin rằng lập trình là khó, nó không phải vậy. Nhiều người có thể học lập trình trong vài tuần. Tất nhiên để là người lập trình tốt hơn, họ cần thực hành. Càng thực hành nhiều càng tốt. Nếu bạn chưa học lập trình, bạn có thể đi lên web, tìm bài học rồi học cách lập trình. Nó dễ hơn là bạn tưởng. Để hiểu logic và cấu trúc viết mã, bạn cần kĩ năng toán học nào đó. Không nhiều toán phức tạp nhưng toán cơ sở như số học, tính toán là đủ để bắt đầu.
Có nhiều lĩnh vực chuyên môn trong kĩ nghệ phần mềm cho nên bạn có thể hội tụ vào điều bạn muốn làm: Nếu bạn thích trò chơi máy tính và muốn làm việc trong ngành công nghiệp đó như người thiết kế trò chơi, bạn cần học nhiều hơn về phần mềm nhúng. Nếu bạn muốn làm việc cho công ti phần mềm như IBM, Intel, Microsoft, Google, v.v., thì bạn cần học nhiều ngôn ngữ lập trình hơn (C, C++, Java để bắt đầu), ứng dụng web và các nền. Nếu bạn tìm làm việc trong khu vực doanh nghiệp, xây dựng ứng dụng doanh nghiệp như Lập kế hoạch tài nguyên doanh nghiệp Enterprise Resource Planning (ERP), Quản lí dây chuyền cung cấp Supply Chain Management (SCM) hay Quản lí quan hệ khách hàng Customer Relation Management (CRM) hay cung cấp các dịch vụ như Tính toán mây thì xem xét lấy các lớp học thêm trong tài chính, doanh nghiệp và kế toán. Bạn có thể chọn đăng tuyển vào Quản lí hệ thông tin ISM (Information Systems Management) mà đã có nhiều môn doanh nghiệp. Bằng cấp này hội tụ nhiều vào kĩ năng quản lí và doanh nghiệp và ít vào kĩ thuật.
—-English version—-
Study Software Engineering
A reader wrote to me: “In the article “The demand for IT jobs” you wrote that software engineering is the number one job, has very good salary, and is in high demand all over the world. What do I need to become a successful software engineer? Please advise.”
Answer: After review all jobs in the market for college students, CNN Money Magazine selected “Software Engineering” as the number one job in the U.S. In order to obtain this position, you need a college degree. It is important to understand that software engineering is not the same as programming. Every software engineer knows how to program, but not every programmer is a software engineer. The difference is that software engineering is trained in teamwork effort, with roles and responsibilities defined for each team members. Programming is mainly an individual effort to write code according to specific instructions. A programmer may work in a team but he is not trained to do any other roles as his job is just write code. A software engineer receives training in managing project, working with customers, obtaining requirements, develop project schedule, planning release dates, interact between team members responsible for various components, negotiate budget, efforts, project scope, resources, measure project performance and more. By having a broader knowledge, software engineer can advance in the career to different specialized areas such as requirements engineering, business analysis, project management, system architecture, software designer etc.
To succeed in software engineering you must start with programming. Contradict to a belief that programming is difficult, it is not. Many people can learn a programming in about few weeks. Of course to be better programmer, they need practice. The more practices the better. If you have not yet learned programming, you can go to the web, find a tutorial then learn how to program. It is easier than you think. To understand the coding logic and structure, you need certain math skills. Not a lot of complex math but basic math such as arithmetic, calculus is sufficient to start.
There are many specialized field in software engineering so you can focus on what you want to do: If you like computer game and want to work in that industry as a game designer, you need to learn more about embedded software. If you want to work for software companies such as IBM, Intel, Microsoft, Google, etc., then you need to learn more programming languages (C, C++, Java to start), web applications and platforms. If you are looking to work in a business area, building business applications such as Enterprise Resource Planning (ERP), Supply Chain Management (SCM) or Customer Relation Management (CRM) or provide services such as Cloud Computing than consider taking additional class in Finance, Business and accounting. You may choose to enroll in a degree in ISM (Information Systems Management) which already has many business courses. This degree focuses more on management and business skills and less on technical.