In today’s article I’m going to talk about the best way to make progress faster when you’re learning how to code.
This post is really meant for people who are trying to change careers and become a programmer. But they find that their progress it’s not going well.
It’s too slow than they want. Maybe they have spent weeks or months working on projects and they’re not going anywhere.
Or even learning a programming language for months but you still haven’t built even a simple project by yourself.
Or you just feel like you just want to quit at this point.
Things just aren’t going well. You feel like the job is just so far out of reach that at this point it’s just not even worth it.
So, that’s what I’m going to cover here.
If you’re new here and don’t know who the heck I am, I’m Peter Mukundi. I’m a self-taught programmer. I’m also a coach and mentor to everyday people who are aspiring developers.
People who want to switch and get into this career. This blog is all about the tools and strategies to make that happen.
Make that a reality. So, I highly recommend checking out my blog from time to time to get actionable tips to take your career to the next level.
With that being said, let’s dive into it.
So, what is the biggest challenge here for making progress?
What I’ve seen from all the people that I’ve worked with, from people who are just trying to do this and those who get in contact with me.
The biggest issue that you will have is that you take way too long to learn a programming language, to learn the basics and put projects together than is necessary.
So, in other words a project that could take you 3 weeks, most people spend 7 weeks, 8 weeks, months, sometimes even years to complete a project.
Which is ridiculous to me. The idea is you want to create a portfolio, a bunch of projects that can show off the skills that you have.
That you’ve learned from tutorials and books.
Something that you can go out there and get a job with.
But most people don’t realize that and so they get lost in concept land. Where they’re just learning concepts all the time.
Or they create projects which they think they have to be perfect before they can move on.
So, I think this really comes from what’s called Parkinson’s law which means that however much time you want to get something done, you typically take all that time.
So, if you are going to build a to-do app. Let’s say if you give yourself 6 months to build a simple to-do app using your favorite programming language.
Guess how long it can take you to build that project!
It can take you 6 months because in programming especially there’s 8 million things you can do with it.
So, you can build out the minimal viable product and get to-do app showing up. But you can work on styling. You can work on continuous integration.
You can work on adding more frameworks. You can work on refactoring the code endlessly.
You can work on unit testing, in acceptance testing, integration testing and it goes on and on and on.
It can be endless. And I mean endless path to actually finish something like a simple to-do project.
And so what I’ve found is that most people don’t have a set deadline for when they are going to finish either learning a programming language or finishing a project.
And so, my suggestion to you is to create deadlines for everything.
So, you want to set deadlines number one for when you’re going to start applying for jobs. So, just pick a date in the future.
If you’re comfortable with 6 months, if you’re comfortable with 2 years or whatever it is pick a date where you are going to start applying for jobs.
And do not renege on that commitment. In other words, like you are going to start applying for jobs even if you didn’t do anything from now until then.
You have to commit to that because what it does it gives you a sense of urgency.
You tell yourself something like “you know what, in 6 months I’m going to do this so I have to figure out a plan to get there”.
And your brain certainly lights up with creativity.
Now the second thing is you have to have those intermediate goals as well. So, you’re going to want to learn certain programming languages.
Maybe frameworks with those programming languages. You want to make sure that you’re learning one at a time.
You’re setting deadlines for yourself.
If you can learn another programming language again you get the basic idea here.
And that way you give yourself an overall timeline of how and how much time you’re going to spend and you stick to that.
And as far as your projects go, your projects are very important. So, you want to have deadlines on the projects you’re going to be putting in your portfolio.
Your portfolio is obviously the key piece that’s going to get you a job when you’ve no experience as a programmer.
So, you want to make sure that for each project you have, starting with your simple projects up to even your most complicated project, you want to give yourself deadlines along the way.
And sometimes the deadlines will be off. It’s okay, you don’t know everything, you don’t have context for how long it should take.
But here’s the thing, if you give yourself deadlines, as the deadline approaches, as it gets close you can decide whether you want cut out certain functionality.
You can decide whether you want to give yourself another week or 2 weeks if that’s going to fit into your overall picture of getting you where you want to go.
But either way, like the idea is that none of your projects should be perfect. They should be good enough. That’s all that you really want to do.
And giving yourself that tight deadline will help to give you a better picture of what things are important.
You will know whether it’s that important to spend more time on styling or making the code perfect.
And this allows you to move on after that and totally be carefree about it. And there’s nothing you’re going to be stressing about it.
This is really important to understand, deadlines are not some arbitrary thing that I came up with.
There are a few reasons why I’ve really found that deadlines work and making people make progress faster.
The first thing that it does is, it kills perfectionist tendencies.
So, in other words a lot of you guys would come in here trying to learn to code and your perfectionism kicks over and you can’t move on your next project.
You can’t move on the next programming language because you haven’t learned enough.
Or you haven’t had enough bells and whistles on some of the simplest projects that you’ve built.
And so again a project that could take 4 weeks now takes 8 weeks, it takes 12 weeks, it takes 16 weeks.
Meanwhile the other guy or girl out there, who just said okay. And they put something together. And they are ready to move on.
Maybe they learned a new programming language at this point.
So, perfectionist tendencies are hard to control. I’m perfectionist even when I’m building my own project.
I find myself wanting to refactor endlessly because refactoring is so much fun.
But you have to have a hard cap on it by using that deadline.
Another reason why I like deadlines is because it turns your brain on.
Do you remember that experience in high school or college of having a project due in 6 months and you didn’t do anything until 5 months and 3 weeks?
Until the project was basically due but in the night before your brain lights up with so much creativity.
Also, you start figuring out things that 4 or 5 months ago you couldn’t even seem to master because you just didn’t have that sense of urgency.
So, for whatever reason your brain tends to get very creative. It tends to actually light up when you have that sense of urgency.
And you tell yourself something like, “hey this project is due in 2 weeks or 3 weeks, I can’t just sit around and wait to the very last minute.”
The worst thing is when you have no deadlines.
Most people have no deadlines for their projects. And so instead of saying like oh, I need to work on this today and get it finished.
You tend to think that you have plenty of time left. There’s no urgency to this so you’ll figure this out later.
You need to have something to turn your brain on. And I think there’s no better way than to set a deadline for yourself.
It also gives you something to look forward to. So, you have like your brain in order, to have the motivation to do something.
It has to know that there’s an end. It has to know that after this, I’m going to do something else that’s going to lead me closer to my goal.
You have to have a light at the end of the tunnel.
And when you have a deadline for your project you know that when this day hits chances are good that I’m going to move on to the next project.
That next project is probably a little bit closer to my end goal of becoming a developer.
So, deadlines play a big role in that. Even from there, what I love about deadlines is just a sense of finality.
So, when you have a dead line on your project, it allows you to feel good. Have that spent feeling that you won something.
You have that small win. That small step to your next destination is why I love it from that regard.
Once you finish a project even though it’s not perfect, there’s like a sense of completion.
I think most people kind of overlook this but you want to build up your confidence. You want to know that you have built this and that project.
And you just having those projects out there, it just makes you feel like you’ve accomplished more than if you just finished 2 or 3 books and you don’t feel like you can actually build anything.
So, having a sense of finality and having something to look forward to and making sure your brain is turned on and that your perfectionist tendencies don’t get in the way are all things that deadlines can help you to avoid.
There are really two important things I just want to make sure I’m making very clear here before I wrap up this article.
So, the first thing is that deadlines are really hard when you don’t have any context for this.
If you don’t have any prior experience in programming.
And it’s totally okay.
It’s okay to set deadlines that are not realistic. You’ll find out more as you go.
The key thing here is if you find that you set a deadline for yourself and the deadline is approaching and you don’t feel like you’re very close to actually completing the project.
It’s okay to cut out functionality. Say you had a to-do app and you had a couple really cool features you wanted to add to it.
It’s okay to remove some of those features as long as you hit the minimum viable idea of that application.
The second thing to keep in mind is that when you set deadlines for yourself and you actually complete them, you’re typically not going to feel ready to move on to the next project.
You’re typically going to feel like you need to spend more time in this. Or you feel like you didn’t learn a specific concept when you built that project.
And it’s okay to feel like this. You should still move on to your next project.
In fact, you should really just get very comfortable with being uncomfortable.
That’s sort of programming in a nutshell in that you’re mostly uncomfortable in the beginning of your career because you just don’t know what you don’t know.
But become very comfortable with not knowing and it’s okay to move on to the next project before you’re ready as long as you’re being consistent with your learning.
As long as you’re trying to learn everything that you can, that’s the goal here.
So, I hope you learnt something in this post.
Really the idea is to give you a tool to make progress more quickly instead of you toiling around. Or not being able to figure this out.
Or quitting because you feel like you just aren’t going anywhere.
So, create deadlines for yourself. Play around the higher end deadlines with when you can start applying for jobs, the middle and the lower end for your projects.
And I guarantee that will give you that sense of urgency that’s required to start making that progress more quickly.