Advancing your careers

Last month I had lunch with several former students. The casual lunch quickly became a conversation about current trends in the software industry, how global software companies were planning and how software engineer could fit into those plans. Most of my former students have been working in the software industry for several years but they did not know what will be their next steps in their careers. They asked how they would fit and what area they should focus on. I advised them "Learn more about the business of your company."

Because most of my former students already have technical skills and have experiences in software projects so the next step is move up in their careers and learn about business skills to manage software projects. Business skills are becoming more important to the software industry as it is changing to adjust to the globalization trend. From what I have seen, the software industry already has many technical people such as designers, programmers, testers but very few good software managers.

The move to the "business area" does NOT mean they can take few courses then have the skill but it requires a lot of practices and experiences. My recommendation is to make the move “on-the-job” by assume more responsibility as they learn the business skills. I suggested to them that they should start by focusing on systems analysis and system design by accepting these responsibilities for their projects. By having these skills, they learn how software interacts with hardwares and how software system fits into a business needs. This is really a system engineer job but very few schools today offer system engineering trainings as it requires a lot of industry experiences. After having this skill, they could learn more business skills by assume more responsibilities in working with people from the business area, especially with the customers. This is the domain of requirements engineering or business analysis that are needed but few people can do it well. Over time, as their confidences grow, these knowledge and skills will become part of their jobs as they are progressing in their careers.

I have reviewed several management training courses but I found that unless they have the system engineering skills (Architect, design, and hardware interfaces knowledge) and requirements engineering or business analysis skills, they will NOT benefit much from taking these trainings. To have business skills, they must have experiences, to be a good manager they must know everything about software project and these must be built over time with practices. The worst thing that can happen to a good programmer is to get promoted to software manager without adequate time to prepare and without experiences in the system design and business analysis area. That is why today, we still have so many failed software projects and very few good software managers. As I have said several times “By doing that, company will lose a good programmer and gains a bad manager”. I have recommended to my students: “Never accept promotion to management without proper trainings and adequate preparation because you will be frustrated by your incompetent to do your job”.

A good software manager MUST have both technical skills and business skills. These skills can NOT be learned in classes but must be based on actual practices. A good software manager must understand customers' needs, be able to communicate well with customers and these “Soft skills” such as presentation skills, writing proposal skills, financial skills are essential. I recommend to my former students that they need to “learn more about the business of their company” by assume more responsibilities, actively participate in working with users identifying their issues, and resolving those issues BEFORE they take additional management training classes. Only then, they can assume the management position with confidences and be able to advance their careers with strong foundations. Having a good understanding of software projects, they can increase their interactions with business people; they can learn more about business issues and continue to improve their business skills.

As I have observed on the software industry market, today India is dominating the software service market but China is moving fast to catch up and the competition will be tough in the next few years. To stay in programming, testing and willing to work for less is not a good idea. To compete in price is not a long term solution, if the price is low but the quality is bad, the management is not good then you will never be able to compete in global market. To stay competitive, every company must compete on knowledge and skills. By having superior services and good customer satisfaction, company can clearly distinguish itself from others and get more businesses. The best way to shift from technical skills to business skills is “learning by doing” in the daily jobs and nothing is better than actual experiences.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University

You may like