In this blog post, I'll be discussing why you shouldn't trust on new year's resolutions, how overrated motivation is, tools to help you succeed in the path of learning web development, and the road I took and recommend (as of December 2021) taking to become a Web Developer.
I will ask coach Gandalf for his opinions on different topics, and he will pour his wisdom and bluntness over us during the whole post.
๐งโ๐ป - Hey, coach Gandalf, what do you feel about new year's resolutions?
๐งโโ๏ธ - My dear little human, most of us have been there: a new year is coming, we feel this is our chance to stop some bad habits and start new ones, a perfect body and a perfect wallet are just around the corner. January 1st, we start doing that thing we planned on doing.
A week later, we find the first excuses on why we are permitted to skip a couple of days (or eat that tasty cake or buy that nice mechanical keyboard -our third one-).
Two weeks later, we find ourselves sliding into bad habits once more, telling us that they are not as bad after all. Our motivation explodes into the air a few moments after liftoff, like a failed rocket launch ๐๐ฅ. You don't believe me?
Take a look at this article describing why only 9% of people stick to their resolutions for a full year.
๐งโ๐ป - Hm... OK, maybe that's a bit too blunt, don't you think? I guess you are cranky because you ran out of tobacco for your pipeweed or something...
๐งโ๐ป - I'm motivated! But sometimes I don't feel like it...
๐งโโ๏ธ - Allow me to be blunt once more: motivation is overrated. According to this article by James Clear (the guy who wrote the great book Atomic Habits) describing how motivation works, motivation often comes after starting a new behavior, not before. You don't feel like it? You don't feel in the mood to start typing code, going through that Udemy course, writing that blog post (๐)?
Guess what: we all feel like that most of the time. What we need to do is just start. We can say to ourselves, "I will just do 10 minutes of this, and then I can drop it". The chances are that we will stick for more than 10 minutes, and the motivation will start growing after we start working on the thing.
๐งโ๐ป - Coach, I love setting goals!
๐งโโ๏ธ - Do you know that people that reach their goals, and people that don't, have the same goals in common? (Laughs while exhaling smoke from his pipe.) I guess I'm a fan of James Clear because he's back with another great article: Forget About Setting Goals. Focus on This Instead.
Goals can provide direction and even push you forward in the short term, but eventually, a well-designed system will always win. Having a system is what matters. Committing to the process is what makes the difference.
๐งโโ๏ธ - Don't think too much about your objective, your goal. Instead, focus your full attention on the day-to-day tasks you need to do in order to achieve that goal.
Our system could be a series of habits that enable us to learn to program. Waking up early and studying programming, taking some time each day to write code, bundling habits (from Atomic Habits), stopping chasing rabbit holes on the Internet, limiting our social network use, doing regular exercise and sleeping well to improve our cognitive stamina, are just some examples of what we could do.
๐งโโ๏ธ - In the end, learning to program and becoming who we want to become does not depend on a new year starting or on an ambitious goal. It depends on what we are doing day in and day out to support our identity: we are now a programmer.
๐งโ๐ป - This looks that is going to be hard...
๐งโโ๏ธ - This journey is not going to be easy, nor short. I can promise you moments of struggle, uncertainty, and despair. But don't panic! Not all who wander are lost. Here are some tools that are going to help you succeed in this path:
๐ Grit: a ferocious determination to put in the work. Being able to be resilient and hardworking. Know in a very deep way what is what you want. (From the book: Grit)
๐ A growth mindset: the view you adopt for yourself profoundly affects the way you lead your life. The hand youโre dealt is just the starting point for development. The growth mindset is based on the belief that your basic qualities are things you can cultivate through your efforts. (From the book: Mindset)
๐ A strong identity and habits that support that identity: habits shape your identity, and vice-versa. What type of person do you want to be? A programmer? What habits do a programmer have? Will he/she/them be binging Squid Game, or learning React to build an app? (From the book: Atomic Habits)
๐ Be able to do deep work: the ability to perform activities in a state of distraction-free concentration that pushes your cognitive capabilities to their limit. (From the book: Deep Work)
๐งโโ๏ธ - If you would like to learn a bit more about these tools, I would like to share with you four book summaries made by Brian Johnson:
๐ Grit
๐ Mindset
๐ Atomic Habits
๐ Deep Work
(You can find all these books in your favourite bookstore, of course.)
๐งโ๐ป - Thanks for the useful tips, coach Gandalf. Where should I start my web development journey?
๐งโโ๏ธ - Now that we have established how we can improve our chances of succeeding in learning web development, let's talk about what I think is the best path to follow. There are many tools and technologies to learn, and you can take a look at a road map here. I think the best option is to start with the Front-end, as it's the path that will have a not-so-steep learning curve (compared with DevOps or Back-end) and high demand for jobs.
๐งโโ๏ธ - A word of caution: many times, you'll feel drawn to free resources. You should be careful! Many of the free resources are not as deep or thorough as you need them to be. They will leave gaps in your knowledge, and you will lose time filling them. I think the best approach is to commit yourself to a comprehensive course, even if you have to pay for it. I'm a strong believer that Udemy is the best option for this. Pick a topic you are interested in learning and search for Udemy courses about it. Read comments, reviews, and recommendations. There is always a Udemy sale, so you shouldn't spend more than $35 for a full course (that usually has 45+ hours of content).
๐งโโ๏ธ - One more thing: try not to jump around too much. Stick with the technology and content you are learning until the course or project is finished. This will prevent gaps from forming in your knowledge and help you avoid tutorial hell.
๐งโ๐ป - So... what is the first step?
๐งโโ๏ธ - Starting with Git will allow you to become familiar with the terminal and the way in which software is built. You can create repositories from day 1, something that will look great on your GitHub profile. It will allow you to keep track of all your code and projects, and I think i's a great way to get your feet wet with the world of programming in general.
Steps:
๐งโโ๏ธ - During your journey, you will be tempted to absorb information as fast as possible to achieve that highly desired outcome: become a web developer. But please, don't just work on the theory.
As soon as you start learning HTML and CSS (and JavaScript and React later on), you should be building your own projects. They can be small (just a button), medium (a website), or big (a full web application). Build, build and then build some more (and keep track of them on GitHub). This is how the information you are absorbing is going to be transformed into actual knowledge.
๐งโ๐ป - Should I take a Bootcamp or just focus on each topic separately?
๐งโโ๏ธ - If you are not in a hurry and you have spare time, taking a coding Bootcamp will teach you the overall technologies involved in the web development journey. You are not going to learn those topics deeply, though, which means that you will have to study them after the Bootcamp. Most good Bootcamps are lengthy and require you to absorb many different topics in a cramped time frame.
๐งโโ๏ธ - You have two main options when choosing a Bootcamp: doing it online or doing in in-person. Usually, online ones are cheaper but require a greater commitment on your part in order to finish them. In-person Bootcamps are more expensive, but it's easier to finish them because you have paid a lot of money, and you have to go to a specific place at a certain date and time. Another pro for the in-person ones is that you will actually meet people in the same boat as you are.
๐งโ๐ป - I agree. I actually took a Bootcamp course on Udemy, and I found it very useful to gain an overall knowledge of the things involved in the web development process. The Bootcamp I took back in the day (2019-2020) had 405 lectures spread across 47 hours of content. This translated into almost 148 hours of actual study (I used a time tracker app to measure it). As I was working and studying at the same time, those 148 hours spread over 5 to 6 months. Initially, I estimated, at the most, half of that time, so beware.
Optional step:
Or
Either one your choose, you can't go wrong.
๐งโ๐ป - OK, I now know Git (and maybe I have finished a BootCamp). What's next?
๐งโโ๏ธ - You still don't know what you don't know. You need to dive deep into HTML and CSS. In this step, you will learn about the correct structure an HTML document should have, accessibility (WAI-ARIA), new HTML5 elements you should use and which ones to avoid, how to style an HTML document, CSS custom properties, good practices, grid, flexbox, etc.
๐งโโ๏ธ - If you previously took a BootCamp, the chances are that you didn't learn these topics in a thorough way, so here is where we are diving deep into these concepts. There are many, many resources from which you can choose to learn HTML and CSS, so do your research and choose wisely. I would suggest to you to choose good teaching materials, and not just what's free or fashionable.
๐งโ๐ป - I agree with you, Gandalf. I remember that I almost entered a "paralysis by analysis" stage when researching where or how I could get good quality teaching materials for HTML and CSS. I ended up selecting a free course, a book, and a Udemy course, and I feel that those resources were some of the best I could have selected.
Steps:
๐งโ๐ป - I now know how to build a repository of my code, create an HTML document and use CSS to style it. What now?
๐งโโ๏ธ - The logical projection from here is learning JavaScript. It's the universal programming language for websites, and it is supported by all main web browsers. This is where the core of your journey should be focused on and the stepping stone that you'll use to learn libraries and frameworks in the future. You should take your time in learning JavaScript and avoid jumping into a library or framework without feeling comfortable with JavaScript first.
๐งโ๐ป - I couldn't agree more! I'm now working professionally with React, but I find myself using JavaScript code and concepts learned in this stage of my studies all the time.
Steps:
๐งโ๐ป - I feel like Neo when he said, "I Know Kung Fu."
๐งโโ๏ธ - Unfortunately, chances are that by now you were too focused on learning by absorbing information. What you should be doing by now is putting that knowledge into practice. This step is ideal for that. Now you are going to learn JavaScript's libraries and frameworks. You have a bunch of them to choose from, and the one you select should depend on what is being used in your area (a quick job search will tell you that). The top three you can choose from are:
JavaScript libraries:
React
JavaScript frameworks:
Vue
Angular
This might help you to get an idea of how they compare among themselves in terms of interest: Source.
๐งโโ๏ธ - I recommend choosing React, as it is very used worldwide, and you can use it to design mobile or desktop applications in the future (using React Native) if that's something you are interested in.
Steps:
๐งโ๐ป - OK, so, I have spent several months learning all of this and building many projects by myself (with Google's help). What should I do next?
๐งโโ๏ธ - Once you have finished all these courses and built some applications and projects of your own, you are now ready to start applying for Front-end Development jobs. Now you should be building your portfolio, writing a good resume and LinkedIn profile, and reviewing the most important concepts learned so far.
๐งโโ๏ธ - The whole path to get to this point will take you from 6 months to 1.5 years (or more), depending on your previous knowledge and how well you are learning the concepts you are presented with.
๐งโโ๏ธ - The Front End Developer path is far from over, but by now, you should feel comfortable enough to jump into the Back-end. But that is a story for some other time.
๐งโ๐ป - Thanks, coach Gandalf! I wish you were real so I could high-five you!
๐งโโ๏ธ - Remember this: you are the hero of your story. Ask yourself: what would a hero do in my situation? How does a hero endure these obstacles, slay these dragons?
๐๏ธ NEWSLETTER - If you want to hear about my latest articles and interesting software development content, subscribe to my newsletter.
๐ฆ TWITTER - Follow me on Twitter.
Also published here.