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.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University