A few months ago I went to a coding meetup in Edinburgh, Scotland where I live and met Josh Carvel, who at the time said he was taking some time out to learn coding from scratch.
You got your first software developer job after a few months of self-learning. Can you tell me a little about the role?
I'm a front-end developer at Annotate Software, who basically provide a digital workplace for managing and collaborating on documents. I'm working on a brand new codebase which will be replacing the old product. The front end is using React, which I've been using for quite a while, with TypeScript, which I'm learning on the job. I'm also branching out into the backend, which I haven't done before, by learning Java, Spring Boot and MongoDB.
What advice would you give a newbie?
There’s a lot I could say, including everything I’ve put out on my Twitter where I post about self-teaching. But if I had to say just a few things, it would be take your time, don’t sacrifice your mental or physical health, and always try to be positive about yourself and your potential – the process is very messy, just keep at it until you succeed.
How long did it take from starting coding to being offered a job?
In total it was over a year of learning, but from when I started seriously it was 9 months (6 months full-time). I started learning the basics of coding very casually around the beginning of 2018. Mostly I was trying to get to grips with what I would need to learn and what kind of job I could get. It was pretty overwhelming, and progress was slow at first. I had a list of things to learn that was far too long, but I knew I needed HTML, CSS and JS so I started there on Codecademy.
I would study a little bit in the mornings before work. I was just learning absolute fundamentals, I didn’t even know what an IDE was at this point and I hadn’t actually made anything. I also read a lot of articles on learning to code and listened to people’s stories on podcasts like Learn to Code With Me and CodeNewbies. I think it’s important to remember that you can’t skip this step – it takes time to understand what a developer actually does, what route you want to go down, what the industry is like and what tools are used.
My employer had allowed me to take a career break and I had enough savings to manage not working for 6 months. It started on 1 September 2018. Inspired by ‘How I learned to code and get a developer job in 3 months’ style articles online, I confidently thought I was going to learn enough to get a job in 3 months, spend a month applying and be employed by 2019.
There’s no harm in optimism, but I didn’t really understand the vastness of the undertaking when I jumped in. There were also times when I was stressed and deflated, and other life stuff got in the way too. I started applying to jobs in February 2019, the last month of my career break, though I didn’t actually feel ready then.
I returned to my work in March and tried to continue learning, though fitting it in around a full time job and applying for jobs was tough. I managed to change my working pattern to 4 days a week to give me more time, dipping into the last of my savings to afford this. I got a job offer I turned down at the end of April, and the offer I accepted towards the end of May.
In terms of how I got a job relatively quickly, there’s a lot of things that I could mention. Picking a job role (I was interested in full-stack development but narrowed it down to getting a job as a front-end developer) and working backwards from there helps. You want to learn the most in-demand skills (learning React worked out very well for me). You want to be learning the minimum you need to know, because it will take longer than you think to learn.
Also, I spent most of my time on my career break working on my own unique projects. It doesn’t have to be a unique idea – I built a weather app – and you can take things from tutorials, but the end result has to be yours. You’ll never be 100% efficient with your learning, but most of my efficiency was down to having to solve my own problems, day after day, hour after hour, minute after minute.
In a sense you really just need one thing to learn to code: access to Google. In all the time I spent learning to code, there wasn’t a single problem I couldn’t solve this way (apart from one weird edge case involving CSS and scrolling, which I still wonder about sometimes…). Then it all comes down to persistence, consistency and confidence.
How and why did you get into coding? What were you doing before?
I considered a lot of career routes but never found one that I wanted to commit to. I'd done a degree in law but had never really intended on being a lawyer, and the idea didn't motivate me. My biggest passion in life had always been music. A career in music didn’t seem practical to me (I wasn’t formally trained), and a career in anything else didn’t seem appealing.
IT seemed like the thing to get into but I had never been all that interested in technology, though I was always good at figuring out how to use it. I also always thought I would need a computer science degree to go into IT, and that didn’t seem financially feasible since I’d already done a degree, so I never pursued it.
I worked for several years at the Scottish Parliament as an Administrator, Enquiry Officer and finally an Assistant in the web and social media team. The website editing was done through a CMS there but learning HTML for the first time made me curious enough to look into web development.
The idea of building things with technology for a living was really exciting to me. The possibilities seemed endless. I could be really creative as well as applying logical rules. It seemed like a great fit for my skills. Then there was the more casual work environment and potential to work remotely and freelance. I set my mind on becoming a developer – the only question then was how.
I seem to remember you were learning React which has a reputation for being complex. How did you find learning that by yourself?
To be honest it’s not that difficult learning how to use it – actually understanding what’s really going on is the difficult bit. If I was doing things over I would use a course like Andrei Neagoie’s Zero to Mastery which covers it. I just learned it from various YouTube tutorials and the React documentation (though I didn’t properly understand the docs at the time).
Once you can use it, and understand it, the challenge is more the architecture of your app and keeping things logical and tidy. A lot of that just comes down to programming best practices which you gather over time – you have to write rubbish code before you learn how to write good code.
Of course things are complicated further because now React hooks is an option, which I’m yet to learn but apparently makes things easier. Not learning that was fine for me because I don’t currently need to use it at my job – I learned Redux instead (pretty recently). If you’re just starting with React now you’ll probably want to look into it as it becomes more widely used.
Did you find any particular coding courses online or books helpful for learning?
It’s not for building something – it’s for understanding the language, but it will be more than worth your while. I used it as a sort of shortcut alternative to Kyle Simpson’s You Don’t Know JS book series which I will get around to reading someday.
I also have Zero to Mastery (mentioned above) and React Testing with Jest and Enzyme by Bonnie Schulkin. Getting a course on testing was invaluable as it would have been very difficult to learn otherwise.
Whatever materials you want to use is fine as long as they are highly regarded. There are a ton of different websites and courses and most of them are probably great. It’s all just a means to an end, which is actually having the ability to build your own stuff, use your own judgement and solve your own problems.