Software Engineering skills

An old friend, also a Computer Science professor asked me about the impact of the global financial crisis to the software industry. He is worrying that his students may not be able to get jobs when they graduated. I told him that I think the current crisis will have significant impact to the software industry but to the better because it will eliminate inefficient companies and create many opportunities for well managed companies. Regarding employment, software engineering jobs is still rated on the top five in global demand so he should not have to worry. Assume that his students have the skills that match the demands of the industry.

He told me that he has been teaching Computer Science for many years based on the same curriculum and he did not know anything about software industry needs. I explained to him that the rate of change of software technology is extremely fast. New programming languages are created every year with new tools appear every few month. This fast rate of technology change means that software people are faced with a continuing need to learn new skills all the time.

He seemed surprised:” What are the new skills that my students need to know now?” I told him that there were number of topics that current education had not even mention such as software security, quality control, measurements and metrics, software architecture, software methods, and technology evaluation and transfer. These gaps need to be quickly filled if students want to work in global companies as professional software engineers.

I also told him that due to the economic recession; parents are very selective on the investments in education for their children. They want to make sure that their children will have jobs when they graduated so they carefully review what university has to offer and what programs would benefit their children. In the U.S, applications to admission in top universities had increased significantly in the past few years but many state schools encountered lower enrollment. As the financial crisis began to impact government, budgets were reduced. I have read in newspapers that many classes in state university were cancelled, and some professors were laid off. These things are happening as schools begin to cut costs due to state budget cuts. My friend took out his note and asked me about topics that software students need to learn so I shared with him about my research in global trends at CarnegieMellonUniversity.

Lat year in 2007, I conducted a survey to determine the needs in software industry. For this research, I sent out questionnaires to over 800 software companies in U.S, Europe, Australia, and Asia. I also visited 15 companies that have important roles in software industry such IBM, Microsoft, Oracle, SAP and interview their managers to determine their current and future needs. Following is the results of my research:

Topics Software Engineers need to learn between 2009 to 2019:

1) Agile method (i.e. SCRUM, Extreme Programming etc.).

2) Automated Testing

3) Computer Security

4) E-business, especially B2B (business to business)

5) Software as a Service (Saas)

6) SOA (Service-Oriented Architecture)

7) EA (Enterprise Architecture)

8) (BPR )Business Process Reengineering

9) Data mining and Business Intelligence;

10) Data warehouses

11) SCM (Supply Chain Management)

12) ERP (Enterprise Resource Planning)

13) CRM (Customer Resource Management)

14) RUP (Rational Unified Process)

15) UML (unified modeling language)

16) Use Cases

17) OLAP (On-line analytical processing)

18) GUI (Graphical user interface)

19) QFD (Quality function deployment)

20) RAD (Rapid application development)

21) Virtualization

22) Cloud computing

23) Supply-chain integration

24) E-Government

25) Entrepreneurship & Innovation

My friend reviewed his note and asked: “Many topics are relatively new. How can university professors stay current with these latest technologies? How can they learn these new concepts well enough to be effective in their teachings?

I told him that technology knowledge is not something you learn only once but must continue to learn all your life or be a lifelong learner. Due to the fast changing in technology area, knowledge has become an essential requirement to all professionals. As professor at CarnegieMellonUniversity, I have to attend number of seminars, workshops every year to keep current with technology changes. I have to conduct research and published papers every year in certain topics and have knowledge on some technological fields. We have to stay current so our students can stay current.

My friend agreed:” That is good for professors because that is their jobs but what’s about software engineers and managers, how can they keep their knowledge current? There are so many things to learn and most people have limited amount of time that can be spent?

I told him that not every new topic is appropriate for every project. It is important for software engineers and managers to know enough about each topic so they can select the appropriate one for specific projects. In the fast changing time, they need to update their skills by attending short course training like special seminars, workshops so they can make the right decision. That is why I think every software professional must also be lifelong learners. In the highly competitive global market, as inefficient companies are being eliminated, people with obsolete skills will also find it difficult to maintain their position.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University