12 May, 2021
Kĩ nghệ phần mềm cho các lĩnh vực kĩ nghệ khác
Bản kế hoạch nghề nghiệp là bản lộ trình dẫn bạn tới hoàn thành mục đích nghề nghiệp của bạn. Bạn không thể đạt tới được mục đích của mình nếu bạn không biết bạn đang đi đâu hay bạn muốn là cái gì. Tuy nhiên sau khi tốt nghiệp, nhiều kĩ sư điện, cơ khí, xây dựng và hàng không thường quá bận rộn với công việc rồi bị mắc vào vòng bận rộn kết thúc hết dự án nọ tới dự án kia và quên mất về bản kế hoạch nghề nghiệp của họ. Nhiều kĩ sư tin rằng vì họ có việc làm nên họ đang làm tốt nhưng có việc làm chỉ mới là bắt đầu vì họ cần giữ việc làm của họ và thăng tiến nghề nghiệp của họ.
Ngày nay nhiều thứ được dựa trên tự động hoá và công nghệ thông tin (CNTT) cho nên điều bản chất là các kĩ sư, bất kể lĩnh vực của bạn là gì, đều cần biết về CNTT và cách nó có hể giúp cho họ thăng tiến trong nghề nghiệp của họ. Mặc dầu phần lớn các chương trình đào tạo kĩ sư đều yêu cầu các kĩ năng lập trình cơ sở nhưng lập trình là không đủ, tôi tin các kĩ sư phải học nhiều về kĩ nghệ phần mềm. Kĩ nghệ phần mềm có thể được xác định như ứng dụng của các nguyên lí kĩ nghệ vào phát triển và duy trì hệ thống phần mềm chất lượng cao, được chuyển giao đúng thời hạn và trong ngân sách. Thay vì hội tụ phần lớn vào khía cạnh lập trình, các kĩ sư phần mềm yêu cầu hiểu hiểu thấu đáo về toàn thể việc phát triển sản phẩm, từ quan niệm tới bảo trì, cũng như phần cứng trên đó phần mềm chạy. Kĩ nghệ phần mềm là lí tưởng cho các lĩnh vực kĩ nghệ khác như điện tử, điện, xây dựng, và cơ khí để áp dụng các kĩ năng của họ vào thiết kế phần cứng, đặc biệt trong phát triển các hệ thống nhúng. Kĩ nghệ phần mềm hội tụ vào sản xuất ra các hệ thống rất lớn nơi các thành viên tổ có thể tới từ các lĩnh vực kĩ nghệ khác như điện tử, cơ khí v.v. Lời khuyên là các thành viên tổ nên hiểu cách tổ phải cộng tác để đạt tới mục đích chung. Về căn bản người kĩ sư phần mềm dùng mọi nguyên lí của khoa học máy tính, kiến trúc, thiết kế, tích hợp, quản lí, toán học, doanh nghiệp và các bộ môn kĩ nghệ khác, để cho nó bao quát một cơ sở rộng mà các lĩnh vực kĩ nghệ khác có thể cần học.
Tôi đã gặp các kĩ sư nói “Tôi là một kĩ sư cơ khí có kinh nghiệm và tôi có thể thiết kế bất kì cái gì.” Tôi bảo họ rằng họ có thể biết các thứ làm việc thế nào nhưng họ có thể không có khả năng tích hợp hệ thống phần mềm lớn vì họ cần các kĩ sư khác tham gia. Một kĩ sư điện có thể biết cách phần cứng làm việc, người đó có thể có tri thức tốt về mọi thiết kế mạch nhưng người đó chỉ có thể hội tụ vào phần điện tử, không vào toàn thể hệ thống. Từng kĩ sư đều được đào tạo để hội tụ vào việc nào đó nhưng kĩ nghệ phần mềm được đào tạo để kiến trúc và tích hợp nhiều cấu phần, bởi vì phần mềm hành động như “chất keo” gắn mọi thứ lại với nhau. Đó là lí do tại sao tôi tin các kĩ sư khác nên học kĩ nghệ phần mềm để thăng tiến nghề nghiệp của họ.
Kĩ nghệ phần mềm là về cộng tác với các bộ môn kĩ nghệ khác để phát triển sản phẩm chất lượng cao. Kĩ nghệ phần mềm hội tụ vào khía cạnh tích hợp của đa ngành để phát triển hệ thống phần mềm qui mô lớn cho nên bất kể tới lĩnh vực kĩ nghệ nào mà bạn đã học trong đại học, điều quan trọng là bạn học vài môn về kĩ nghệ phần mềm như kiến trúc, thiết kế và tích hợp để mở rộng tri thức của bạn và dùng những kĩ năng này để làm thăng tiến nghề nghiệp của bạn.
Tôi đã gặp nhiều kĩ sư bị mắc kẹt trong cùng vai trò của họ và không đi lên được trong công ti của họ. Tôi thường khuyên họ hội tụ vào thu nhận tri thức mới và học những kĩ năng mới để phân biệt họ với những người khác. Về truyền thống hầu hết các công ti đểu kiểm điểm nhân viên của họ một hay hai lần mỗi năm, nhưng phần lớn các kĩ sư không được chuẩn bị cho cuộc kiểm điểm này vì họ quá bận với công việc của họ. Tôi khuyên họ tập hợp mọi tài liệu của họ lại và biết cách trình bày những lời khen ngợi của họ cho người quản lí. Một trong những cách tốt nhất là chứng tỏ tri thức mới của họ và kĩ năng mới thu nhận là trình diễn nó cho người quản lí. Bằng không, họ sẽ tiếp tục ở cùng vị trí, với cùng lương và thất vọng ở chỗ cuối. Không có tri thức và kĩ năng thêm, họ có thể không có gì để trưng ra rằng họ xứng đáng được thăng cấp như người khác ở chức vụ tương tự đang làm cùng việc.
Mọi kĩ sư sẽ tiếp cận tới lúc theo nghề nghiệp của họ mà họ phải chọn hoặc phát triển thêm các kĩ năng phụ hoặc đứng nguyên để làm cùng công việc Họ phải quyết định con đường nào là đúng cho họ. Có những kĩ sư chỉ muốn ở lại trong lĩnh vực của họ và làm điều họ được đào tạo. Không có gì sai với việc ở nguyên trong khu vực miền nếu bạn thoải mái với việc ở lại mức nào đó cho toàn bộ nghề của bạn, nhưng nếu bạn muốn tiến lên, bạn cần mở rộng tri thức của bạn và phát triển các kĩ năng mới. Bằng việc có các kĩ năng kĩ nghệ phần mềm, bạn sẽ phân biệt bản thân bạn với những người khác vì nhiều thứ được kiếm soát bởi máy tính.
Là kĩ sư kĩ nghệ, một số trong các bạn có thể có các môn được chọn lựa, tôi mạnh mẽ khuyên rằng bạn nên học vài môn trong kĩ nghệ phần mềm vì nó sẽ giúp bạn mở rộng tri thức của bạn hướng tới kiến trúc, thiết kế và tích hợp. Kĩ nghệ phần mềm nhấn mạnh vào các nguyên lí và kĩ thuật mạnh để cho người tốt nghiệp sẽ có khả năng học và áp dụng các công nghệ mới khi chúng nổi lên trong tương lai. Trong thời đại thay đổi nhanh này, bạn cần tích cực trong nghề nghiệp của bạn thay vì ở mãi với truyền thống biết một khía cạnh thay vì cái nhìn rộng hơn nhiều.
—English version—
Software engineering for other engineering fields
A career plan is a road map that leads you to fulfill your career goals. You cannot achieve your goals if you do not know where you are going or what you want to be. However after graduated, many electrical, mechanical, civil and aerospace engineers are often too busy with works then get caught in the busy cycle of finishing one project after another and forget about their career plans. Many engineers believe that since they have job than they are doing fine but having a job is only the beginning as they need to keep their job and advance their careers.
Today many things are based on automation and information technology (IT) so it is essential that engineers, regardless of what your fields are, need to know about IT and how it can help them advance in their careers. Although most engineer training programs do require basic programming skills but programming is not enough, I believe engineers must learn more about software engineering. Software engineering can be defined as the application of engineering principles to the development and maintenance of high quality software system, delivered on time and within budget. Instead of focusing mostly on the programming aspect, software engineers requires a thorough understanding of the entire product development, from concept to maintenance, as well as the hardware on which the software runs. Software engineering is ideal for other engineering fields such as electronic, electrical, civil, and mechanical to apply their skills to hardware-software design, especially in the development of embedded systems. Software Engineering is focusing on the production of very large systems where team members may come from other engineering fields such as electronics, mechanical etc. It is recommended that team members understand how the team should collaborate to achieve the common goals. Basically software engineer uses all the principles of computer science, architecture, design, integrate, management, mathematics, business and other engineering disciplines, so it covers a broad base that other engineering fields may need to learn.
I have met engineers who say “I am an experienced mechanical engineer and I can design anything.” I told them that they may know how things work but they may not be able to integrate a large software system as they need other engineers to involve. An electrical engineer may know how hardware works, he may have good knowledge of all the circuit designs but he can only focus on the electronics parts, not the whole system. Each engineer field is trained to focus on certain thing but software engineering are trained to architect and integrate many components, because software act as the “glue” that tie everything together. That is why I believe other engineers should study software engineering to advance their careers.
Software engineering is about collaborating with other engineering disciplines to develop high quality product. Software engineering is focusing on the integrating aspect of multi-disciplines to develop large scale software system so regardless of what engineering fields that you have learned in college, it is important that you take few courses in software engineering such as architect, design and integration to broaden your knowledge and using these skills to advance your career.
I have met many engineers who are stuck in their same role and are not moving up in their company. I often advise them to focus on acquiring new knowledge and learning new skills to distinguish themselves from others. Traditionally most companies review their employees once or twice a year, but most engineers are not prepared for this review as they are too busy with their work. I advise them to gather all their materials in advance and know how to present their accomplishments to managers. One of the best way is to demonstrate their new knowledge and newly acquiring skills to show it to managers. Otherwise, they will continue to stay in the same position, with the same salary and frustration in the end. Without additional knowledge and skills, they may not have anything to show that they deserve to get a promotion as others in similar position are doing the same thing.
Every engineers will approach a time in their career where they must choose to either further develop additional skills or stay strictly to do the same work. They must deciding which path is right for them. There are engineers that only want to stay in their field and do what they are trained. There is nothing wrong with staying strictly in a domain area if you are comfortable with remaining at a certain level your entire career, but if you want to advance, you need to broaden your knowledge and develop new skills. By having software engineering skills, you will distinguish yourself from others as many things are controlled by computers.
As engineering students, some of you may have a choice of electives courses, I strongly recommend that you take few courses in software engineering as it will help you to broaden your knowledge towards architecture, design and integration. Software engineering emphasis strong principles and techniques so that graduates will be able to learn and apply new technologies as they emerge in the future. In this fast changing time, you need to be active in your career rather than stay with the tradition of knowing one aspect instead of a much broader view.