It's official y'all, I got hired as a front-end developer!!! I am starting tomorrow and I am so pumped to share this news with the dev community.
Words cannot express how I happy about landing my first job. A year of self-teaching, building, failing, and networking finally paid off!
Here's a not-so-brief timeline of how it all started, some projects I built, and a few resources I used along the way.
Canada was undergoing it's first wave of the pandemic and we were under a strict lockdown. I was furloughed from my job with no idea of when things would get back to normal.
After about 3 weeks of feeling sorry for myself, binge-watching endless hours of Netflix, eating pizza and fries for breakfast, lunch, and dinner, I thought it was about time I got my s*** together and learn a new skill.
I knew I wanted to be a software developer since I had completed the HTML and CSS sections of freeCodeCamp a couple of years ago and actually enjoyed it. I also had a few developer friends who were unaffected or even thriving during the pandemic, thanks to our new 'everything is online and the internet rules the world' way of living.
Starting May, I was going to start my journey to be a developer!
I went over the HTML and CSS parts of freeCodeCamp. It was a good introduction, however I was not satisfied. I did not exactly understand how and when to use a certain CSS class since the exercises did a lot of hand holding.
Following video courses and tutorials, I realized that I'm more of a visual learner since I was able to understand the concepts better if they were explained visually. This realization led me to follow Andrew Mead's JS course on Udemy.
I learned most of the basics. However, I soon realized that just typing after the instructor is not a great way to learn how to code. This was a tough phase since I was unsure about my JS abilities. I thought taking other courses would help bolster my knowledge. I tried several YouTube tutorials, 10-hour free freeCodeCamp videos, and other Udemy courses. Everything to no avail.
I was in what you'd call it a "TUTORIAL HELL"!
While I was doubting my JS skills, I was also reading about how it's not enough to just know JS and one needs to learn a framework to get a job. I heard about Vue, React, and Angular for the first time. I was even more confused.
I decided to go ahead and learn React since it was literally everywhere. Someone also told me how they understood JS better after learning React. This inspired me!
The journey was kinda rough thought. Class components and the 'this' keyword overwhelmed me, JSX was something I had never seen before, I had no idea what configuring Webpack meant. I somehow tried to trudge along.
However, what broke the camel's back was Redux. Yes, the React ecosystem's necessary evil! Nothing made sense. What's a dispatch? What's a reducer? Wait but what about useState? I had no idea what I was doing and I started doubting myself. Am I cutout for this? Was all of this a mistake?
I came across a YouTube tutorial one day where someone was building a Netflix clone using React Hooks. I couldn't believe my eyes. It was probably the first time I had seen someone build something other than a boring todo-list.
I was instantly hooked (pun intended). I wanted to build that clone. I did not know much about hooks, but I knew that I was not gonna take an entire course to learn about it. I decided to learn it as I went along.
This is when the real learning began! I understood JSX, SCSS, basic hooks, using an open-source API. Heck, I even got a surface level understanding of suspense, lazy-loading and external packages like React Router, Lodash, something that I never thought I'd be able to master unless I took a course about it! I successfully deployed the project on Netlify via GitHub and in this process, also learned about the basics of CI/CD.
What everyone said was true. You cannot learn how to code by reading, listening or watching someone else do it. You have to get your hands dirty! I decided to learn new concepts as I needed them.
My next project was a COVID-19 Tracker for Canada. While building it, I learned about using a CSS framework, Chart.js, Leaflet, and Mapbox.
I decided to implement some back-end functionality to my next projects. I also decided to learn Next.js and Tailwind CSS. I built a simple Google Keep Clone to learn the basics of Next, Tailwind, and Firebase.
Once I got a hang of these technologies, I decided to build a Strength Training Workout app for my capstone project. Since I worked as a personal trainer for a year, I had a rough idea of what core features were needed to have a fully-functioning app. I doubled down on Next, Tailwind, and Firebase. I wrote about the app in this post if anyone's interested.
I spent the last month building my personal portfolio website (here's an article about how I was able to achieve perfect Lighthouse score on my portfolio website) and making improvements to my previous projects.
During the preparation process, I came across a few podcasts that recommended self-taught applicants to start networking and applying as soon as they learn a JS framework and think they're fairly competent.
I took this as a sign and joined all the tech related Meetups around the Toronto region. I made sure I updated my resume and my LinkedIn profile. I started actively participating and interacting with engineers, managers and startup founders. During one of these Meetups, I met the co-founder of a start-up and we got to talking. Apparently they were looking for a front-end developer and they wanted to interview me for the position. I finally got my first break!
It was three part interview process; the first consisted of basic questions about my career background and projects. The second was fairly technical where we talked about front-end design principles, SEO optimizations, and details about my projects. My final round consisted of a 2 hour coding challenge where I was asked to code a basic calculator (I will probably make a separate post that dives in further detail about my interview experience).
A week later I was offered the position!
If you did not read all of that and just want some tangible actions items, here are some of my key takeaways :
- Don't just watch tutorials, build projects. Push them to GitHub and deploy them. Use this free e-book for project ideas.
- Try to make your projects visually attractive. Dribble and Behance are amazing resources for inspiration.
- Start networking. Join your local meetups, connect with people you want to work for on LinkedIn, interact with the Tech Twitter. You never know who is hiring!
- You'll never be completely ready. If you know HTML, CSS, JS and some framework knowledge, start applying today!
I know I have been incredibly lucky to be at the right place at the right time to land my first dev job on my first interview without even applying for the position. This amazing Veritasium video perfectly sums up my experience and how I feel about luck and success. But I also know that I would never gotten this opportunity without investing almost a year of my life learning, building and teaching myself to code.
I'm so incredibly fortunate to have found this career and I cannot wait to start this journey!
Please drop a comment if you have any questions. I also post tons of useful resources and lessons learned from my development journey on Twitter at @prnvbirajdar.
Stay safe and happy coding everyone! 👨💻🚀👩💻