Software Engineering today
According to a 2013 industry report, today Software Engineering is the “Hottest degree” with the highest demand but does not have enough people to fill all opening positions. The report stated that the reason for the shortage is the lack of students studying software engineering. Today for every software engineer that universities educate there are probably three to five positions opening. Demand is so high that software companies do not wait for students to graduate but make offers to them six months before graduation date.
Today most universities are still offering Computer Science training not Software Engineering. Computer Science involves in the theories and programming aspects such as the transfer and manipulation of data using programming languages. The focus of Computer Science training is in the application of mathematics and algorithms using programming languages. Computer science graduates are trained intensively in programming and algorithms development.
Software Engineering is concerned with all aspects of software production from the early phases through to the maintenance phase of the software. The focus of Software Engineering training is in the practical approach to the development, operation, and maintenance of software. Software engineering graduates are very serious in their responsibility for quality, correctness, and performance of their efforts.
As the growth of technology in business drives more demand for skilled workers, companies prefer to hire software engineering over computer science graduates since their skills are broader. An industry analyst wrote: “No matter what industry software engineering graduates are working in, there has never been an exciting time than today because everything in the house, cars, offices, and public areas is now controlled by software. People carry smartphones, tablets in their pockets and use it everywhere. A third of homes in the U.S. are connected by broadband to the Internet, many household items such as thermostat, washing machines, kitchens, TV, music players etc. are all controlled by software. With demand for more software comes high demand for software engineers.”
According to a report by the National Association of Colleges, seven of the ten highest paid degrees in 2013 are in engineering and software engineering has the highest salary. A business analyst wrote: “This is not surprising since there is a great deal of competition among companies for software engineering graduates. For the past ten years, petroleum engineering is the highest-paid degree but beginning in 2013, demand has changed and software engineering is now the highest-paid degree among all field of study. Other engineering degrees among the top 10 are chemical engineering, aerospace engineering, mechanical engineering, civil engineering, electronics engineering and telecommunications engineering. Next to these engineering degrees are computer science, information systems management and logistics management. The U.S. Department of Labor’s Bureau of Labor Statistics predicts a 30 percent growth rate for software engineering jobs through 2020, which is much higher than the growth rate for all other occupations. With enrollments in U.S. programs in software and other engineering fields only increasing slightly, U.S. schools will not be able to keep pace with industry demand and that is why the industry is pressuring U.S congress to change immigration laws to allow more college educated engineers to come and work in the U.S.
A common question among college students is: “What skills are in demand for today’s software engineers? Some people believe programming languages such as Java, Python, PHP, HTML5 and Ruby on Rails are hot but the fact is programming languages have a “short lifespan” as technology changes quickly. This is why Computer Science graduates who often known as very good in programming are not in favor by top companies because languages do not matter that much. When technology changes, demand changes, language also changes and there may not be a need for particular programming skill anymore. That is why many companies are looking to hire software engineers because they are more balanced, have a comprehensive knowledge, and their training requires them to ready to learn new things.
This change has reflected in the test that technology companies are asking their applicants to complete during the job interviews. An executive of big software company said: “Today most college educated graduates can write code, so it is no longer a critical factor. What we need are critical thinkers, graduates who can understand real-world business problem and be able to solve that problem. For example, we ask applicants to take a specification that requires them to write a fully functioning app that interfaces with an external API. It is a good way for us to measure their problem-solving capabilities and whether they’re a critical and analytical thinker.”
Technology companies consider the top hiring factor is the ability to solve problem and the second factor is the ability to communicate. A senior manager said: “Software is a communication problem, NOT a programming problem. That is why we only hire software engineers because their training includes soft-skills such as leadership, teamwork, negotiations and communication. Software engineers always work in team where many computer science students write code in isolation. Teamwork is a key element of software engineering program. Every team member must talk to each other and collaborate on projects in order to achieve the common goal. Good communication skills help teams to identify obstacles and work together to overcome them. Perhaps the most important is the ability for a software engineer to understand customer’s business processes and needs and this skill is not taught in computer science program.”
Today automation and robotics are two key areas in the manufacturing sector and they need more software engineers. A software engineer can take what exists as a human process, where a human is making decisions and automate it by organize it into a process control by software. The software engineering program also focuses on several domain areas from business to industry which give students a broader scope since many will write software applications in these areas. The software engineering program taught them about development life cycle, version control, unit testing and how to produce systems that are scalable and high performance which are how things are done in the real world.
Today software engineering companies do not rely on degree anymore but require an exam to demonstrate technical and problem-solving skills. A manager explains: “Since every graduate wants to work at Google, Facebook, Amazon or Microsoft and their tests are really difficult to select only the best. In this case, software engineering graduates have better chance since they are trained in solving problems and working in team. Programming is a small part of the test as these companies expect that applicants who graduate from college can write code.”
- Blogs of Prof. John Vu, Carnegie Mellon University