A roadmap for software developer

A first year Computer Science student asked me: “What is your advice on becoming a good software developer? What do I need to be a professional developer? Please advice."

Answer: As a college student, you will take a number of computer courses each year which will give you a good foundation for your technical knowledge. However to be a good software developer, you need to do more. Following is a high level roadmap that I often share with my students.

For first year students, you could start by reading programming books to learn about the development process then do the exercises by writing code. The more you write code the better you will improve your programming skills. It does not matter what language you learn, whether it is PHP, Java, or C++ etc. Eventually when you have sufficient skills, you may want to read more about software development methods, understand various lifecycle developments, and tools. In the summer, you should continue to practice writing code to improve your programming skills. You should at least master one programming language by the time you start the second year.

In the second year, you may want to improve your skills by form team with other students, especially someone who are better than you. In this self-organizing team, you challenge each other, discuss programming techniques, methods, tools and learn from others. This is where you build your professional skills as well as soft-skills. You may want to follow technology websites, forums, and blogs to expand your knowledge. Technology changes fast so keep up with the current trend in the industry is important. Professional people always read so building a good reading habit is important. During the summer, you need to continue to improve your skills by develop some simple software products such as websites or mobile apps. There are many tutorials on the internet that you can learn from so take advantage of these offering.

By the time you go to the third year, you may want to get a part time job develop software. Find someone who may need your skills and offer to them so you can practice more. It does not matter whether they pay you or not. What you need is to practice. You may want to help other students by create websites for them or volunteer to help improve the school's website. You may want to develop some mobile apps and share them with other students. Ask them for what they want and see if you can develop an app for it. The more you practice, the more you learn and you will learn a lot by actually doing work for others. You will learn how to get the right requirements, you will learn how to interact with different types of people, and you will learn how to design a software product. There is nothing better than actually doing real works.

In the summer of the third year, you will need to find a summer job or an internship with a software company. Nothing better than to work under the mentoring of experienced software developers who can teach you much more than what you can learn in books, or websites. A few months summer job can help you to develop more working experience than you can imagine. By this time you will understand that what you have learned in school is mostly high level knowledge and theories but by apply these theories into practice, you will develop the skills that let you do more. Basically without these theories, you can only do limited works (Mostly not well design or non-maintainable works, you can get the code work but it is not elegant or sophisticated enough.) By having both the knowledge and the practice, you will develop professional skills.

By the time you get to the fourth year, you already have a very strong knowledge and skills. This is the time where you focus on particular area and specific technology that you want to build your career on. Computer Science and Software Engineering have many specializations. This is the time where you let your passion help you to select which special area that you want to pursue and what kind of job that you want. You should focus on finding a job at the beginning of the fourth year, NOT until you graduate. If you do well in the summer job, the chance is you will get a job offer at the company that you worked in the summer.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University