Back in early 2011, I dropped out of college with the intention of becoming a professional software developer. I wasn’t sure what it was going to look like, but I knew it was what I wanted to do. I ended up hearing about and attending an introduction to Ruby on Rails class hosted by Avi Flombaum. I had already started learning Ruby on my own, and I remember shyly bringing my very novice self to raise my hand and ask questions during his class. The result is that he noticed me, we talked after class, and he suggested we grab coffee. That turned into him making an offer for me to join his team at Designer Pages (which he was a co-founder of at the time) as an intern. That launched me on the fast track into becoming a well-rounded software developer, and he continued to mentor me until I landed my first job.

Not everybody is fortunate enough to find a mentor. For those people, starting out can seem much more intimidating and unreachable. What I’d like to detail is a few chosen bits of practical advice in response to questions about starting out that I get asked often.

What programming language should you learn first?

I have my pick of favorite languages but it doesn’t really matter whether you start with Java, Python, JavaScript, Ruby, C++, or another general purpose programming language. By a “general purpose” programming language, I mean something that is not domain specific (such as a language aimed at robotics programming). I think this advice is subtle but very important. I’ve met beginners who get caught up on picking the right first language, but the truth of the matter is you’re going to be learning valuable skills regardless of what programming language you pick.

The takeaway here is that learning to program is not just like learning a new spoken language. It’s more akin to learning how to give great speeches using language, and the language(s) you pick up along the way can help but will not define your ability to give great speeches.

Where should you start learning this programming language?

It’s worth doing some research on what the best beginner guides out there are for your first language. You will probably find several. When I picked up Ruby, one of the best was Michael Hartl’s Ruby on Rails tutorial. There were others, but his was centered around building a project and it gave me solid objectives to hit while I learned technical concepts. Your learning style may differ. There are now no shortage of resources such as Learn Code the Hard Way, MeetupLearn.co *, Coursera, and Code Academy, just to name a few off the top of my head. There are also books (remember those things?).

Many of these resources are going to claim they’re the best. The truth is, you should shop around and find what seems most effective for you. I cannot emphasize enough that shopping around is a good thing, as is being skeptical of the claims some of these programs make. It’s worth investing time in learning about what content out there is more effective for you and what is less effective. For example: Do you learn best with other people? Solo? By watching things? By reading things? By building projects? Do you like close guidance or figuring out some things by yourself? These are all meta learning questions. As a bonus, you may just learn more about how you effectively learn new things!

* Full Disclosure: I helped build this product, but do absolutely endorse it regardless.

How do you get your first job?

This may not apply to everybody. Some people want to learn programming for fun. Others want to learn it to use at their current job. In any case, if you’re looking to land a developer job you might end up getting stuck at some point. There’s a chicken-and-egg problem to being a developer someone wants to hire. Employers want to see experience, but no employer wants to hire those without it. What are new developers to do?

A few simple tips I found helpful are:

  • Contribute to open source projects on GitHub. See here. Make up for your lack of experience by listing said open source contributions on your resume.
  • Network with other developers, who probably have employers and can refer you. Also network with employers if possible. Prefer warm introductions to interviews rather than cold ones.
  • Educate yourself about and practice interviewing. See here.
  • If all else fails, freelance on small projects for a little while to build up experience. There is no shortage of talent needed on freelance platforms. My favorite at the moment is UpWork (formally Elance).

Something else…

Feel free to leave a comment below and if I have time, I will answer it.

Practical Advice for Becoming a Software Developer

2 thoughts on “Practical Advice for Becoming a Software Developer

  • 10/31/2016 at 7:29 PM
    Permalink

    I was looking for a CallerID app that uses OpenCNAM for Android and found your site. Did you create an app, if so what is it called and is it still available? Where can I get it. Thanks in advance.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *