I completely agree. I scored my dream job as my first true dev job mostly because of hard work, and because it was my dream job, with a whole lot of luck sprinkled in.
What I mean by that is I was passionate about the product itself (I work on the front end of a Auto Racing Video Gameās UI - I was a paying member of this service for years, so I knew the product better than most developers), so my passion was self-evident before I even submitted my resume.
I was extremely lucky too because the job was open, and it was in the skills I use (React, JavaScript, Webpack, Babel, Bootstrap, HTML5 and some CSS although not much). These jobs that are right in your wheelhouse donāt grow on trees, so I was very fortunate to find it, and even more fortunate that one of my favorite hobbies had a job opening in my area of the country.
I know me saying all this is probably depressing in a sense, because there were many things that worked in my favor that I had no right to be in my favor. These are things another person canāt rightfully reproduce. But those things alone didnāt land me the job. Iāll do my best to share what Iāve learned that I think did land me the job.
Master Something, Or Many Things.
Seriously. Master something. Or many things. But if you want to list something as a skill on your Resume master it. Youāre better off having 3 things you are a master at, than 15 things youāre only half good at (or worse). For me, I considered myself above-average in ES6 JavaScript, CSS3, React and to a lesser extent Node.js, Webpack and Babel.
Dive into hard problems. Master ES6+ JavaScript before you dive in deep in React (and really, get to know ES2019+ too). Know things that more senior level devs might not have caught up on. Just two weeks ago I taught one of the Sr. devs I work with what a React Fragment is, and how itās used. Iām not saying all Sr. devās donāt know this, but if you master as much as possible there will be areas where youāll end up filling in gaps your Sr devs will have missed.
Some topics Iād recommend you know like the back of your hand if you can:
- ES2018+ JavaScript (TypeScript would be cool, but only if you see a lot of job postings in your area. Master the basics first, then you can evolve into TS later). Take tests, really really work hard on knowing the hard parts. Closures, Promises, Classes, inheritence. If you know those well, youāre hire-able as is.
- Make your own React boilerplate. Learn how to configure webpack, babel, and eslint, and prettier boilerplate. It will be invaluable to understand how your tools work.
- Make apps. Make them non-trivial. Do the freeCodeCamp apps here. For me, the game of life was something that impressed the guys I interviewed with (and I thought it was pretty basic to be honest). You never know which ones will stand out, so make them, and make them good! If they arenāt finished, or donāt represent you well, donāt share them on your portfolio yet. Sure, let them be public on your GitHub account, but donāt promote them as if itās a finished product.
- Master Git. Seriously, if you master this one thing youāll be set for life. It seems simple, and it is, but working with teams with it is on another level. This is why contributing to open source is so valuable. Iāve been in my dream job for 10 months now, and I still think I suck at it. You can be better than me, I know you can.
Donāt Try To Master Everything
I fell into this trap so many times it makes me want to cry. Everything is new, and exciting. I tried to learn how to code C++, C, PHP, Ruby, Ruby on Rails, Node.js, Wordpress theming, React, and Angular on my journey. Each time I tried to learn it I put my heart and soul into it for a week or two, then lost interest and failed.
I was quickly becoming a jack of all trades, master of none. It was horrible. I was bad at HTML, bad at JavaScript, and bad at all the other programming languages. It killed me on so many fronts. To start with, I knew I sucked at these other languages, so it got me depressed. It reinforced itself when I would apply to these companies and could barely ever get a reply because I hadnāt built anything worth showing off (I never finished anything!), so all I had was code examples to show, and half-baked examples at that.
So donāt do what I did, donāt try to know everything. Pick something, anything, and commit to learning it. All the way. If you donāt find the passion to learn the thing, then trade it for another. It took me years until I found React and it was the first technology that really hit home with me. I was so passionate about React, that learning the same ES6+ JavaScript that I hated learning on my own was no longer a burden. It was something I looked forward to doing, rather than loathing.
This is why I said, donāt try to learn everything. Master the core things you value, and the market values, and go all in on it. Donāt advertise skills youāre not willing to invest in proceeding with.
You should be as confident speaking on 2 or 3 technologies as you are about your own best friends and family members. Nobody knows everything about everyone, and neither does everyone know everything about code. But thereās plenty of resources out there that expose what topics are worth knowing, and if you can be as familiar with those topics as you can be relative to your friends and family, youāll be fine.
I waited 3 1/2 months for my dream job after I thought I was āreadyā. The wait sucks. I wish I could make it easier for you. But I promise you, if you invest in yourself, it will pay off for you.
Sorry for the long essay, but I just got rolling and couldnāt stop.
Best of luck with everything!!
Jimmy