How to become a developer (for free!)

Apr 28, 2017

A how-to guide to becoming a developer from an agency head dev who did it all online for free.

Light Creative’s head developer, Amos, has a very interesting origin story. He’s only young, but a baby face belies his technical precision and broad know-how.

We started to wonder how he got to where he is and, turns out, his road map to success is incredible. Check out his guide to becoming a developer, using only free, publicly available online resources/courses (and a little initiative).

How I went from uni dropout to head dev at a design agency.

I was studying philosophy and I was sick of uni. So I dropped out during the break between semester one and two.

I chose not to go through an official uni course because I'd heard it was a redundant way to learn to code. The industry develops so quickly that by the time you graduate, everything you know is already outdated.

I emailed this guy I knew from school, who had started a tech company, and I said wanted to intern and learn to code. He took me under his wing, not really as an intern (the arrangement was unofficial) and pointed me towards free online courses. He said even though it was online, don't expect that it was going to be easy. Learning to code from their office became my life for three months - I was averaging 60-80 hours of work per week.

Because of the pace, I was finishing courses in less than two weeks that should have taken three months.

I tore through the online courseware. I started with a two-week course on Udacity. It was a free intro to computer science course and we used Python. It was great, a great introduction to programming fundamentals. They taught you how you’re supposed to think as a programmer. I’ve been told that’s one of the hardest things to learn online and they put a lot of time and effort into that facet when teaching at uni. There wasn’t any content specific to web development but a good, basic starting point. I’d really recommend it.

Then I did an an edx course, which was written by Massachusetts Institute of Technology. It’s a more advanced course, called ‘Introduction to Computer Science and Programming Using Python’ and it’s completely free. It’s an awesome course, with great teachers. There’s no face-to-face but after every lesson, you consolidate everything with quizzes.

The next thing was learning HTML and CSS on Treehouse for two long weeks.

It was the driest course I’ve ever done in my life. There was no flair and it was far too long. But, to be fair, when you’re dealing with CSS and HTML there’s no solving anything.

There’s a right answer and a wrong answer. It’s a book of rules to learn. I would recommend the course as a good base. It’s a great resource after you finish the course too. It’s good for all front-end design and basic web front-end stuff. It gives the basics. There’s no fun way to learn CSS and HTML, you just have to get through it. A big problem in this course is that you’re smashed with so much knowledge and you remember, maybe, 15% of it. Then you have another 40% of it that you vaguely know and you know where to find the solution even if you have to chase it on W3.

After that, I did another Udacity course, run by the guy who built Reddit. He was pro-hacking. We used Google App engine, using Python. The course lasted for a week.

Then I moved onto Code School.

I did all the JavaScript courses which gave me a really good foundation for Javascript as a language and meant I could go on to learn JavaScript web apps. That took about three weeks all up.

Then I learned Meteor, a JavaScript framework used to build web apps and mobile applications. That took about a week. This was the first time I had to read a book in all of this. I got the book for free online (you can read it here - they made it free in 2013 with some interesting results). The book happened to be written by some guys who lived one street over from me. So, I started going to all the Meteor meet-ups to get to know more advanced Meteor things.

Then I built an in-house Meteor application (for the tech company I was interning at) to track time, make sure people were on task, storing documents, etc. I started to build few websites and a few web apps for them. I stayed there for a bit but then the company dissolved thanks to poor management (hey, it happens). So I jumped in the deep end and took on some of their (now unattached) clients and started to apply everything I learned very quickly.

The thing about learning programming is... because of the nature of programming, there’s more than one right answer. Online courses can imply that right outcome is the right answer and how you get there doesn’t matter. The problem is there are often better, more efficient, and more legible answers that are “more” correct. I came out of online courses with the skills to make things work but often would overcomplicate things or not know certain fundamental web development skills and best practices, like working with a schema. I had all these skills but not the fundamental grasp on how everything should fit together. Why things should fit together like they do was even further out of my grasp.

To get to an advanced level with this stuff, you need personalised feedback from someone who is more skilled than you.

They can teach you the plethora of things that can’t be compacted into a quick course. Writing semantic code, for example, making things easy for other developers to pick up and continue to build upon. It was lucky that after I completed the courseware, I had a teacher I really liked. He introduced me to the saying:

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live

by John F. Woods and remembering that has made me particular about my code and driven me to always want to be better.

So, this all took me three months to learn. Followed by six months of work at the startup that had taught me to code. I did 12 months at another startup called Gleamers (which was like uber for cleaners). And then I got a job as a junior developer at Light Creative and I'm still here. Now I’m training a team under me using the same free courses as I used.

Every now and then I did a few short courses online through places like Lynda.

Getting in and doing the work gives you time to process the information that you’ve learned. You leave yourself room to process other information and learn more.

Understanding and building your knowledge is something that can’t be rushed. Your subconscious is always trying to work it out. Then one day you could be playing table tennis, mid-smash, and the whole internet makes sense.

I wouldn't recommend rookie devs jump into a project that’s completely out of their skill level unless they are honest about their skill level to their employer and have other devs to help them learn. You can aim for the outer reaches of your skill level. But if you don’t even know the language, the jargon, it’s very difficult to find the solution even when you Google it because you don’t even know the jargon to Google.

I’d recommend newbies go straight into website building and front-end work but don’t dive into backend straight away. Side projects are also really good. You get time to spend on the things you want to learn or what interests you. You can work on areas you feel you need help with and you don’t have to show constant progress or stick to deadlines.

If you're interested in learning to code, don't go down the traditional path of uni education. There are great resources out there from other coders to help kickstart your learning. If you're willing to do the work, jumping straight in as an intern or junior will teach you vital practical skills, but remember to back it up with a solid theoretical base of knowledge.

Light Creative is a Melbourne-based creative, content, and digital agency.