After spending months studying front end development (HTML, CSS, JavaScript, React, and Git), and weeks building my portfolio (well, actually two portfolios, because I didn’t like how it ended up looking the first one), I managed to land my first job in the web development industry in less than a week after I started looking for one.
It all happened very fast:
👉 On a Tuesday morning, I finally managed to finish my portfolio and choose five job offers I found on LinkedIn and Seek.com.au to send my updated resume with links to my portfolio.
👉 The same Tuesday in the afternoon, I received an email from the COO of one of the companies I applied to saying that he loved my story and how I presented myself on my website (a.k.a. my portfolio). He offered me to have an interview the same week, on Thursday afternoon.
👉 On Wednesday and Thursday morning, I reviewed some JavaScript concepts and practiced the most common interview questions (more details on this later).
👉 On Thursday afternoon, I ended up having a 2-hour interview with the COO and two senior developers in which I mostly explained how I reached the point in which I wanted to change careers from Telecommunications Engineering to Web Development in my 40s. The technical side of the interview was somewhat focused on general concepts, nothing too specific.
👉 On Friday morning, I received another email saying that they thought my profile will be a good fit for the company, and they sent me a coding challenge to deliver on the following Monday and present before their senior developers.
👉 I spent 30 hours working on the coding challenge during the weekend (GitLab link), and on Monday morning, I went to the company to answer questions about the development process and programming in general. They focused on specific sections of the challenge, and they were interested in knowing why I had chosen certain approaches to solving problems. They also made corrections and constructive critiques, which I received with gratitude because what I want is to learn and improve.
👉 On Monday afternoon, I got a job offer. The COO told me that the team was happy with my result and with how well I responded to improvement suggestions. I was happy with the offered salary (which I discussed during the interview process) and eager to start working at the company.
Warning: I have made an effort not to sound arrogant or narcissistic when I talk about myself when sharing my experience. If during the text you read you have that impression, my sincere apologies since that is the last thing I want.
Let me tell you about myself first, so you can evaluate this experience of getting a software development job better. Even though I wasn't a professional software developer before getting this web dev job, computers weren't a strange thing to me. I had my first PC 25 years ago, and I learned how to use it by myself. I have also studied Telecommunications Engineering, which gives me a deep understanding of computer networks and technology in general. Since I was 18, I had played with developing websites, but always as a hobby, nothing too serious. I haven't had training in software development, and the few concepts I knew were the result of tinkering with technology.
I’ll do my best effort to make a long story short and to present myself as truthfully as possible, so here I go.
In my previous job, I worked for 11 months in a technology company doing my first purely software development related work. Before that, I had developed some Bash scripts and a couple of modifications to existing codebases, mostly in simple languages, nothing involving pure OOP, for example.
They hired me to implement an open-source software in a networking module to allow a device to send and receive SNMP messages. The problem was that, even though the vendor said the software should work, it didn’t. This obstacle became an enabler to accept my boss’ suggestion: “Could you develop a C implementation specific to the device?” The only C programming I had done was more than 10 years in the past at university, and it was a really simple application, so I tried to manage his expectations by telling him that I would do my best, but there were no warranties of this working out.
So, I focused on re-learning C and doing the best job I could do given my limited knowledge. I managed to build a functional implementation in about 8 months. I lost count of how many times I felt frustrated, wanted to quit, and had impostor syndrome attacks. But the important thing is that I didn’t give up and I finished the project. Then I thought: 🤔 “Considering this experience, why don’t I just change my career path to Web Development, which is something I wanted to do for many years?”
During my whole professional life, I've had timid attempts of becoming a web developer. I read a PHP book when I was a teenager that enabled me to build a simple website for a family member, and made some simple websites for some other clients. I mostly used just HTML and CSS on Microsoft Frontpage and Dreamweaver (yes, I’m that old). When I started studying Telecommunications Engineering at university, I abandoned this hobby almost completely, and after finishing university I didn’t touch HTML or CSS for the following 8 or 9 years of corporate work.
So, after my last job, I decided to go all-in on web development and, once my contract ended, I didn’t look for another job. Instead, I started learning web development full time (and living off savings and my wife’s work, which was an awful experience for someone accustomed to being self-sustained).
0️⃣ The year previous to this last job I had completed The Web Developer Bootcamp by Colt Steele on Udemy (I can highly recommend it), which gave me an overall understanding of how much work becoming a web developer really is. Then, I dove deeper with front-end related technologies.
1️⃣ I started with HTML and CSS by reading “Learning Web Design: A Beginner's Guide to Html, Css, Javascript, and Web Graphics”, by Jennifer Niederst Robbins,
2️⃣ Then I moved on to JavaScript by reading “Eloquent JavaScript, 3rd Edition: A Modern Introduction to Programming”, by Marijn Haverbeke (which I yet have to finish) and doing The Complete JavaScript Course 2021: From Zero to Expert!, by Jonas Schmedtmann, on Udemy (the best software development course I have taken so far!),
3️⃣ Once I finished the previous course, I took another Udemy course: React - The Complete Guide (incl Hooks, React Router, Redux), by Maximilian Schwarzmüller.
4️⃣ I also poured some sprinkles of Git and design here and there.
Since I started with HTML and CSS to the point in which I felt confident enough to build my portfolio, four months went by.
From what I was reading in forums and on Twitter, I knew a portfolio will increase my chances of getting hired in the web development industry, especially without having direct experience in it.
To maximise the chances of getting hired, the portfolio needed to include:
0️⃣ A custom domain name. In my case, damiandemasi.com was available, so I took it. I also registered the colo.codes domain, as it's my nickname on social networks.
1️⃣ A catching hero section with immediate calls to action in the way of a “contact me” button and an option to download my resume.
2️⃣ A projects section with at least two projects. These projects will need to display my JavaScript knowledge and the use of APIs. This section should also include links to the live versions of the projects, as well as a GIF or video of the project being used (a sort of demo), and a description of the process I followed to create the project. The objective of all of this is to show how I approach coding challenges, the decisions I make, and how I deal with problems. Since I didn’t have commercial experience as a web developer, this section was the only way in which I could present my work.
3️⃣ A blog section with at least three articles. These articles should display how I address the description of technical concepts, and how well (or bad) I communicate in English (which is not my native language). I found this to be a perfect excuse to dig deeper into some specific aspects of the projects I already described in the previous section, such as the different uses of the useState
React hook.
4️⃣ An about me section, with easy and clear ways to access my LinkedIn profile, as well as my resume, GitHub profile, and Twitter. Even though my resume could have been accessed from the hero section, I believe having redundancy (without spamming) is a way to ensure the important parts of the portfolio (like the resume) aren’t overlooked. In this section, I went full-on honest mode and presented myself as I am. By doing so, I could push away employers that were not compatible with my personality and attract the ones that really liked how I am, thus speeding up the job selection process. I also briefly highlighted the technologies I was familiar with. In the end, this proved to be a correct approach, because both, the COO and CEO of the company that hired me mentioned that they loved how I presented myself online.
5️⃣ A social proof (reviews) section to demonstrate that I have a proven track record as an employee and team member. I used my LinkedIn recommendations as the source material for building this, and I provided links to my LinkedIn profile so potential employers could see I was not being dishonest.
6️⃣ And finally, a contact section. In it, I offered three different ways of contact: an email address, a LinkedIn link, and a completely functional form (thanks to Netlify). People have different preferences when it comes to contacting a potential employee, so I wanted to offer as much flexibility as feasible.
As you can see, the portfolio is like a repository of your professional life, and it should include projects and articles that display the way you work. When I linked my Twitter, GitHub and LinkedIn profiles, I made sure all of them were up to date, fully complete, and cohesive in content and looks with how I wanted to present myself to the world.
The process of building the portfolio was the longest in my web developer want-to-be journey. I started by building the projects, then writing some articles, polishing my GitHub, LinkedIn and Twitter profiles, ensuring my resume was up to date and fitted into just one page, and finally, building the portfolio itself.
I used Reddit extensively for bouncing ideas back and forth and asking for feedback regarding my projects and my portfolio itself. What could feel right for me often wasn’t for others. I found the /r/webdev and /r/careerquestions subreddits massively helpful throughout this process.
The job application process was pretty streamlined. I used LinkedIn Jobs and Seek.com.au to look for positions that were related to what my knowledge was up to that point. As a rule of thumb, if I was proficient in at least half of the technologies and requirements the job post asked for, I would apply for it.
I ended up applying to 🖐 five job postings on a Tuesday morning, and having ☝️ one interview offer on the afternoon of the same day, even though they were looking for a senior developer (but they didn’t ask too many requirements for the job position). I never heard from the other four applications. Even though I prepared quite a lot before starting to apply for jobs, I can’t help feeling I got lucky.
Once I knew I had secured an interview, I started preparing for it. I decided I would train for the most common interview questions, so I could speak fluently on those, and also prepare for the most important JavaScript-related questions, as I knew I will be interviewed by senior developers. I had just a day and a half to prepare, so I didn’t stress too much about it (there is only so much you can do in such a short time frame).
For the general interview questions, I used these awesome videos by Jeff Sue: Common interview questions and answers. He also has a playlist about LinkedIn profile tips that I can recommend.
For the technical questions about JavaScript, I used these videos for preparation:
I also reviewed some of the most basic and important JavaScript concepts from the notes I took whilst studying JavaScript.
I arrived at the first interview five minutes early and ended up having a 2-hour interview with the COO and two senior developers. We spoke about the company, my professional past, the reasons behind my migration from Argentina to Australia, and my working rights in Australia.
But the most important subject was the reason behind why I have chosen software development as a new career path. Whilst I was answering this question, I allowed my enthusiasm and passion to display through my answers, and that was exactly what they were looking for: someone passionate enough about software development to sit for several days trying to solve a problem, and with the disposition to learn whatever necessary to progress from a junior to a senior developer.
Another concept that I left very clear during the interview was my growth mindset: I know that I have a lot to learn, and I don’t mind admitting mistakes or being corrected because that is how I can learn. If there is something I don’t know today I will say it, and I will be eager to learn it. I’m also able to accept criticism because that is how I can improve my work. Ego and pride have no place in this process, and I see myself as a student, ready to absorb knowledge, and also as a teacher, ready to explain and share knowledge. I think this is the wisest way of approaching a software development career, and they agreed.
To sum up, during the interview, they focused on:
After the first interview, I was offered a coding challenge. I had to build a colour picker app in React, that needed to comply with certain requirements. It was a Friday and I needed to present it on the following Monday, so I had the weekend to do it. I ended up spending 30 hours in total developing the app, and I managed to fulfil most of the requirements, although it wasn’t perfect. Once I finished (a couple of hours before the second interview) I sent the code to the developers.
During the second interview, I was asked why I have chosen certain ways of doing things instead of others. The senior developers were pocking the code here and there asking me why I have done what I did. In the end, I think they were evaluating if I really knew what I had done. They offered some constructive criticism, which I embraced happily. Even though the app didn’t work 100% as expected, they were happy with the achieved result.
After that second interview, I was told that the developers were happy with my performance during the coding challenge and how I reacted to criticism (feedback), so they ended up offering me a job at their company.
During my first weeks working as a software developer, I have faced a massive codebase (JavaScript, React, Ruby on Rails, SCSS, etc.) that I’m still wrapping my head around one step at a time, the way Git and GitLab are used in a professional environment, and how a software development team performs.
I found myself having a relentless thirst for knowledge, and I can’t help feeling a bit like an impostor, although I know this is a normal feeling, and, during the interview process, I left very clear the fact that I’m still learning.
My journey in the software development world has just started. This is a career path that demands learning new technologies often. I can see myself being a senior developer five years from now, mentoring juniors, and, why not, having my own entrepreneurial projects.
Also published here