Secret to starting your programming journey right

The SECRET to starting your programming journey RIGHT


Learning something as confusing as programming can feel like an overly daunting task, especially when you are trying to learn on your own. But you can minimize the scale of the task by breaking it down and creating a PLAN! Now, I am not saying you have to create an extensive point by point action plan your boss would be proud of. But simply having an idea of what you’re going to do and how you are going to do it really helps.

So why do you even need a plan?

You may be of the mindset that a plan is a waste of time. “I don’t need a plan, I will just do it! I will pick a programming language, gets some books and LEARN”, you might say.

You know what? I said the same thing a couple of years ago when I got my first programming book, Beginning Programming with C for Dummies. But I soon found this unstructured, “I will just do it” approach flopped.

That is not to say you can’t learn to program without a plan. You can, but you will find the journey is much smoother with one.

Luckily for some magical people, they can just get up and go. They are like a switch, the idea comes and they know exactly what to do. But for the rest of us mortals, it is not as easy, and the path isn’t so clear. That’s why having a plan is so helpful. It clears the air and lays out a straight forward path to follow.

As I mentioned at the start, you don’t have to write an extensive plan, and you can just plan it out in your head. However, I would recommend getting something on paper. This is because it will start turning your thoughts into action, and this is just one of the benefits. So what are the others?

Benefits of writing a plan

A man writing a plan

  • Starts turning your thoughts into action – It’s easy to have thoughts and big plans that never get acted on. So by taking some action, you start taking your first steps to realizing your goal.
  • Simplifies the problem with clear guidance – A plan breaks down the complexities and removes the uncertainties that come with a big challenge.
  • Gives you something to refer to – If you start veering off the path, or running into uncertainty you can quickly refer to your plan to get back on track.
  • Provides a structure with S.M.A.R.T goals to help keep you on track – Obviously the goal is to learn code, however, that’s a bit vague. But having a plan with S.M.A.R.T goals (specific, measurable, agreed upon, realistic and time-based), will give you something more concrete to mark your progress against. This provides targets to aim for and motivation when you hit them.
  • Lays the foundation for your routine – By setting out what you intend to do to achieve your goal you are inadvertently planning your routine. And having a routine for learning code is a must!
  • Free’s up your brain to tackle the next challenge – This last one may be unique to me, but I thought it was worth including anyway. Personally, I find that if I have an exciting idea in my head it tends to play on repeat, and monopolize my brain. By writing my thoughts down it moves it out of my head and stores it somewhere else, where I can refer to it when needed. I no longer have to waste time thinking about it and can move onto other things.

How to write a plan

I want to start by saying, DON’T SPEND AGES WRITING A PLAN. The plan is for YOUR BENEFIT so it just needs to highlight key aspects that YOU NEED. It doesn’t need explanations or fancy formatting, it just needs to be simple and to the point.

If you want, you can write your plan in Word, EverNote, Excel, or even just on an A4 sheet of paper. I quickly typed mine up in OneNote, just so I could view it or edit it anywhere.

You should also think of your plan as a live document. By that I mean, things are going to change as you progress, unforeseen circumstances will arise and stuff may warrant adding or amending. For example, your goal may change from App Developer to Web Developer, it may take longer to learn than anticipated, or you may even have a list of resources you’re adding to.

This is all the more reason for keeping your plan SIMPLE.

Structuring your plan around these 3 questions…

Planning on a whiteboard

WHAT will you learn?

This is where you specify the language & skills you wish to learn, your main goal, and any objectives. 

When specifying your main goal avoid setting a vague goal, like “learn code” or “learn Java”. While great goals, they are not very easy to quantify.

At which point can you cross out your goal to say “I know Java”? When you’re able to read the syntax? When you can write Java in your sleep? You see the problem. Side note – You don’t want to learn Java, you want to learn to program using Java. Knowing the syntax alone won’t allow you to create applications.

A more constructive goal would be to “build a video sharing app”. This goal gives more context, a clear target and it’s easy to quantify.

Now, for those of you with long term aspirations to become professional developers, by all means, include this as a goal. However, back it up with a medium term goal, like “creating a responsive client website”.

The reason I say this is because, at these early stages, these long term goals will seem so far off that it will feel like an abstract concept! You won’t really have a clear tangible vision to work towards like you would if your goal were to build an application. That’s why it’s a good idea to supplement this kind of goal with one that provides greater context and is within the realms of near term possibility.

I recommend setting a hierarchy of Aims, Goals, and Objectives. Your aim would be to become an Android Developer, your goal is to create a video sharing app, and your objective is to complete your Android Studio course.

WHEN will you learn it by?

Here is where you add deadlines for the goals and objective you just set.

I don’t like the word deadline, it seems so permanent, but where possible you should try to set absolute deadlines and stick to them. However, it is not realistic to say you should know exactly how long this journey will take. YOU’VE NEVER TAKEN IT BEFORE.

If you have never created an app, you are not going to know the length of time it will take to learn, let alone the time it will take to create one.

Therefore you should try to take deadlines with a pinch of salt. This is not a pass for laziness though! Don’t keep kicking that deadline down the road.

I just don’t want you fretting and spending ages trying to calculate the perfect deadline.

That said, there are times when you will have a better idea of the time it will take to achieve your goal. For example, if you are working through a Python course with 35 hrs of content, you can roughly work out the time it will take.

HOW will you learn it?

Just as the title says, “How” are you going to achieve your goal. In this section think about the resources you are going to use. In particular, are there any books you plan to read? And what platform will you use to learn? (Codecadmey, TreeHouse, Udemy).

As you progress you will find more and more resources. So it’s a good idea to build a list, which you can keep adding to and referring to.

