I’ve been attempting to learn to code for a few years now on and off. To a degree this is for work reasons (I’m a librarian, with systems librarian tendancies, and some opportunities to write code as part of my job). It’s also because I aspire to write code full time for a living.

I’m aware that second reason is somewhat unrealistic. I’m 42 years old, have two kids and a mortgage, and all the other things going on in a life that mean I need to earn money. Ideally I need to keep earning the same amount of money I do now. Either that, or make some major lifestyle changes, that frankly, I’m not that keen on thinking about.

That said, I still want to improve as a code writer, not least because I think it’s a useful skill. I also love doing it, and I want to pass on that enthusiasm to my kids as they get to an age when they are starting to be able to code themselves. I suppose in essence, I’m a hobbyist.

The intention behind this, my first Medium post, is to begin documenting things I’ve learned to date, primarily for my reference. Yes, I could do this offline. The reasons I’ve chosen a public platform must therefore be:

  • Other people might find this useful
  • It might be good self-promotion
  • I am learning, always learning, so maybe others might help if I get stuff wrong
  • I might just like the idea of self-publishing (I do)

I have blogged before (Medium is basically a blog platform, right?), I may blog again, but for now Medium is it. Mainly because I think it’s a really awesome platform.

So, for my first post here’s a guide based in my journey so far, for anyone thinking about learning to code themselves (are you hearing me librarians? I hear all this talk about how we could be the grease to the internet’s wheel, and how we need to learn these skills in order to remain relevant, well let’s see it!).

The basics

Learn HTML (the content layer): it’s the easiest thing to learn, and if you don’t know how to write good HTML you’re not going to get very far. Borrow a book or two, and try some of the million resources out there for learning HTML on the web. I’ve done CodeAcademy and Udacity courses, both are excellent, and free!

Learn CSS (the presentation layer): once you’ve got a good handle on how to mark up your content, you’ll want to learn how to add style. That’s where CSS comes in. Again books and online courses are, it seems to me, all you need. CodeAcademy and Udacity are also your best friends for this.

Learn to use the command line: I have found I am a lot more productive now I have even a small skill set for using the terminal on my Mac. There are also lots of things coding related things you can do using the command line that you just can’t do through your computers GUI. I’m not even going to pretend I know about using the Windows command line (see point 4).

CodeAcademy has a new course that I’m working through currently, it’s great so far. Can I also recommend The Command Line Crash Course.

Get a Mac or install Linux: It seems to me that the people who build the web don’t use Windows. So, you’re going to have a much harder time learning to code if you’re going to do it on a Windows machine. I’m not saying it’s impossible but I reckon it’s way harder, particularly when you start to go beyond writing HTML and get into installing and running programming languages.

If money is an issue a Raspberry pi 2 that will run Linux just fine will cost you $59.

The next steps

Learn the concepts of programming: I started with Ruby, via Learn to Program, but it didn’t grab me. Then I discovered Python, which totally blew my mind. Try this or this book, and maybe this or this course. They are all great. If you do some/all bits of some/all of those, you’ll be getting a pretty good feel for what you can do with a computer over and above your HTML/CSS skills.

Learn about Git: version control is important if you’re serious about managing your code, and growing as a code writer. Everyone seems to use Git for version control, so seems to me it’s the thing to learn. Additionally, GitHub is a fine place to showcase your code if you’re interested in getting noticed as a coder, or you want to collaborate , or you just want a permanent archive for you code. Once again, I’m going to recommend the Udacity course. Also, Version Control with Git is a good, concise little book on using git.

Learn JavaScript (the behaviour layer): I learnt some JS, mixed in with early HTML/CSS explorations, before I understood anything about programming as a discipline. That got me exactly nowhere! I find JS harder to write than Python, it’s somewhat further away from English than Python is to my mind. That’s why I’ve labelled it a next step and not a basic. I’m currently reading Eloquent JavaScript and the first of the You Don’t Know JS series, and I’m finding it’s a lot easier going now that I have some background programming knowledge.

Investigate some CSS frameworks: Bootstrap would be a good starting point, being easy to use but with lots of features. Semantic UI also looks pretty awesome, although having only discovered it today and it looks a little more complex than Bootstrap so maybe not ideal as a first framework to investigate if you’re easily daunted like me?

Investigate jQuery: I think a lot of people say jQuery is easier to learn than straight JS, which may well be true. Myself, I’d say again though that spending some time on skilling up on the basics of programming will help with learning jQuery. Again CodeAcademy and Udacity both have jQuery courses.

And that’s pretty much where I’ve reached down my coding road to this point, so that’s where I’ll end this for now. Next I’ll probably write something about how I set up my Mac for learning to code, then maybe something about web application frameworks, which I’ve dabbled in but am not comfortable saying I can use effectively at this point. Oh, and I’ll most certainly be writing about FreeCodeCamp, that I’ve recently got involved in and have fallen for in a fairly big way!

Until next time…