How to create your own Roadmap: A Self-Assessment Tool + Guide for New and Aspiring Developers

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. 

Photo by Jaromír Kavan on Unsplash

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:

  1. A clear decision 
  2. A solid direction
  3. A detailed plan
  4. Consistent action
  5. Review and reflection

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.”

In Conclusion

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!

Getting the most out of programming tutorials

Photo by Christina @ wocintechchat.com on Unsplash

Let’s talk about tutorials. Love them, hate them, they are everywhere and here to stay. From newbie developers to seasoned veterans, we all use tutorials from time to time.

In my experience, tutorials can be an excellent place to start when you’re learning an unfamiliar language, framework, or technique. Often they are one of the fastest ways to get a basic understanding of any material and to get something up and running quickly. However, they aren’t necessarily built for maximum learning. Like most things, you’ll get out what you put in.

The question then becomes, how can you get the most out of a single tutorial? Are there any tips and tricks? How can we be efficient about it all?

As an avid tutorial taker, here are some tried and tested methods to getting the most out of any single programming tutorial:

  1. Type everything out manually – No copy and paste, in other words. Take the time to actually type out every single line of code that you need. The reason being is that you’ll learn better the more time you spend with the material. And the more that you’re able to commit to memory, the faster you’ll be at it all. 
  2. Create a glossary – Highlight any unknown terms and then make a point to google them later. Summarize your findings in your own words in a sentence or two. Keep a record of what you learned. Update it as you go. 
  3. Do a line by line analysis of the code – Make sure you understand every step and that the syntax makes sense to you. Or if something is confusing to you, make a note to come back to it after. If at the end of the tutorial you’re still confused, try looking up the topic using other resources. Still stuck? Ask someone! You may even be able to reach out to the author of the tutorial for help. Other people are usually happy to clear up points of confusion for you!
  4. Keep a log of your progress – It doesn’t have to be super detailed. You could use Twitter, a blog, or even GitHub for this. I’ve even heard of people that write entire novels with GitHub, for instance. 🙂 But the important part is just to spend a few minutes recording what you did. If nothing else, it’s a great way to see how far you’ve come.
  5. Preview the martial – Before beginning a tutorial, spend some time previewing all that you will be covering. Skim the article, look at any pictures or diagrams, and consider what you already know about the topic. This helps to prime your brain so that when you actually do the tutorial, you’ve already laid the tracks for it (and you know what’s next!). Win, win!
  6. Work ahead of the tutorial – This one is more applicable the more advanced of a student and developer you become, but to the best of your ability, try to plan out or work out a solution to the problem before reading through the answers. Read the next topic headline and spend 10-15 minutes seeing if you can plan an approach. Or better yet, see if you can preemptively come up with an entire solution. At worst you end up getting stuck (see Tip #8). You now know where your knowledge limits are and what topics to review. And at best, you either have one or two outcomes. 1) You will have discovered another way to solve the problem that the author didn’t show. Very cool and empowering! Or 2) you will have solved it in a similar manner to the author and have thus taught it to yourself in a more engaging way. You’ll come away not only with the additional knowledge but a nice confidence boost to go with it. Whatever the case, you will have learned a lot in the process. Give it a go next time!
  7. Quiz yourself – this is something you can do throughout the tutorial or lesson, but do your best to commit concepts to memory. Research has shown time and time again that active recall is a key step in efficient learning. It will help you develop mastery of any new material. Bonus: Test yourself using your newly created glossary by creating flashcards. Lots of options here.
  8. Get stuck – Okay, hear me out. This one’s a hard sell but honestly, when I’m trying to learn new material, one of the greatest gifts I can have is getting stuck. I’ve learned to appreciate it even if it’s frustrating. Here’s why: Getting stuck forces you to really think. One of the major issues with tutorials is that they allow certain parts of your brain to shut off. You are simply following directions, like with a recipe. Getting stuck, on the other hand, is a surefire way of snapping yourself out of that. Use these moments to your advantage to really go deep on a topic.
  9. Take breaks when you need them – Completely stuck? Take a 20-minute break. Nap, eat, stretch, walk, shower, whatever you like. You’ll be surprised at how your brain may supply solutions and help you get unstuck. 
  10. Create a personalized cheat sheet – Make a summary of the tutorial once you’re done with it and fill it with the information you’ve learned. Include some code snippets and some high level concepts. If you can, also add in a 3-4 bullet point overview. Thanks to the Practicing Developer for this tip! 

That’s all for now!


Questions for discussion:

  1. What are your thoughts on the value of tutorials? Do you find them helpful? Why or why not?
  2. What study tips have worked for you, especially when covering new materials?
  3. What do you do when you get stuck on a tutorial? How do you get yourself unstuck?

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! 🙂

Need help finding your next code project? Start here.

So you’ve completed a tutorial, or maybe even an online class. You’re really excited about it all! In fact, this is a big milestone in your developer journey & career! You should be proud!

However, after the smoke settles and the fireworks are gone, you might be left with the unsettled feeling of… what comes next? Where do I go from here? 

So first off, congratulations! You’ve reached a turning point. This is an awesome time to take some time out to reflect on where you’re at and where you want to go– to look over the project you just made and the skills you hopefully just learned! It’s also a good time to reevaluate your priorities and the direction you’d like to go.

But once you’ve done that, what do you do? If you’re out of ideas or unsure, here are some suggestions: 

  • Recreate the same tutorial project from scratch. You already took the tutorial, but now you need to test yourself to see how much you actually retained. No cheating on this one if you can. Only look at the answers if you get stuck for more than 15 minutes. Set a timer if you have to. If you can figure it out, great! You just learned how to figure it out yourself. If not, that’s great too! You just learned what topic you need to review more of– also a valuable lesson!

    Studying in this manner will test your active recall and problem-solving skills in a relatively safe, low-risk manner. After all, you can always look at the tutorial since the material is still there! Win-win!
  • Add additional features to the tutorial project. There are so many possibilities here. You could redesign the UI, hook the project up to a database, add authentication, etc. If it’s a game, you could try adding a multiplayer feature, a timer, a scoring system, or a save feature. The sky’s the limit here. Challenge yourself to modify the tutorial so much that someone wouldn’t be able to tell it’s the same project as before.

    This sort of exercise will test your ability to add/build on to an already existing project. It’s also relatively safe because you’ve already got something working! It may sound boring to repeat the same material, but there’s no better way to make sure you’re truly “getting it”!
  • Create a new project from scratch using the same concepts that you’ve just learned. Recreate a similar project to the one that you just made, but modify the content and core of it somehow. So if you just made a to-do list app using arrays, try building something that also uses arrays, but in a different way or for a different purpose.

    A new project using the same concepts will test your ability to apply the concepts you already know to a new project.
  • Create your own chimera/hybrid project using the material from two or more tutorials. Have you taken more than one tutorial recently? If so, try combining them into a single project!

    This type of project will stretch your ability to synthesize material from multiple sources.
  • Recreate someone else’s project. Or, mimic an app you already use on a regular basis – Create a simplified version of Instagram, Twitter, Yelp, Pinterest, etc. Or pay homage to a favorite developer that you have by studying one of their projects.

    This will test your ability to start creating projects independently but also your ability to study and observe already existing software. It might also give you a newfound respect for someone whose work you already admire!
  • Find a programming concept that you’re still learning and design your own app about it. Just learn about linked lists or queues? Try building something with that knowledge! Or, if that’s still too hard, spend some time brainstorming possible use cases for how you might be able to apply that concept in a future project. You never know what’ll show up later down the road! 

    This type of project will test your knowledge of core programming concepts & also help you learn how to build apps independently.

Still need ideas for a new project? Use an random idea generator! Or try creating your own idea generator tool! 🙂


Questions for Discussion

  1. Do you have a favorite way of studying & learning new material?
  2. How do you keep your knowledge fresh after you’ve finished a tutorial or class? Do you ever set aside time to review?
  3. What sorts of projects have you gotten the most mileage out of? What projects were the most fun?
  4. For more experienced developers- If you were starting out in your dev journey again now, what would you recommend to someone who was in your shoes?

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!