Firmware Engineer, Minimalist, Improving Runner

Mail: How Do I Switch To A Career In Software?

May 21, 2013

In their 25th annual Jobs Rated report, CareerCast ranked Software Engineering as the #3 best job out of 200 for 2013. I've been working as a developer for 6 years now, and I couldn't agree more. Nothing beats designing and creating working applications out of thin air. It's extremely rewarding.

It seems the general population is taking notice of this as well. Kevin Systrom, CEO of Instagram, is one of many who has made the switch to a career in software development. With no formal engineering training, he taught himself how to program at night and ended up creating a one-billion dollar photo app.

I recently received an email from a friend asking for advice on how to switch industries. He currently works in finance, and as far as I know, is good at his job.

Yet, he's unsatisfied and struggles with how to transition to programming. While I'm no expert on this topic, I'd thought I share his email and my (slightly modified) response to him:

Hello everyone.

Over the last year I have been contemplating on the decision of whether to change industries. I have finally decided computer programming is for me.

I have dedicated hours to Codeacademy and Stanford cs lectures. Recently, I applied for Devbootcamp (Ruby on Rails) program in SF, but I failed in passing the interview. I am quiet devastated, but I refuse to give up.

However, as of now I am lost, I would like to learn RoR, Java, Javascript and Python. I can't commit another 4 hours to college, but I can commit to programs less than two years. So far the only program I have found in Colorado for RoR is http://davincicoders.com/.

If you have an recommendations I would love to hear. Eventually I would love to work as developer while designing my own things at home in parallel.

Hello aspiring developer!

First off, I'd like to commend you on your decision to change career paths. It takes a lot of guts to enter a new industry, especially one as challenging as computer programming.

I'm impressed by your initiative to learn (Codeacademy/Stanford Lectures) and commitment to improve. You may not realize it, but these are crucial skills to becoming a good developer! The only item I don't readily see is your skillset, which brings me to my next point.

You want to learn more about RoR, Java, Javascript, and Python - that's great. You've dedicated hours to learning programming practices and algorithms - even better.

But what have you made? What can you show me that demonstrates you know this stuff? Degrees, GPA's, and certifications are nice, but in the end, I would highly consider taking someone who's created an iPhone app on their own than someone who passed a course on objective-c.

I understand the challenges in front of you. Since you come from a different industry, you have no prior "real-world" coding experience. Since you can't commit to another 4 years of college, a degree is out of the question. The only option I see left is to, for a lack of words, hustle.

Here are some steps I would take if I were in your shoes. They can differ from person to person though:

1) Address your weaknesses

I don't know what qualifications they were looking for, but if attending Devboot camp is really important to you, then ask yourself why you failed the interview.

Did you stumble through algorithm questions? Then brush up on linked lists, binary search trees, hash tables, etc.. Google the different algorithms and try to implement them in C or Python or Java.

Did you get passed over due to lack of experience? Look for ways to expand your skillset in the particular technology you're interested in. Perhaps it's setting up a personal server at home to work with SQL databases. Or making an HTML5 snake game which involves graphics and game logic. Hands-on experience is invaluable.

2) Start a portfolio

Sign up for an account on Github. Dabble in some open source projects. Start a blog to share your experiences and showcases your side projects.

Or better yet, try creating your own web app on Heroku. You'll learn about designing the front end (Html/Css/Javascript), backend (Ruby), and bridging the two with the framework (RoR). The best part is it's all free! You may not have a degree/certification, but at least you'll be able to demonstrate a working product during your next interview.

3) Keep taking the coding classes

Do them over and over again until you're comfortable with the logic and programming. The language itself is less relevant than understanding how simple data structures and code flow works, so pick your favorite and run with it.

Learn how to implement objects and classes. Learn about inheritance and encapsulation. Incorporate basic design patterns into your code. There are many resources online.

For example, CS50x is a free course from Harvard provided by Edx. It goes over the basics of how computers, programming languages, algorithms and data-structures work.

4) Try to get an internship

You'll learn more and faster, in my opinion. It'll also provide you an experience which will be 5x more useful for your career and resume. I can't remember the last time I implemented a red-black tree. But I can demonstrate how to shingle tracks on a hard drive. What do you think will be more impressive to a storage company like Seagate, Western Digital, or Hitachi?

5) Don't stop learning

Subscribe to sites like HackerNews and blogs like Coding Horror. The industry is always evolving and the more you know, the better. Google everything. StackOverflow is your best friend.

I'm not sure if this was what you were looking for. I unfortunately didn't provide much specifics either. In the end, there is no right way to proceed. Perhaps RoR programs like the one you mentioned are the best way for you to learn.

I just wanted to provide a different perspective which few realize when they enter the tech industry. You need to attend pharmacy school to become a pharmacist. You need to have an MBA to get the investment banker position at a big firm. You need to pass the bar exam to become a lawyer.

For programming, there are no accreditations or formal exams needed.

You only need to have a passion in programming to be successful. Case in point: Bill Gates, Mark Zuckerberg, and Conner, the 7-year old who creates iPhone apps. It's never too late to change careers.