From jobless to junior developer in 5 months

Tl,dr

  • From jobless and with no specific frontend knowledge to an entry level job in 5 months

  • Money spent: 0

  • Time spent studying: roughly 2.5 months, around 5 hours per day.

  • Study material: mainly freecodecamp modules 1 to 3 and javascript.info

  • Focused studying, with emphasis on deep understanding

  • Use a review system for the things you learn, Anki cards or something else

  • Put some effort in structuring well your resume so that it's relevant and easy to read

Introduction

I am going to explain how I transitioned from unemployed living in Barcelona and with barely any front end knowledge to employed in Amsterdam as an entry level front end developer, within 5 months. The main reason why I am writing this post is because, while learning, I met other front end students and many of them saw things unnecessarily hard.

I will explain what I did.

I hope this is useful to you.

Why studying programming?

I think it is important to start with a positive mindset that somehow you can do this and it is a good idea. I didn't decide to learn front end development right off the bat, I did it because I clearly saw lots of opportunities:

  • Using LinkedIn, I compared the amount of job offers (demand) with the amount of people with developer skills (offer). A simple LinkedIn search will give you some rough numbers. Programming had by far the best ratio of demand VS offer, compared to other markets I explored. In my eyes, programming became an obvious choice very, very quickly.

In the current market, as a developer odds are in your favor.

  • I talked to a few HR firms, and they all told me that becoming a developer is a great idea because there is a lot of demand, and therefore I would find a job in no time.

  • It's just common sense. Most companies, large or small, need some kind of web presence. Web technologies are constantly evolving. This means that you have endless opportunities to find new work.

This makes clear that web developer skills are currently very valuable, and that could help you find the idea of learning web development exciting.

Disclaimer:

I have no computer science degree, but I am more computer versed than the average person. During my PhD (in scientific research) I used linux all the time and became well acquainted with the unix shell (the command console) and the bare basics of programming languages. That was certainly useful to lose the fear to commands and consoles, but it is nothing you cannot acquire in a few days of studying.

Note: I've been told recently that having a PhD helped catch the eye of the interviewer.

Why front end web development?

I did compare offer VS demand ratios but it was not very obvious which field of engineering was a better choice. Other fields could have been an equally good or even better choice: data analysis, backend engineering or dev ops to name some. So I talked to people in the sector, asking them what field would bring me a job the fastest, and a couple of them recommended me to look into front end.

Literally one person told me: "learn HTML, CSS, JavaScript and React, and you're good to get a starting job".

He was not wrong.

Dev ops salaries are actually higher than in other fields. I would say ultimately depends on your own preferences and previous knowledge. For example, I picked front end for another reason, I am attracted to creating artwork and "visual works", so it was a more obvious choice for me. But that doesn't mean it's the best pick for everyone.

How did I study? What resources did I use?

FreeCodeCamp

I spent most of my waking hours studying in my room, since I was jobless anyway. I picked FreeCodeCamp, which I had seen recommended online, and followed its program for the first 3 modules. It is an entirely free (with optional donations if you want to help support it), very complete, "study at your own pace" introductory course.

I simply followed the program in FreeCodeCamp. It took me around one month to study the first three modules, which include HTML5, CSS3, JavaScript ES6, React/Redux, and a tiny bit of jQuery, Bootstrap and Sass. It is an excellent introduction to front end. You are going to be using most of these every day in your coding life.

Anki for reviews

One important thing I did right from the start was to take notes of what I studied to later convert them into Anki cards. Initially I also wrote summaries you can see them here, but I don't think these are worth the time spent on them. The Anki cards however were incredibly valuable. I created the Anki cards at the same time I studied, then every single day I studied the Anki deck. The main reason why Anki cards were so useful is that as you progress through the lessons, information keeps on piling up, and there's gonna be A LOT of new information you will have to learn. Without a review method, I would have forgotten most of the things I studied. Anki allowed me to remember almost everything in a very time-effective way.

I did not use Anki's default configuration. That would be worth its own article, but for starters you could read about the Janki method. Making Anki cards is an art, and it is possible to make it wrong. There are 3 main things to keep in mind:

  • One card = one and only one item to remember

  • Find a quick way to create the cards (Now I write the questions and answers in a plain text file and import the file)

  • Lower the repetition thresholds so that cards show up less frequently (to reduce the time spent in reviewing the cards)

That's all I did for about 4 or 5 weeks. I would say I spent on average 4 or 5 hours studying every single day, and it was hard work. If I had been working at the same time in a 40 hour/week job, I would have gone much slower. It is NOT EASY. It required full focus for hours, every day during weeks.

Anyway. I completed the first 3 modules of FreeCodeCamp. There are 7 modules in total, but I don't believe the last 4 are essential to find a job. They would be nice to have though, and would definitely increase your odds. But part of the reason why I am writing this, is to tell you what is the minimum you should do.

JavaScript.info

After completing the freecodecamp modules I decided I should become a "JavaScript expert", so I began reading javascript.info. This is a very in-depth journey into JavaScript, and of course, it is 100% free. I found this resource very useful, and took the same approach of studying while making Anki cards. Why did I want to learn more about JavaScript? I felt that learning one programming language very well was the best use of my time. Tools, frameworks, these come and go, but JavaScript has come to stay. At least for quite a long while. Having a good grasp of JavaScript is a great use of your time, and when job interviews come, they will test your knowledge about the language. Understand well its nuances: the keyword "this", the differences between arrow functions and function declarations, asynchronous code and promises, spread operators, destructuring assignments... sometimes it's gonna be a bit hard for you to tell what is important or what is not when it comes to JavaScript. Particularly in the beginning. In case of doubt, learn it. It won't hurt you.

What else did I do besides studying?

