In August 2019 I finished the Core curriculum at Launch School, quit my job, and began the final phase of my quest to become a web developer. This blog sets out what I did to try and get my first job.
I think this is a pretty typical period for people looking to get their first coding job. They finish some sort of formal programme like a boot camp, then they start pulling together everything they’ve learnt, building a portfolio of projects and applying for jobs. Hopefully this post will be helpful for others in similar situations, coming out of Launch School or similar programs, and looking to get their first software jobs.
Launch School’s Foundation
Launch School is an online school that teaches full stack web development for beginners, with a real focus on learning fundamentals. You can learn more about their pedagogical approach here. I strongly recommend the programme.
I also had a good understanding of a lot of the fundamentals of how the web works, such as:
- The Document Object Model
- The theory behind relational databases
- HTTP and how the internet works
What I thought would probably set me apart from other boot camp graduates though was countless hours I had spent working through coding challenges, and taking a structured approach to solving problems through code. This focus on problem solving systematically is one of Launch School’s secret weapons.
Essentially, I thought I was ‘job ready’, but I just had to prove it. My definition of job ready is someone who can build a functioning web application from scratch. Consequently, I felt pretty confident that I would be able to get up to speed on any new languages or frameworks that an employer was looking for.
But how could I prove this to sceptical recruiters?
The jobs I was going for
It’s worth saying that I was very tempted to apply for Launch School’s Capstone programme, but decided it wasn’t for me. Capstone is a programme for people applying to jobs at top software engineering firms. This is why it’s a requirement for Capstone that students are able to carry out their career search in NYC, SF and a handful of other global tech hubs.
I do live within commuting distance of a global tech hub: London. However, I had just quit a job in London (an hour’s train ride away) in order to find a career closer to home!
I was really looking for a job in my home town of Brighton in the UK. There are a load of great tech companies in Brighton, but these are mainly smaller firms and agencies. No Google, no Facebook.
This meant that what I was looking to learn was quite different from the Capstone curriculum, which is more focused on algorithms and system design. I decided to focus on getting a good understanding of front end and back end technologies and start building some real projects.
Front end or backend?
At this stage I was reasonably agnostic between being a front-end or backend developer. I knew that my favourite part of web development was structured problem solving. I also knew that I hadn’t enjoyed trying to achieve pixel perfection with HTML and CSS, and have never shown much talent or enthusiasm for design. However, I also knew that there was a lot of client-side logic in modern web development, so at this stage I decided to keep my options open.
Having been led by the hand through the world of self-learning with Launch School, I was now out in the world on my own, with a baffling number of things that I could try and learn. What was my best next step?
Building a piece of CRUD
I had heard a lot of criticism of boot camp graduates that their projects are simply CRUD apps. However, whenever I heard this, I always felt a bit of a fraud, as I didn’t feel that I had actually built a CRUD app myself. At least, not one that I had planned out and built from scratch.
My first objective was to build a CRUD app. If I could complete this task, then I could move on to do some more complex things.
My first web site
My first site was a New Year’s resolution tracking app. I’d had this idea for years that this would be a good first project. Tracking It was classic CRUD stuff, getting a bit of data from users, storing it on the server, and then making it available again to others.
A few years ago, I had attempted to track my friend’s progress against their New Year’s resolutions manually. Each month I had emailed them to get updates on how their resolutions were progressing, then I had emailed a spreadsheet containing all these updates around the whole group. This was quite a lot of work, and at the time I wished I had a website to automate it all for me.
I decided to use a front-end framework to speed up the development process. I chose Vue.js as it seemed the easiest to learn for someone new to front-end frameworks.
I implemented a serverless backend in Google’s Firebase. Firebase is kind of a ‘Paint-By-Numbers’ API, which makes it really easy to interface with a database from the front end. The site had a number of features: it required user authentication and sharing data between users depending on their relationships (the ‘teams’ they had signed up to). You can see a version of this project here.
Having completed this, I had something to put on my CV, but it was still looking pretty flimsy.
Do you need to learn a backend language?
In my local area, it seemed like the most commonly requested backend language was Python. I had learnt Ruby in the first half of the Launch School curriculum, but my knowledge of the language was now pretty rusty (click here for an account of my journey through the Launch School curriculum). I thought it was better to try and learn Python and the Django framework, rather than attempting to get back into Ruby and picking up Rails.
It’s an interesting question though as to whether people in my position need to be proficient in a backend language.
Chris Lee (Launch School’s founder) talks about ‘Just-in-Time Learning’ as a model for how developers should focus on what to learn. Essentially, learn the fundamentals that will be necessary for your chosen career path, and everything else pick up as you need it. You want to be proficient enough in the principles of web development that you can quickly pickup any libraries or frameworks and get them working.
Focusing on the backend
I now have two projects, using a range of different technologies, that I had built from scratch and could talk about. I now felt ready to start applying for jobs?
Will this be enough? We will have to see.
What I haven’t done (but would like to)
The last couple of months has actually felt like something of a mad scramble to get some working code online, so I’ve not felt in the position to take my time and do some broader learning. This is a real shame, as I’m sure it will be a long time before I have another opportunity to spend time doing open-ended learning like this.
I haven’t been working on my problem-solving chops through Codewars challenges Nor have taken the time to learn some broader computer science content. I hope to solve these issues in the weeks to come. I’ve bought a couple of books that I intend to read through.
- “A Common Sense guide to Data Structures and Algorithms” by Jay Wengrow
- “Clean Architecture” by Robert ‘Uncle Bob’ Martin
This blog post has essentially laid out my opening strategy. But the strategy hasn’t been battle tested by a job search yet. I’m sure I’ve made a lot of missteps, and that when I start getting feedback from recruiters, I’ll realise what I’ve been doing the wrong. Once I’ve completed my job search, I’ll write a follow up blog post setting out what worked and what didn’t. Watch out for that.
Other bits and pieces
- I reviewed the entire LS curriculum. I’ve written a series of blog posts on this project which you can find here.
- I built my own personal website, to list my CV, a few blog posts, and the projects that I had built.
- I started assiduously networking, joined a local co-working space and infiltrated a few local regular technology meetup groups. This has proved really useful in getting contacts at companies where I would like to apply for jobs, and getting a sense of where the best places to work are.