Sunday, May 24, 2020

Learning new skills: The Odin Project

One of the things people recommend to cope during lockdown is learning new skills. There are a lot of hacky memes about people learning Japanese and stuff like that. I'm sure there are probably people doing things like that just for the hell of it. Fair enough, good for them

But it makes sense to do something that is going to improve your employment prospects. I'd mentioned in my last weekly update that I had been learning to code. I've actually been doing it for a while, I started about a year ago and I'm getting near the end of the course.

Before I talk about what I'm doing, understanding the "why" is maybe more important. First thing to say is, I am not a coder. I am not involved in anything in the IT or technology industries. I've made a point of not saying what I actually do because it would make it really easy for my current employer to identify me from my posts. I like to shit on my employer and the company management (usually for good reason), I don't know if my posts could be used against me but I don't want to take that chance. It's better just to stay anonymous.

There were things I could do in my own industry. There are skills I could study and certifications I could do. But as I have said numerous times, I fucking hate what I do and the people I do it for. And it isn't just them specifically, the industry as a whole just seems to be run by arseholes. Things are changing slowly but it's still a largely old-fashioned, conservative, penny-pinching industry run by golf-club member-type twats.

What I did not want to do was get myself dug in further. Investing in skills related to what I do might bring advancement but it also gets me further into a world I despise. I've had a little taste of it before and it strikes me that the further up the ladder I got then the worse the job gets. The added financial reward did not make up for the sheer amount of hassle, stress and unhappiness it brought.

The other factor is that the industry I work in is very cyclic. It's one of the first to get hit during a recession and usually one of the last to recover. In fact, I'm still earning about 40% of my pre-2008 salary twelve years on. Getting new skills will do absolutely nothing for my prospects in another recession. It doesn't matter how skilled you are if there are no jobs.

So it made sense to be doing something that could lead in another direction. Coding has a lot going for it. Even junior positions are reasonably lucrative (compared to the industry I'm in), it tends to weather recessions well, there are tons of resources I can use without having to pay for courses, loads of opportunity for remote working, freelancing and self-employment, and long term it is a growth area. I've also got transferable skills like understanding engineering and design, project management and basic life skills like time management, social skills, team working, etc.

It came to me after I had a bit of flashback moment. I read an article about a year ago how where I'm originally from has become a bit of a European leader in technology. When I was a kid I was into home computers (Commodore 64's so that really dates me) and programming. I had a friend who was a couple of years older than me who went on to become the head of a big video game company in the US and I was easily as skilled and talented as he was. It really made me ask "how the fuck did I get here?". I made a couple of wrong turns when young, a couple of bad relationships as well and here I am, broke, in a dead end job, doing something that gives me zero satisfaction. I needed to course-correct or I was headed for doom.

That's what got me thinking about coding as a way of branching off my career. I did some searching around for resources and courses. I was even willing to pay for something like Open University (until I saw how much the bastards charge). That's when I came across the concept of coding bootcamps. Bootcamps are intensive, immersive courses designed to take you from know nothing to employable in a few months. But I couldn't afford either the time or the cost to do one so started looking at online.

From what I read, the most recommended options were Codecademy, Free Code Camp and The Odin Project. The general advice was just pick one and complete it, the main difference between them just comes down to the languages and technologies that are taught on the course. The skills you learn are more important than the details. So I picked The Odin Project based purely on their website being the most accessible. I signed up and a year later I am coming close to the end.

The Odin Project teaches "full stack web development". That means it teaches the "stack" of technologies necessary to create a web-based application. That means it teaches HTML & CSS for creating the visual look of web pages, Javascript for creating functionality within that web page and Ruby-on-Rails to build the code that does all the processing (like online shopping, blogging, booking hotels, etc) that exists on the server side that you never get to see.

Everything is broken down into 5 or 6 six courses which you work through at your own rate. Each course is made up of individual lessons which are usually either reading through info on external websites or watching selected videos on You Tube. Every few lessons you are given a series of projects to do that cement the learning of the previous lessons.

Some of the projects you can do in an hour, some longer. One of them, creating a chess game, took me around six weeks to finish. There are a lot of difficult concepts, too. The Odin Project says it is for complete novices but I think a bit of exposure to some basic computer science concepts wouldn't hurt before starting.

The big problem with the lessons is that it uses other people's stuff. The Odin Project doesn't have a lot of its own content, instead for each lesson it gives you a curated list of web-pages to read through. The quality can be variable and the level they are pitched at isn't consistent. Some resources seem like they are written for school-kids, others for people who know what they are doing. On the plus side, it means that they can swap things in and out as they find better resources for a particular subject. But this can also be frustrating as I've found I'll be halfway through a lesson when the structure has been changed while I've been working on it. Really annoying.

The other problem is that you are on your own. When something doesn't work or goes wrong then you need to figure it out for yourself. That can be a great learning tool but a lot of the time it is really frustrating. You need to have tenacity and discipline to see it through. There are forums like Stack Overflow where there are always similar questions that have been asked but you still need to be happy figuring stuff out for yourself.

But there are lots of positives. The reliance on external material means you are getting the best info that's out there even if you have to do a bit of extra reading because you don't understand something. And the lack of support means you have to get very savvy at solving problems. I've learned techniques for doing things because I had to work it out rather than being handed a standard method to follow. Most of all, it is really satisfying. I know how to do stuff. I know how things work.

In terms of time, it varies. I aim to do at least an hour a day but I don't think that is enough. It's not just that it takes longer to get anywhere, it is harder. You lose momentum and it's easy to forget something you read yesterday or the day before. If I was doing it again I'd aim for doing longer chunks of time even if that meant doing it less often. Some stuff is more enjoyable. Personally, I'd rather read than watch videos. But I really enjoy the coding projects and would happily lose hours writing code. I liked to spend my lunch break coding on my laptop somewhere quiet whenever I could. Or wake up early and write for an hour.

It doesn't take much of an investment in technology, either. I use a really shitty, old laptop for doing all my coding projects on. One thing I'd say, The Odin Projects doesn't work well with Windows computers. There is a lot of dicking around to get it to work with the software you need (Ruby and Rails). It all works better with Ubuntu or on a Mac. I got a cheap, old laptop for £50 on Ebay, added some extra memory and installed Ubuntu and it works fine for the coding projects. But it isn't easy if you don't know what you are doing and I still don't find Ubuntu a particularly friendly system.

A year down the line and I've really enjoyed it. I'm glad I've done it. The scary part is that I am now approaching the part where I start talking to employers and recruiters. In a couple of months it is going to become real. That's when I find out if the time I have invested has been worth it. I need an escape from this industry and I'm pinning my hopes on this being it. If it doesn't work then I don't know how I will feel about that.

I don't know what else to say other than if you are looking for a way to learn to code then The Odin Project has been a really thorough and enjoyable way to do it.

No comments:

Post a Comment