Sohan's Blog

Things I'm Learning

So You Want to Be a Software Developer. Where to Start?

You didn’t go to college to study computer science and you have no background on computer programming. You’re not quite happy with your current job area, and looking forward to something more rewarding and exciting. You’ve heard software development is generally a good area and often times people without any prior software background can actually get a job. But where do you start?

First, you’re thinking in the right direction, and I can assure you that if you like making things and have a nack for problem-solving, you can learn the skills to become a programmer. Now, let me share a path forward from here:

  1. Take an online course and learn a programming language. I’d suggest learning the programming language Ruby, using the courses offered by CodeSchool

  2. Build a demo application. Here’s an idea: Make an app for tracking personal expenses so that you can enter all your expenses and see reports about your expenses on a weekly / bi-weekly / monthly basis by type of expense such as food, transportation, accommodation, utility etc.

  3. Publish the application to the internet. Use Heroku to pubish your app to the internet and use it for yourself. When things don’t work as expected, fix bugs or extend the application to better serve your needs.

I’d say spend about 6 months on the steps 1-3. Once you’ve an application that you’re somewhat proud to show to your friends or prospective employees, it’s a sign that you’re progessing. But don’t apply for jobs just yet. I’d suggest spending another 6 months to learn a few more fundamental programming topics:

  1. Algorithms: Take an online course on basic algorithms to understand the different types of algorithmic approaches that can be used to solve known problems.
  2. Data structures: Take an online course on data structures since you’ll need to use them on a daily basis and this is one of those topics where it’ll be hard to learn on the job from no prior background.
  3. Object oriented concepts: Take an online course to understand the fundamental concepts behind object oriented programming. It takes years to master the concepts, but taking a course will greatly help you to get the basics right.

If you spent a year of your free time (8-10 hours a week), you’ve now acquired the basics that will be required to find a job. Obviously, you can squeeze it in a much smaller time window if you dedicate more time and already have some background with math / computing skills. But at a mimimum, I think it’ll take six months for most people to get there.

Now, I’d suggest you to take two bootcamps. The bootcamps are great in two ways. First, you get to work with peers and immerse into building something. Second, you can judge yourself against the peers to understand where you stand against the pros and newbies. Take notes and get ready for a second bootcamp. This time, the idea is to understand if you’ve improved since the first bootcamp and able to perform better than the first time.

After the bootcamps, if you’re feeling positive, it’s time to start looking for jobs. Make sure to find a job that matches your skills and keep an open mind about accepting a job that may not pay top dollars yet. If you find a job, and you’ll, go ahead and take it. You’ll be learnig at a fast pace on the job, and if you’re good, you’ll be rewarded accordingly either on the current job or on a new job. The idea is to focus on learning on the job, but also off the job to learn topics that may not be of interest on the job.

If you followed this plan, I expect you to get your first job as a programmer in 1.5-2 years, and get profecient in 4 years. Prepare accordingly. May be the 4 years is worth when you consider you’ll be happier and better rewarded for many more years to come.