There are a lot of developers who get started with learning to code and then realise that the world around them is way too deep and they instantly get lost in all the information around them. How is it that some developers are able to learn so quickly, do they have a secret formula or are they just extremely clever. Throughout my journey, I realised that there is cheat sheet in staying motivated, and it’s something called Goal Driven Development.
It can be very difficult to get up everyday and write lines and lines of code without really having an end goal, especially when you’re learning. I remember during my first months of teaching myself, I would spend hours in the morning writing code and refining the code, all for it to then be left in a file that wouldn’t be touched again. I started to lose motivation quite quickly and wanted to turn from just writing terminal based scripts into something that I could easily access, like a website.
I quickly realised that going from not understanding the basics to wanting to create a fully working website was not an easy step and that was demoralising. My journey really started to improve when I started to set myself goals, I could see that having a specific target in mind allowed me to stay focused on my goals and allowed me to maintain my motivation and desire.
So instead of changing what I wanted to learn, I decided to really hone in on the basics of Python, I set specific goals that would allow me to understand and really grasp the aspects of coding that people often find difficult, and those aspects would help me in the future when learning new frameworks, since understanding OOP is of real importance when utilising frameworks, especially Django.
I created a spreadsheet full of daily and weekly goals which I would tick off in different colours to ensure that every day I was consistently making progress, and this allowed me to track my achievements and gave me a sense of fulfilment the more I completed, which allowed me to visually see myself moving closer to my longer term goals. Creating a system where you can keep track of your goals and celebrate the wins by rewarding yourself with a treat of some kind can really boost your motivation and keep you on the right track.
That is what is important when you are learning to code. Having goals is great, but you need to clarify your short and long term goals, as they both have equal significance in your journey. While having long term goals is great as they can provide a sense of purpose and vision to where you want to get to, they can be unrealistic and cause you to lose motivation since you are not seeing progress.
On the flip side, having short term goals offer quick wins and give you the dopamine hit that you require to feel like you are progressing, yet they don’t supply substance on the full journey. Breaking down your long term goals into short term goals allow for you to use them as manageable stepping stones to reach your desired destination, no matter how intimidating it may seem.
Once you have a good combination of short term and long term goals, it’s good to apply the concept of ‘SMART’ – Specific, Measurable, Achievable, Relevant, Time-bound. For instance, you want to fully grasp the idea of OOP, it’s better to break it down into 5 steps.
- Creating an Object
- Inheritance
- Abstraction
- Encapsulation
- Polymorphism
Now for each step, you want to apply the SMART concept and create a specific goal using those. If your goal was ‘In 5 days I want to be able to write my own class that has its own attributes and methods and can work in a standalone terminal app’, this would a good goal that adheres to the concept.
- Specific – create a class that can be used in a terminal app.
- Measurable – you can measure this goal by firstly creating a class, then adding the properties, then the methods, and finally ensuring it works in a terminal app.
- Achievable – the goal is achievable even if you have never written a line of OOP style code, since you can break this goal down further.
- Relevant – if your long term goals are to be able to use a framework like Django, then having a short term goal of OOP is extremely relevant. Trying to use a project like above is in turn relevant to your short term goals.
- Time Bound – giving yourself a specific time limit is good as it keeps you on track and motivated, however ensuring the time limit is achievable and realistic is very important.
Some people when learning to code often have mentors or friends and family who can hold you accountable, sharing your goals with them can force you to continue the work and keep you engaged and focused on the destination. However it’s often good to make sure you are able to adapt and stay flexible, especially in the coding world, as there are always new frameworks that are being released, or you may find that you get started with Web Development and realise that you actually want to embark in the world of Data Science, so keep your goals flexible as you learn and discover your interests.
Having goals, both long and short term, are a great way of keeping you engaged in continuous learning, and as you achieve one, you can set new ones to ensure that your coding skills keep improving. It’s never a bad thing to always want to be learning, especially in the vast world of coding, because one thing I have learnt is that no matter what, there is always more to learn.