Over a year ago I found the now dated article: A Guide to Becoming a Full-Stack Developer in 2017 and it really bothered me,
Big lists of technologies to learn are intimidating and are overly prescriptive. When a new developer sees this they may think wow, there is way too much to know, I’ll never get there. But the truth is the path isn’t to check each item off a list one by one until we are a “Full-Stack Web Developer”. This ends up being gatekeeping with a giant requirements list. There is another way to become a developer, no matter the specialty, it involves writing code and developing skills incrementally.
Instead of a checklist of things to know, lets use a system to build up our skills. I will try to explain the path I used to become a developer and continue to use to grow as a developer. This path is not necessarily quick or easy, but most rewarding things are not. If you follow a similar path there won’t necessarily be an end. When choosing to become a developer, you are choosing to continue to learn and grow indefinitely.
Ignore the end goal of becoming a full-stack/iOS/back-end/AI/ML developer and instead start with a smaller goal. Check out: Forget About Setting Goals. Focus on This Instead. to see the reasoning behind this. The TLDR is that a goal isn’t focused on the how instead it’s focused on the end, a system is what gets you to the goal. For our goal of becoming a developer we shouldn’t focus on learning technology X or tool Y. Instead focus on what problems do I want to solve?
Step 1: Pick a Starting Point
Let’s start by finding something that motivated you to become a developer. Are you trying to start a business? Launch an app? Automate a tedious part of your job? For fun? Great make that your starting point. If you have a big idea try to find a smaller part that you can tackle.
Step 2: Research and Plan
Alright we have a starting point? An idea for a tool or a problem to solve. Let’s figure out what we need to build. This is an intimidating open ended step. This is where searching, books, and tutorials can really help. Almost never is someone solving and displaying the solution to the exact problem you have. Instead we need to collect pieces, understand what they doing and then modify them for what we need.
Step 3: Build
Alright we found an overview or a blog post that loosely is similar to what we want? Great. Often we can’t understand everything that is going on until we’ve worked and played with it ourselves. Instead of trying to understand every part let’s just start building. This means opening a text editor and your computer and working through examples, writing our own code, playing with libraries, etc.
This step is important, we need to start somewhere, and rarely ever will you find someone who knows the whole solution up front. Instead start with what we know, write code, design interfaces, play with a program until you find something you don’t know.
Step 4: Define a New Goal
Once you hit a road block or are unsure of how to proceed we need to create a new goal. Can we skip or work around this issue for now? No. Okay, let’s figure out what we need to learn or know next.
Step 5: Iterate
Nice work, by hitting step 5 you already made some progress towards your goal. You now know what you need to work on or solve next. Time to repeat the process. These steps get repeated hundreds of times a day by developers everywhere. It’s a never ending process. Jump back to step 2 now with your new goal.
This method relies on just in time learning. Act until you hit a point where you need to learn more to continue, learn that and then complete it. When we try going the other direction and learning everything before action we very easily end up lost or misdirected. There is an overwhelming amount of things to know in almost every field. Computers are incredibly complex and we fool ourselves if we think we can understand it all before starting. The best thing you can do is just start this process today.