Several years ago I was working with a tech stack that I didn’t particularly enjoy. One of the frameworks in that stack started with an ‘Angular’ and ended with a ‘JS’ 😉. I was just beginning my career and knew that to be more marketable I was going to need to learn a more modern framework. Heck, even Angular was abandoning AngularJS.
I left my former company to join a small startup where I learned EmberJS which I enjoyed enough (kinda) but the market for Ember developers is fairly niche. ReactJS dominated the list of skills employers were looking for, especially in the SF Bay Area. If I wanted to work for one of the many startups dotting the SF landscape, I needed to know ReactJS.
Maybe you too are in this position: a junior to mid-level developer working with tech that is dated or just not your bag of beans. How do I switch? Where do I find the time? Am I doomed to work with whatever language my corporate overlords agreed on a decade before I heard of this company?
Finding tutorials or YouTube videos to teach you everything from data science to Scala is trivial nowadays but gaining practical, applicable knowledge from these bite-size or not so bite-size courses (how many 30 hour tutorials have you seen offered on Udemy?) is not always straightforward.
Don’t fall down the tutorial hole. The only real way to approach mastery of a framework or language is to build stuff. Ugly stuff, barely working stuff. But this is where you really have those aha! moments.
An acquaintance of mine called me one day and asked if I could help him build a small website for a startup idea he had. As he explained his idea to me, I thought it actually had some potential. I decided I was going to build it using ReactJS and NodeJS despite having no prior experience outside a couple Todo-List tutorials.
The process was slow at first. Wrapping my head around state, props and higher order components as well as the deployments and webpack (this was pre-CRA) took forever. It would have been a hell of a lot easier writing it in AngularJS and C# for me at the time.
Struggling to get that project in a semi-working state during the first month taught me more about how to write React (and NodeJS) than any Udemy course I had slogged through. I’m not against online courses at all, but for me at least, they can only serve as a starting point. Maybe I don’t want to build a chat app or a todo list or whatever it is my instructor has decided is the best project to teach me the fundamentals of x.
Less than a year later I was doing interviews for positions in the Bay Area and nearly each of them included a ReactJS portion. Let’s create a small component that fetches data, they’d say. A few of the take home assignments required creating small applications. I quickly saw the benefits from choosing to do that side project in ReactJS.
I was ultimately hired by a company where our main stack included NodeJS and React, the two frameworks I had used to build that side project. As is custom at most startups, there wasn’t much hand holding as I took on my first tickets. I was ready for it though — I was finally working in the tech stack I wanted, all thanks to that small side project.
You can’t depend on your company to get you ready for the next job or trend. They are in the business of writing software quickly and efficiently for their particular purposes. Try convincing your manager to re-write your decade old AngularJS app using React or Vue or Angular. The cards are not in your favor here. A side project is your chance to really experiment and gain the real world experience you need to become the kind of developer you want to be.