New opportunity in the industry

Since 2009, the global job market has increasingly focus more on the technical areas and much less on the business. The highest demand area listed in every country’s job market is Information Technology area (IT). The top job is Software Engineering, a job that involves the managing, design and creation of software for everything, from large cloud computer system to mobile phone applications and computer games. This category includes: Project manager, IT service manager, Software architect, Security specialist, and Software developer.

According to this year’s market report worldwide, there is a shortage of Software Engineer across a wide variety of industries, skill levels, and salary ranges. Why Software Engineer is in such high demand? After the financial crisis in 2007, there are two emerging areas, Mobile applications and Cloud computing, that are growing strong. Many investments firms that have been standing still for years, due to the financial crisis, suddenly see an opportunity that they should seize. As more investments are pouring in these two areas, companies begin to hire people with the expectation of high growth and high profits. Many electronic companies are switching to smart-phones, tablets which in turn create more demands for software engineer who can write mobile applications. Many software companies are switching to develop “Cloud Computing” or applications hosted entirely online. The results are the job market for Software Engineering become very “HOT”.

The trend is not just happened in the U.S. but also Europe and Asia. Even countries like India and China that did well with software outsourcing also jump into Mobile applications and Cloud Computing. Because of this surge in high demand, Software Engineer jobs become the hottest career globally. So with the proliferation of mobile applications and cloud computing, students need to know what to study, and where to focus their learning to catch this opportunity.

Basically there are five important areas that students need to know: Software architecture, Concurrent programming, Web-based development, IT service management, and Requirements engineering. Of course, students must have the basic skills such as programming language (Java, C++, C#, and Object C), understand software development life-cycle, and debugging skills.

Among the skills, software architect is obviously very important. To design a “Cloud computing” system, engineers must learn how to switch their thinking from product development to a service provider mindset. This is a major shift as most software developers always think about building software product and ignore users’ views. That shift requires them to understand multi-tenancy and efficient distribution at the data level so they can design systems that balance performance with cost and how to optimize for speed and service-level requirements.

Concurrent programming is the ability to write for parallelism and handle the millions of instances of the software accessing the service at the same time. With Cloud Computing, the system must respond to demands from many users, all of them need the system fast. It is critical to build large and complex applications that can handle these demands. That require software engineers to understand the basic concept of software as a service such as: System availability, continuity, capacity, and security.

A key challenge in cloud computing is the software must also be closely tied to the revenue model to create profits. With software as a service, information system is no longer a “cost model” but “revenue generating model”. Software engineer must understand that their service offerings have to be validated by the customer all the time, Customers will decide if the services work or does not work for them. If the scale, architecture, and performance are not optimized, the system will affect the business outcomes of customers. It also means if not satisfy, the customers may NOT do business with the cloud company. Another key aspect is designing in security mechanisms so customers cannot see other customers’ data and having recovery plans in case some bad things happen.

According to a preliminary survey about cloud computing, many software engineers do NOT understand the risk of their software in the cloud. Most do not comprehend the risks in magnitude of scale at all. The attitude of “If there are defects we will fix them later” that exist in software development will NOT be accepted in the business industry. For example, last year a large financial bank had to shut down its cloud system when customers’ passwords were showing up on URLs. The Bank immediately canceled contract with the software firm.

With these emerging industries, there are many issues that requires new training, new thinking, and better trainings because failures will NOT be tolerated. That lead to the high demand of IT service management skills. The survey recommend that business industry should NOT sign contract with any cloud computing software, if they do not have exclusively large group of IT service manager. A business industry representative said: “Our industry need strong IT service management group to oversee our business, to improve our business, and make it more efficient and effective, These IT managers must be highly skilled with rigorous trainings to a well-defined competency levels.”

Unfortunately, even today there are few schools that teach Information System Management (ISM) skill focusing on IT service. The main job of an IT service manager is to design the services, provide the services, manage the operation of the services, and continual improve the services. This skill area is the combination of software and business knowledge to support business planning; aligning and integrating IT strategy with business goals; measure IT service effectiveness and efficiency, optimize costs and achieve return on investment (ROI).

According to the industry report, these high demand software engineering jobs require knowledge and skills in business, science and technology, and ALL of them require at least a bachelor degree or higher.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University