Software jobs

I received an email where the sender wrote: “I am a computer science major who graduated in 2006 but since I worked for an investment and stock trading company. I am unemployed for the last six months so I just wonder if it is possible for me to get a job in software industry? Since you have mentioned about a shortage of software people globally, if I want to work in the U.S how can I get a job there? What kind of skills do I need?

My answer: “Although you have a computer degree but things have changed since you graduated and the job market also has different needs due to the speed at which technology changes. If you want to work in the software industry, you may want to review your computing skills to determine whether you need to go back to school for retraining. It is possible that you may forget what you have learned in school since you never work in the software. In addition to programming skills such as C, C++, C# and Java, you may need to review your knowledge about software development life cycles. Today, the industry also requires knowledge in certain methodologies and skills associated with web development. It is important that you check with software companies where you live to determine what kind of skills that they need, it is always practical to start where you live first before looking elsewhere. If you want to work for foreign companies or want to work in the U.S then you need to have very good communication skills, especially in English. Based on what I know, most foreign companies only select applicants from certain universities that they already know and have good relationship with. Depend on the reputation of the school that you graduated, you may be considered as candidate for the position. Currently there are several trends that are emerging that you may need to know:

  1. The Web as a development platform: The web browser provides a good runtime environment and access to many applications. Today many software companies are choosing the web as their platform of choice for software development. Web development is very popular and there are many good development tools, debugging tools, and designing tools for the web that you need to know. You also need to learn about JavaScript libraries since it allows developers to get more done with JavaScript than ever before. It is important for you to have knowledge on internet applications, such as those written for Silverlight, Flash that allows developers to break free of the limitations of HTML and take advantage of a range of resources and features while guaranteeing compatibility across platforms.
  2. Cloud Computing: You may want to learn more about Software as a Service (SaaS) and Cloud Computing since this is a booming area that allows companies to leverage computing resources by rental rather than buying. It also allows company to scale up to handle peak loads and avoid the overhead of managing hardware infrastructures. Cloud computing also help keep computing at a reasonable and predictable cost. You may need to understand more about Windows Server, Windows Azure, SQL Azure, MySQL, and services such as Windows Live, Office, and Xbox Live because there are some needs in this area.
  3. Agile development: As developers, you must know this method, including Scrum, Extreme programming, Test-driven development, and Continuous integration. These are commonly used often in combination with other software development methods. Many companies in the U.S are using Agile today so if you want to work for a U.S company, you need to know Agile well.
  4. Mobile applications: With the increasing availability of many mobile devices that connect to the internet (i.e., Smart phone, I-phone, Android, and Window 7 phone), most users want to access and interact with data in ways that are appropriate to their mobile devices' capabilities. I expect this kind of knowledge and skills will be needed for many telecommunication companies soon where users can access online identities and data easily and securely on all mobile devices. Today, Microsoft also provides access to users' data via Windows Live and Xbox LIVE. With the proliferation of so many devices there will be a great needs for people to have this skills. Windows 7 has many interfaces and applications that support for touch-enabled applications in the mobile platform. Silverlight and WPF also allow camera-based interactions and multi-touch, as has MFC.
  5. Teamwork and Soft-skills: Beside technical skills, you do need other soft skills such as communication skills, teamwork skills. Today distributed development enables team members to work closely despite geographic separation from each other. With globalization, many companies are hiring people in different places and bringing together worldwide talent to work toward a common project or goal. The ability of team members working across time zones and borders is becoming important so you may need to learn as much as possible about teamwork. There are many team activities such as distributed code reviews, remote paired programming, developer/tester collaboration and resource sharing.
  6. My final thought: If you are serious about the software industry, please learn as much as possible about, read as much as you can on whatever topics that interested you. I believe the software industry will continue to grow and expand everywhere and with the current skills shortage, many companies will have to reach out to where talents are. So be prepared and ready to take on new challenges whenever it comes.

Good luck on your job search.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University