My first job after university was in software. More than ten years later I was still working in the same industry, but I had never learnt to code. I understood enough to do a great job in sales and marketing, however I could never shake the feeling that I had, metaphorically speaking, ended up living in a country where I could communicate well, but did not speak the local language. As a result, learning to code had been on the “someday I should learn..” list for quite some time.
The moment I decided to take action was at an API conference that was attended almost exclusively by developers. During boring talks at most conferences people pull out their phones and start answering email, reading the news or browsing social media.
At this event things were different. Almost everybody was writing code instead of wasting time online. I realised that writing code must be a lot of fun, otherwise it would not be the distraction of choice for so many.
This was the final trigger. I decided then and there that I would learn to code well enough to build basic products. And that is what I have done in the two years since then, until recently when I put the programming on hold to complete this blogging challenge.
Here is an overview of my learning process in chronological order:
- Learn Enough Command Line. An intro to the command line for beginners. It is a good starting point because proficiency at the command line is a basic skill for any developer. I also enjoyed it, typing commands in the terminal and seeing the computer execute them gave an immediate sense of progress.
- Learn Enough Text Editor. I quickly worked my way through this tutorial because I figured I would learn this when I would actually start coding. So far that seems right.
- Learn Enough Git. The same as with the text editor. I aimed for a basic understanding so I knew what to revisit if I would come across it in practice.
- Head First HTML and CSS: A Learner’s Guide to Creating Standards-Based Web Pages. I knew some HTML and almost no CSS. From this book I learnt to do basic front-end development. Enough to tweak templates to meet my needs. This blog is an example of how I used that.
# Tip – I normally buy Kindle books, but got this one in paper format. A paper copy makes it easier to get a clear overview and review concepts. It was also a lot cheaper than the Kindle version, Amazon had second-hand copies on offer for around $5.
# Pro Tip. Don´t be a tight idiot like me, if it looks like a good deal check the publication date. This is *kind of* important with tech books. I only realised this when I came across the first image of a Nokia.
- Head First HTML5 Programming: Building Web Apps with JavaScript. This book went too fast for my ability at the time. For instance, how to write a loop was explained with a few examples and then a couple of exercises were provided. This was not sufficient for me to master the concept. In addition, to “become fluent” I need to repeatedly write the same type of code. Only reading an example and then doing a couple of exercises is not enough for me. So I looked for another book and thankfully found:
- A Smarter Way to Learn JavaScript. I loved this book. It explains a concept and then links to a site with exercises where you can practice. It was exactly what I needed.
- Head First HTML5 Programming: Building Web Apps with JavaScript. Thanks to the previous book I now was able to work my way through without any problems.
At this point I could do basic stuff in JavaScript (JS), but did not really enjoy it. Curly bracket, curly bracket etc. etc. I missed a certain intuitiveness and elegance in it. It just so happened that I had a call about something completely unrelated with Andy Hunt so I asked him about it.
Andy recommended learning Ruby if I was into webapps or focusing on Python if I had any ambition towards machine learning. So Ruby it was, and I bought my next book.
- Head First Ruby. At this point I started to understand why everyone was coding at the conference I mentioned at the beginning of the post. Programming in Ruby is actually fun and I flew through the book. What also helped was that I started seeing patterns and concepts that I was able to recognise because I had already learned JS.
- Ruby on Rails Tutorial. Ruby on Rails is a framework designed for web-development. The Rails Tutorial teaches how to develop your own applications “from zero to deploy”. Like in all other Learn Enough tutorials everything is explained very clearly. Currently I am 2/3 through and feel like I have only begun to scratch the surface. I plan on completing it this year.
I am glad I learnt the basics of programming and am getting close to a level where I could work as a (really) junior developer. Learning to code has allowed me to add more value to technical discussions and have a clearer idea about the feasibility of different ideas. Most importantly, being more self-sufficient gives a feeling of satisfaction.
Becoming a semi-decent developer would require quite some time and continuous dedication. This is not something I want to do because I prefer working on the business side. But I will continue to play around with Rails and Ruby for years to come because it is fun.
Maybe you are also considering learning to code. It could be a great way to invest your time. There are many myths such as having to be great at math, especially brilliant etc. That is all not true, just look at me for an example.
If you ever get stuck try a different language and/or resource. My not so positive experience with JS and falling in love with Ruby seems to be a common thread. And with the great variety of courses and books available online you can surely find one that is a good fit with your way of learning.