Besides studying frontend technologies, I also talked to people who worked as front end developers, recruiters, and bootcamp teachers. I talked to a handful of recruiters about my decision to move into the development world. This is the key information I got from them:

  • There is indeed a huge need for developers in the market.

  • Particularly, the Netherlands is a place in Europe where there is a developer shortage. Companies from this country go to other countries's job fairs to try and recruit talent. Me managing to easily find a job in Amsterdam supports this point.

  • A recruiter told me "the only thing you're missing is some kind of course certificate in your CV. It doesn't need to be official or expensive, anything does it". The reason? A certificate or course makes it easier for me to sell my CV to companies, given that I have no work experience as a developer. To them, it shows commitment.

In addition, I found a government-funded bootcamp in my city which costed me zero money (only a few coins spent on the coffee machine). The quality was very low. I completed it nonetheless and added it to my CV. All in all, the bootcamp was not a very useful way to spend my time and I'm not sure if it factored in getting a job in any significant way. My guess is it didn't, so I won't expand into it. There's not much of a take away here. Ultimately, what interviewees care most about is whether you can use front end tools or not. In sum, having a course of sorts in your CV is not going to hurt you, but you don't NEED it so don't let it be a blocker.

How do you know when you are ready to look for a job? I had no idea back then. In retrospective, I would say that the minimum to get a first job is:

  • Get well acquainted with HTML5, CSS3, JavaScript/ES6 and the fundamentals of one framework (React or Vue). This will take the longest time by far.

  • Feel comfortable with JS asynchronous code: that means Promises and async/await syntax.

  • Understand the basics about fetching data as JSON from external resources via APIs.

  • Goes without saying, but become familiar with an IDE, npm, git, github and some basic bash/unix commands. You'll get this knowledge while you learn the rest, so don't worry too much.

How did I look for a job?

Nothing special. I searched with LinkedIn, Indeed and Google, and in a couple of local job boards of the Netherlands and Denmark.

I was very careful in crafting my resume. One friend (thank you Miguel) had fine tuned his by getting feedback from many recruiters over the years, and I used the same structure. The advice I got could be summarized as follows:

  • Put the most relevant thing on top. Usually, relevant work experience is the most important thing. For your first job, it might be education instead. The most recent things should also go on top (always from newest to oldest).

  • Limit your CV to one single A4 page in one side. That will force you to remove the unimportant.

  • For each item in the CV (job experience, course...) use 2-4 bullet points to indicate what relevant things YOU (not your team) did. Be technical, brief and specific. Do not write long paragraphs, no one is going to read them.

I sent my resume as if I was shooting a machine gun, and I didn't use a motivation letter.

This is the resume I sent, in case you're curious (resume).

Finding a job was easy. My current job came out of spending one hour sending resumes. I only got a confirmation after 1 month, so I still put aside around 2 hours every 3 or 4 days to batch send resumes.

How did the job interviews go?

The 4 interviews I did followed the same structure.

The first part was about getting to know you. You are asked why you applied to the job, what's your background and what are your expectations. Companies like smart employees that have a "will do / will fix" positive attitude and that don't plan to leave the company in 6 months. Try to show these traits while you tell your story and in the way you communicate. For example, I was warned that the rental market in Amsterdam is hard to navigate. I immediately replied that I've had to look for a flat abroad in other occasions, and that I was sure I could figure that out.

The second part was the technical interview. The key here is that, if you have studied enough, this will simply be about showing what you already know well, so you should not be worried about it. I faced 3 types of technical interviews, either explaining the code of a project you have done, being asked technical questions, or getting a homework project. Let's look at each one by one:

Describing the code of one of your projects

I was asked to pick up any one of my recent projects, go through the code and explain it. At some point I was also asked to do a bit of code refactoring (improving your code for better readability and structure). In my opinion this is the most logical type of technical interview, because the fundamental knowledge is implied, and you are showing that you have technical knowledge. If you're going to face this interview, you must have learned well HTML, CSS, JavaScript ES6 and one frontend framework, and then you must have done 2 or 3 TINY projects with it. Think at the widget level more than at the full website level. This is the project I used in the interview: https://github.com/luismartinezs/studio-ghibli-books, as you can see it is very damn simple, but it was enough to show that I had a decent grasp of the fundamentals.

Technical questions

I was asked about ES6 JavaScript features. What does it mean adding "..." in front of an array or an object? What are the differences between a function declaration and an arrow function? This type of evaluation is a bit trickier in my opinion, because you may get lucky or unlucky with the questions and your knowledge might be either overestimated or underestimated as a consequence.

Homework projects

I was handed a project after an interview with Accenture. It took me around 20 hours to complete, and I only got a reply after one entire month (they replied that they wanted someone with more experience). This type of tests are usually asked for when the interviewer doesn't have technical knowledge and cannot evaluate you on the spot, so they pass the results of the test to the technical team for evaluation. I would suggest declining this type of tests. A company asking you to spend even 4 hours to solve a test just to evaluate you, rather than having someone from their technical team interview you, is asking you to waste your time. Only do the test if you have nothing better to do and you see the test as practice.

The bottom line is very simple: understand well the fundamentals, and the rest will follow.

What would I do differently?

There's very little I would have done different. There's only one way I could have gone faster: first, skip the part about jQuery in freecodecamp. After finishing the first 3 modules of freecodecamp, I would have skipped the bootcamp and begun building 2 or 3 sample projects with React. These projects should:

  • Look like something you might see in a website

  • They should be very simple, e.g. 2-3 days per project, which at your initial level will be the time you'll need to do a very simple widget from scratch

  • Need to incorporate proper calls to external APIs, using fetch.

Once I had these done, I would have begun looking for a job, as I would know everything required to perform decently well in an interview.

Thant's all for now. I'm happy to reply to any questions or comments that you may have.

Links