Business-technical skills

Students often asked me whether they should pursue a career in technical or in management. Of course, the answer really depends on the student’s goals in life and these goals often change with time. However, my answer is: “In the beginning you need technical skills but overtime you may want to switch into management area”.

As a software professional for many years, I believe the shift from technical skills to “business-technical” skills is very important in today’s market. Most companies can hire students with technical skills since they are trained in these skills but finding people with the business skills to manage projects or IT organization was something that could not easily be obtained. Today students in computer science are not trained in business skills. They are not trained in team work, many could not even communicate in business because they use “computing language” that customer does not understand. They do not know how to obtain requirements from customers or how to negotiate a contract. Many do not know how to estimate project’s efforts, time or even price. However, business students received training in project management could not manage software project either. They do not have the technical knowledge and do not understand the changing nature of software. Software project management is NOT project management because software always changes. Software is also intangible so to tracking progress of software project is difficult, if you are not technical enough. Software is also unique as it does require a lot of technical experiences in technology, platforms, language, systems, data base, features, and quality attributes. That is why the best software project managers usually come from people with lot of software experiences and with “proper training” in the business of software.

The US Bureau of Labor Statistics Occupational Outlook Handbook 2007 predicts that Systems Analyst and Software Engineer are expected to be among the fastest growing occupations through 2017. According to the government study in the US, Systems Analysts held 887,000 positions in 2006 (up from 268,000 positions in 2000) compared with 455,000 jobs in 2006 for computer programmers (down from 798,000 in 2000). The Handbook also states that employment for Computer programmers is “expected to grow slowly than other specialists.” And recent estimates by the Economic Policy Institute have put the number of U.S jobs being outsourced at approximately 330,000 to 500,000 jobs. About 75% of those were full-time computer programming jobs. According to Software Industry steering committee guidelines: A Systems Analyst is someone who strategize, plan and develop information systems or devise ways to apply existing systems’ resources to additional operations as taught in the Information System Management (ISM or IS) program. It also describes a Computer programmer is someone who writes programs according to the specifications determined by Systems Analysts, as taught in the Computer Science (CS) program. A Software Engineer is someone who architect, design and integrate systems into a cohesive “system of systems” to solve business problems as taught in the Software Engineering program. Based on these informations, the key to maintaining a good career after working in the technical area is to move up into more business-oriented positions such as Systems Analyst, Business Analyst, Project Manager, Systems Architect or Software Engineer. However, a computer programmer can’t just become a Systems Analyst or Software Engineer immediately. The transition takes time, more additional trainings and requires the right amount of experience and learning to be successful.

Let me give you some examples: Programmers often have to work with customers to obtain requirements and it is difficult when both sides can not communicate effectively. This is quite common because most programmers like to use “Computer languages” and most customers do not understand them. Customers often use “Business languages” that many programmers have no idea what they mean. Current Computer Science is focusing mostly in programming languages but not much in Requirements engineering or System analysis. However, people in Information System Management or Software Engineering are trained in both “languages” and that is why they can communicate effectively with both programmers and customers.

Programmers who have good technical background and experiences could take additional trainings to become software project managers. Software project manager is responsible for planning the project, negotiate with customers on resources, requirements, costs and schedule, hiring project team members and keeping track of the progress through every phase of development. As a manager, he is also responsible for assigning the work, dealing with everyday problems that affecting the work, and making sure each team member is working accordingly. Basically, software project manager must be a “business person”, a “technical person” as well as a “people oriented person” in order to succeed. To be the best, software project manager must work with technical and non-technical people at every level of the company as well as from the customer’s company. That is why this is NOT a “Learning on the job” as many programmers still think. Without additional trainings, it is impossible to make all the right decisions and to ensure project success.

Programmers who only like to work on technical skills without too much customer interaction may find Software engineering a better choice. This type of work is still technical but it involves more decision making to address the integration issues, the quality issues and how a new system will fit into the company’s old systems. In order to be successful, this line of work involves understand and control the components associated with the systems such as compatibility, scalability, security, cost, risk and other architecture factors. They must know how to decompose and isolate different components to fit them into the existing systems and in what order to implement each component according to an architecture plan. Without additional knowledge on how they could be integrated, it could be a disaster to integrate component that are not compatible with the current systems. This is the domain of Software engineering that programmers could take additional training courses on enterprise architecture, system architecture, product development, system engineering, interfaces and system integration so they can work as software engineers.

As I mentioned before, to be a good Systems analysts or Software engineer you must have “proper trainings” by enrolling in a good training programs. If you already have a strong technical background or already worked as a programmers than you could take additional trainings to become a high-level “business-technical” specialists. This is a very challenging work as you often work with senior managers, business managers, project managers, and customers, all of them have different perspectives, different views and opinions and by conducting trade-off analysis and balance their views, you could become the key person that can make the difference between success and failure. In this current global crisis, I have seen more and more companies hiring business analysts and software engineer to explore, review, architect and recommend systems that fit the business to prepare for the next “battle” when the economy recover. From my own perspective, I strongly believe software is still a great career with a promising future and it could be a good opportunity for students who like to aim high and take challenging works.

For people who already have extensive experiences in both technical and business but like to become senior managers (CIO or CEO), my recommendation is to enroll in an advanced degree program, such as an Master of Business Administration (MBA) or Master of Information System Management (MISM). To work for a global company or doing business globally you need to have advanced degree from university that is recognized globally. The relationship between Carnegie Mellon University with the Software Engineering Group of Vietnam (SEGVN) is a great opportunity to leverage your career as you could transfer to Carnegie Mellon or Seattle University as undergraduate student or after graduate from the CMU program at SEGVN member schools (Duy Tan, Van Lang and DTT) you could also enroll in the Master programs at both Carnegie Mellon or Seattle University.

As I shared with you an approach to improve your career by acquiring technical knowledge and business knowledge but there is one last advice: improve your foreign language, especially in English. As the world is getting smaller and flatter (I am sure that some of you have read “The World is Flat” from Thomas Friedman) communication is the critical skill, since this skill take much longer to develop so you need to start early. To build a solid foundation, you will need three factors: Communication – especially in foreign language, Technical and Business skills. Having all three is the key to moving up the career ladder at any company and it could mean the difference between being a programmer who can “code and test” or a project manager, a system analyst, an architect, a software engineer, a senior manager or even a founder of a global company that could change software industry in the future.

In this fast changing world, everything is possible. You may remember not long ago, two students at Harvard University dared to think big (They found a company called Microsoft) or two students from Stanford University also had a big dream (They found a company called Google). Few years ago, a student at Carnegie Mellon named James Gosling worked on a capstone project sponsored by Sun Microsystems to create a new programming language. As a joke to his friends in school he called it “Java” (As he drank a lot of coffee during the time at CMU). I am sure you all know what happened after he graduated. I really hope that someday, some of you will make history like that.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University