You should also specify the amount of time you intend to dedicate to learning. I would strongly recommend spending some time each day. Really you should aim to code every day because this will cement your routine and get the code stuck in your head. You will see real benefits by fully immersing yourself in the code.

I understand not everyone will have the same amount of time. Some people have more commitments than others, but even dedicating an hour a day will add up. The important thing is consistency. 

When you have a baby your life is no longer your own, and time and energy are very limited resources. However, by scheduling some time each evening after that wonderful little poop machine had gone to bed, I was able to learn. And more importantly, THE INFORMATION STUCK.

WHY are you doing it?

You don’t have to add this to your plan but it can be helpful to have a little reminder to keep you motivated. If your enthusiasm is starting to wane, reflect on why you started and it might just perk you up!

To summarize your plan should include the following?

  1. The programming language/s and or skills you want to learn
  2. Overall aim, goals, and objectives
  3. Deadlines for achieving your goals and objectives
  4. A list of learning resources you will use
  5. Time dedicated to learning
  6. Why you are doing it

SMART goals

When it comes to setting your goals, make sure they are S.M.A.R.T!

I touched on S.M.A.R.T goals earlier but I wanted to give you a bit more guidance.


Aka not vague! No, “I want to learn code”. Try and be as specific as possible. It needs to provide context and information so you know how to achieve it. Your overall aim can be vague…ish as long as your goals are specific to give you a clear understanding of how to reach them, and how they build to your overall aim.


This kind of ties into Specific and Time-based. Essentially, you need to have some way of measuring the goal so you know exactly if and when you have achieved it. For example, goals like, completing a Java course or building a website are very easy to measure.

Agreed upon

Usually, this refers to all parties agreeing on the goal, but as it’s just you this one is simple. Just be decisive and have conviction in your goal.


Set incremental goals, within a reasonable time frame. Don’t go saying “I’m going to build an app that uses machine learning in a month” when you don’t know any code. This is a bit of an exaggerated goal, but it’s just to illustrate a point. Start with a goal to learn the basics and move up. Setting ridiculous and unrealistic goals will just leave you demoralized and frustrated.

You may hear stories of people learning code in 6 weeks and getting a job. But remember, we are not all in the same boat. Some find it easy to learn, some have good connections, some have more time. You know what’s realistic for you.

However, don’t sell yourself short. Dream BIG, but layout realistic steps that will eventually lead to that dream.


Make sure your goals have deadlines! Otherwise, you will have no sense of urgency and your goal will just roll down the road like a cliche tumble weed scene. Try to add specific dates where possible or at least the month and year.

Resist saying 6 weeks or 5 months. You may end up miss remembering your start date and subconsciously extending your deadline. Or by counting weeks you may discount self-proclaimed “bad” weeks, and find yourself saying “that doesn’t count, I didn’t really code that week”.

By saying June 2017, you will find that when you have a “bad” week you will work harder the following week to make up for the lost time.

What happens if I can’t stick to my plan?

Stressed man working on a laptop

There will only be 3 main reasons your plan goes awry. 

  1. You just didn’t put in the work
  2. Your goal or deadline was too unrealistic
  3. An unforeseen problem got in the way

When you miss your deadline rather than going into despair, ask yourself, which of the 3 reasons caused me to miss my deadline.

If you didn’t put the work in…

It can be a hard pill to swallow. But again, don’t despair, ask yourself “why?”. Did you lose motivation? Did you have a solid routine? Or are you having doubts?

Once you know the answers then you can set about tackling the problems. Maybe research techniques on motivation or building will power, or try implementing a different routine.

There are some great books and resources out there, which can help. One book I found really helpful was 7 Habits of Highly Effective People. I also tend to watch videos by Thomas Frank, he has some great tips on his YouTube channel. If you stay tuned I may even consolidate some of these resources into a post!

Or was your target too unrealistic?

When you’re new to a subject, field or discipline it is really hard to form realistic expectations, and that’s not me pandering. You just don’t have any prior knowledge to base those expectations on.

So, in reality, the chances are high that you will set an unrealistic target. However, as you start working towards your goal, you will begin to build a more realistic picture. When this happens, there is no shame in adjusting your goal.

When I started I signed up for a Java course with 60+ hrs of content. I then sat down and worked out how long it would take me if I did X amount of hours a night, which I then used as the base of my goal. I soon realized that 60 hrs of content DOESN’T mean 60 hrs of work! The number of times I replayed videos and when back over concepts was insane.

Unfortunately, unforeseen problem can get in the way!

Keep in mind that things don’t always go to plan. No matter how hard you try you can’t predict the future.

When unavoidable things get in the way there is only one thing you can do. Shake it off and go again!

I recently had the flu, and normally I would just power through. Although, I have never had the flu before, and DAMN, that wipes you out! I couldn’t really do anything for a week, which put me behind.

As demotivating as this was, I had to chalk it up to one of those things and push it out of my head. That way I could focus my energy on getting back on track.


A plan can really set you off on the right foot so make sure you take the time to create one, but not too much time. Keep it simple and focus on WHAT you are going to learn, WHEN you are going to learn it by, and HOW you are going to learn it. Also, make sure your goals and objectives are S.M.A.R.T so they are valuable and productive. Finally, don’t worry too much about not sticking to your plan. The chances are you will get derailed at some point. But just ask yourself why? Then, find the answers and jump straight back on the horse.

Thank you for reading, I hope this post has been of some help and good luck with your plan!

Sharing is caring!

About the Author Owen

Creator of Code Dad, father and self-taught programmer. My mission is to balance life, work, family, all while learning to code, and hopefully help others who want to do the same.

follow me on: