Are you an aspiring developer, or know someone who is? Or perhaps you’re someone later down the road but feeling stuck and looking for a new direction? No matter what stage you’re at, I hope you’ll find this tool useful in getting your thoughts out of your head and moving forward in a meaningful direction.
Why this tool exists
With the advent of the internet, we have an infinite number of potential choices to make with regards to being developers. Do we want to be self-taught or should we sign up for a class? What languages should we learn? How should we arrange our schedules to learn the skills we need? What skills do we need anyway and how should we navigate all of that?
We’re also in the unique position of being our own teachers more often than not now. Faced with so many challenges, it’s easy for people to get stuck or burnt out. I know that I’ve seen this pattern time and time again with my students and with people I’ve mentored. I’ve also seen it in myself.
What I’m hoping to help with
I’d like developers to have more clarity of purpose and to be more easily able to define what they’re doing and why. I’d also like to help developers feel like they’ve got a sense of direction and that they know where they’re going.
The truth is that much of the work of learning development skills or becoming a programmer is internal. It’s about you as a person growing, making decisions, solving problems, and gaining new knowledge. There’s no shortcut or secret sauce that’ll quickly get you there.
The other truth is that I don’t have all of the answers. I can tell you what’s worked for me and give you advice, but that’s not always very helpful. Instead, what I’d like to do is to equip you with the tools you need to figure out what’s best for yourself. You are the one who will best guide yourself through this process. That’s the way I’ve designed this.
So, your secret weapon, and also one of the most helpful places to start is with is a critical self-assessment. What I mean is simply examining your life, where you’re at, and figuring out how to realize your dreams and aspirations. The one who can answer those questions… is you. If you don’t know where you’re at, where you’re going, or where you want to end up, you’ll almost certainly never get there.
A Quick Overview
With all that said, let’s get started by talking about the main components you’ll need for your dev journey.
You need five primary components to get started. They are as follows:
For many people, you’ll probably find that these steps happen naturally for you over time, and that you’ve already been doing them (consciously or not) on some level. Many of us are taught at least some version of this in school, at work, from their parents, etc. It usually comes in the form of basic life skills. Please note: None of what I’m going to talk about is going to be particularly original in that regard.
So if you’re shaking your head saying you already know all this stuff, then let me be the first to say it– That’s awesome! If what you’re already doing works for you, please skip this article. Or better yet, please share your wisdom! Reach out to those around you and help them. We need more people like you. 🙂
However, if you’re anything like me, simply knowing the main steps involved isn’t enough. We need to actually put them into practice. And particularly for those of us who are self-taught in some way or who are prone to ending up in uncharted territory, I find it useful to shine light on each component.
After all, the first step to debugging any system is figuring out where the problem is. That’s what we’re going to do. 🙂
The Dev Roadmap
The following questions should help you get a start on recognizing each of these five components in your own decision making process.
What you’ll need is to set aside some time to work through these questions. I wouldn’t necessarily recommend trying to power through it all as fast as you can. Instead, try doing a chunk or a section at a time, or skip to the one that seems to be bothering you the most right now.
Anyway, without further ado, let’s start.
1. A clear decision
A decision is your firm resolve. This is the “why” of your journey. Why have you decided to become a developer or to learn these skills? Without this first commitment, none of the other steps matter.
The question you are trying to answer is:
“Do I want to become a programmer/developer/software engineer?”
Write down as many reasons as you can, from the tangible to the not so tangible. Here are some prompts to get started:
- Who are you learning to program for? This could be for yourself, for future employers, for your customers, for your community, etc
- What are your primary motivations for wanting to gain this skill set?
- On a scale of 1 to 10, how excited are you to learn to code?
- Why are you trying to learn to code, study algorithms, learn about computers, etc?
- Why do you want to make stuff?
- What problems are you trying to solve? Why do these problems matter to you?
- Who are some programmers that you admire and why? What is it about their work that you find fascinating or worthwhile?
- How do you imagine your life will be different as a programmer?
- What do you think the purpose of software development is and how do your other life goals fit in with it?
Where/how this can go wrong: You spend too much time making a decision that you don’t ever get to the planning stage. Maybe you second guess yourself. Or, maybe you skip this step entirely and end up with a much bigger crisis later down the road (see also- “help! I picked the wrong profession!”).
My recommendation: Don’t overthink it, but give yourself a deadline for making a final decision. Then, stick with it. You can always change your mind later. Also, beware if your motivation is anything less than an enthusiastic YES. You’re embarking on a big life commitment. If you’re already having second thoughts, it might be time to step back and rethink other aspects of your life.
Your goal is to be able to say:
“I’ve decided to do this!”
2. A Solid direction
Next, you need a solid direction. You need to know where you want to end up, or at least some general idea of it. Obviously you’ve never been there before, so it’s okay if the details are still a little hazy. The point is to just generate some ideas at this stage.
The question you are trying to answer here is:
“Where am I at, and where am I trying to get to?“
- What would you like to make?
- If you could learn to make anything you wanted without concern for budget, skills, time– what would that look like? Be specific.
- What topics excite you the most?
- What are some of your favorite apps, games, websites? What do you like about them?
- What do your favorite programmers do? Is that something that you’d like to learn too?
- What skills do you already have? Is there a way to combine them with your new dev skills?
Where/how this can go wrong: You get stuck in the inspiration / idea exploration stage or you get distracted by shiny project ideas. Multiple directions all seem exciting. Or perhaps you skip this step entirely and end up working on a project or topic that you hate.
My recommendation: Do some research and take time to explore. Talk to people if you’re unsure and figure out what they do on a day to day basis. See if it’s something you might be interested in. Give yourself a set amount of time to explore. I’d also recommend you limit yourself to one or two subjects max so you don’t get too distracted. Like before, you can always change your mind if you realize you’ve made a mistake.
Your goal is to be able to say:
“This is the direction I’ve picked.”
3. A Detailed Plan
Third, you need a plan. You need to have some way of breaking down the steps needed to get to where you want to go. Some milestones would be great, too. Milestones are helpful landmarks that you decide on that will let you know that you’re on track. Celebrate your wins, no matter how small.
This step is about converting your vision into actionable goals & steps. The primary question you’re trying to answer here is:
“Where am I at right now, and how can I get to where I want to go?”
- What are some of the core skills that you’ll need as a programmer? How can you find out more about each of these skills?
- What do you need in order to make this dev journey work for you?
- What tools and resources do you have available to me?
- How can you build in feedback systems to help yourself know you’re on track? Can you set up any milestones along the way?
- When or how should you reach out to mentors or guides?
- Should you sign up for an online course, enroll at a university, or be self-directed? What are your options?
- What is your main priority right now? What other commitments do you have right now that could get in the way of your current progress?
- How fast do you want to make progress on this?
- How should you divide up your time and what should you focus on during each learning session?
Where/how this can go wrong: You spend too much time making plans and strategizing, so much so that you never move past this stage. Maybe you want to know all of the details before diving in or you spend too long considering what to learn and how to learn, but never actually start learning. Or, you skip this step and end up getting lost frequently. Perhaps you experience a mismatch between your learning style and your chosen learning method. Keep in mind that some people really don’t do well as when self-taught and need more structure, while others thrive on it. You’ll need to figure out what will work for you via trial and error.
My recommendation: Plan ahead about a week and have some long term goals in addition to your short term goals. But also, don’t overthink it. Make plans with what resources you have available and create a foundation.
Your goal is to be able to say:
“This is my plan of action.”
4. Consistent Action
Next, you need consistent action. Having and making plans, even very detailed ones, are not enough without the action to back it up. To make this a worthwhile journey, you need to be able to dedicate resources to the endeavor– time and energy, usually. Sometimes money too, depending on your particular situation.
This is the point in time when Shia LeBeouf comes on stage to tell you to JUST DO IT. But more realistically, it’s about showing up. Consistently. Day after day, even when the going gets tough. The primary question you’re trying to answer here is:
“How can I translate my plans into consistent action?”
Some questions to consider:
- How can you add accountability & resiliency to your development journey?
- How will you track your progress?
- What resources should you make use of when you get stuck?
- How can you make sure that you bring your best self to each coding session?
- What does a good study session look like to you?
- How can you study and learn the materials more effectively?
- How can you reduce distractions while you work & study?
- How and when should you ask for feedback from others?
- What does your support system look like?
- What are some learning techniques that have worked well for you in the past? Can you apply them here?
- How can you get the most out of each of the learning tools that you’ve currently got available to you?
Where/how this can go wrong: You try to jam too much into one session and end up feeling too overwhelmed. You give yourself too large of an assignment and don’t break it down enough, so you get in over your head. Maybe you give yourself too little to do, and you get bored. Or perhaps you get busy with other parts of your life and fall off the bandwagon. You might also limit yourself to thinking you need to pay for a fancy course or bootcamp. While it could help, make sure you’re not just procrastinating.
My recommendation: Learn to pick yourself up again when you get stuck. Plan far enough ahead so that you can get into the flow of your work. Weekly might be a decent schedule to aim for. Also, keep in mind that research suggests that you’re better off dedicating a small amount of time daily to developing your skills than setting aside a marathon session once a week. Make your plans accordingly. But if your scheduling is too grueling due to other commitments or if you’re exhausted, also don’t beat yourself up about it. Just do what you can when you can. Your system doesn’t have to be perfect. It just has to work for you. Small amounts of daily progress are better than none.
Your goal is to be able to say:
“I commit to consistent practice.”
5. Review and Reflection
And finally, you need to set aside some time for review and reflection.
People often forget this step, or think it’s unimportant. But a periodic review of all of your answers to the previous sections is helpful. You might find that your answers change over time. That’s okay. That’s good, and normal. Either way, it can help give you direction. Regular reviewing and reflection can also help you not sweat the small stuff. It can also remind you why you started this process in the first place. Be honest and patient with yourself.
The primary question you’re trying to answer here is:
“Am I on the right track right now?”
Here are some other questions to consider:
- How does your dev journey feel to you right now? Are there any big chances that you’d like to make?
- If you’re being 100% honest, are you happy with where you’re at right now career-wise? Education-wise? School-wise?
- Are there any skill tracks that you’d like to focus more on moving forward?
- What areas have you been making progress in, and what might you be neglecting?
- Do you need to switch up your focus? Are there other parts of your life that need attention?
- Have your goals or aspirations changed at all?
- How is your schedule? Does it work with you and for you? Or does it cause you stress? Are there changes that you can make so that different parts of your life work more smoothly?
- How is your concentration? Do you need to take more breaks or schedule in more down time? Are you feeling burnt out?
Where/how this can go wrong: You never take time to reflect on your goals, so you may continue working in the same way and on the same projects even after your goals have changed. Your destination has changed but like a good little robot, you continue doing the wrong job and can’t figure out why you’re not seeing the results you want.
My recommendation: Keep a journal or devlog. Regularly revisit your goals, especially when you’re feeling stuck. Make course corrections as needed. Better late than never. You’ll thank yourself later, I promise.
Your goal is to be able to say:
“I will review my progress on a regular basis. If I’ve gone off course, I commit to making changes.”
Becoming a developer is a skill set and profession that takes time. Despite what anybody will tell you, it’s going to take a mixture of time, hard work, and luck. Success, of course, will be determined by what your goals are. However, I can almost assuredly guarantee that there will be setbacks along the way, and plenty of things that won’t go your way. There will be times when you make big mistakes or go off course. There will be wins, losses, and no shortage of unexpectedly painful bugs. However, there will also be great fun and excitement for those who seek it.
What will the journey look like for you? 🙂
I sincerely hope that it’s a fun and meaningful one!
I welcome your feedback. If you enjoyed this article or if you have any questions or concerns, feel free to contact me on Twitter or write to me in the comments section below. Thanks for reading!