this post will concern itself with how we can achieve the goals we set for ourselves. Every one has goals they want to achieve. This can range from learning a new programming language or framework, aquiring a better paid job or more interesting projects to something not related to software engineering at all.
So, often the question comes up how one can one achieve a goal, or at least stick to the process of working towards a goal.
As you will see in this post a big part of this is to deconstruct the goal, this is why this post will also be separated into different parts:
This parts are again subdivided into further chunks.
- Define your Goal, What do you want to achieve and more importantly WHY (this page)
- Measure and evaluate your progress (page 2)
- How to stay motivated (page 3)
- Time management and productivity tips (page 4)
As a little disclaimer, this post shows an approach that works for me. There is no single best solution for this stuff. Although I still think you can get at the very least some inspiration on how to achieve a goal. Also the advice and the in this post will no doubt help you being more productive and more effective in getting stuff done.
1 Define your goal:
What and more importantly WHY
Every goal obviously starts with the definition, for the simple reason that something you do not define you cannot understand or deconstruct. To define a goal you need to know what you want to achieve on a general note and more importantly why you want to achieve this goal.
To find the why for a goal is something no one else can do for you but yourself. This is probably the hardest part of the whole goal achieving activity. This is because your initial spark and motivation come from the reason why this goal is important to you. And by this motivation it is determined if you can hold up to the work that is required to achieve the set goal, even in the face of strong opposition.
The definition itself is also extremely important, because in the end vague goals lead to vague results.
E.g. if you simply want to learn a new programming language for the sake of it, you will not get pretty far. At least in my personal experience, but let me give you a concrete example:
I had this problem when I first wanted to learn the Swift programming language. My goal definition was something like this: “I want to learn swift to be able to develop iOS apps”. This was pretty weak and vague definition and to this day I do not know Swift very well.
As we all learn best when we have an example and even better implement the process ourselves, I will demonstrate the whole definition, planning and sticking to the goal with a personal example. In this case I want to learn Python as a programming language.
First I will give you some of my Whys for this, as an orientation how such a process can look like . Also I will demonstrate the definition, deconstruction and other parts of the goal achieving activity with this example.
I sorted the why’s them by what I assume will push me personally the most during this process:
- Learning something new and being pushed to the edge makes me somewhat feel alive because this is essentially how I enjoy life the most
- Learn new concepts to be a better developer
- Get different perspective on software engineering approaches
- New tool to make my work life easier (scripting, automation etc.)
- Gain new insights and maybe business ideas or such
- Increase my earning potential and make myself more valuable as a freelancer
- Have some new topics for my blog 😉
So how do you define a goal?
For the rest of this post I will simply assume that you know why you want to achieve your goal, because that is so individual I cannot not do this for you. If you need assistance on this topic read up on this post of mine, which concerns itself with decision making but also touches the aspect of asking yourself why.
A good definition for a goal should somewhat adhere to the SMART principle. Which stands for:
S – specific
M – measurable
A – assignable
R – realistic
T – timed
(or any other combination of this acronym)
So you can see my goal to learn swift did not adhere to any of these principles. And that might be one reason why it failed.
We will from this point proceed with the goal to learn Python as a language for data science and machine learning. This is as mentioned an actual goal of mine and I will post my progress on this blog in the future.
So I defined this for Python as:
Specific: I want to learn the Python programming language in a way that I can apply it routinely to tasks that are related to data science and simple automation tasks as well as scripting (read data, process emails and such)
Measureable: From any of the test web sites for data science I can choose a project and use Python as the main tool to solve the task. On the way to this, I will learn to create simple projects with Python that read simple values from a data storage mechanism and apply some analysis on it
Achievable: Learning Python is quite achievable with all the web resources and books out there.
Realistic: Because I work in the field of software engineering and have lots of stuff to do I will need roughly a year to get all this done in a satisfactory manner
Timed: The first running scripts and applications should be ready in the first month or two. The assignments from the above mentioned sites should be done by midst of 2019
So you can see I simply wrote down what came to my mind, those things are not set in stone. But the act of writing it down makes you think about this stuff and you are much closer to a goal achieving process than without this. Also you can build on this and use this as a starting point for further progress and the other steps we will tackle next.
Deconstruct the goal
With those basic steps you can now go on to deconstruct the goal you want to achieve. I will stick to my example above and demonstrate this for this goal. Again this is not set in stone, because obviously on the way to achieve this goal you will learn more about the topic and yourself etc. so this is always in flux but it is best to start somewhere instead of starting nowhere.
I will use this coarse grained list as a start:
- Learn python basics (ongoing process)
basic syntax, intendation, conventions and things like that
Modules and package management
setup development environment and IDE
standard library and features
- Write simple applications
console app interactions
“script manager” (will explain later)
database CRUD applications etc.
simple web app
- Define data science essentials
find out what a data scientist needs to know in general
required statistical knowledge for data science
required technical knowledge like different databases and types (SQL NoSQL etc.)
- data science in context of python:
- frameworks and how to apply them
- define how this can be used in my day to day work
If you have a hard time of deconstructing the things you want to achieve, try looking at people that already achieved this goal or a similar goal. This helps because you can copy their approach in some way or at least get some inspiration how to apply this kind of stuff.
Also the deconstructing thing takes some practice, and no one will have a perfect plan laid out right off the bat. Yet this is not the idea of this approach. It just helps to order your thoughts and make out a general direction to start. Also it builds the scaffold for a measurement of progress.
The next step is to find out how to achieve the individual steps you defined before. For me this mostly connected to finding learning material for python, data science and frameworks and applying it in a constructive and progressive way.
So naturally I will look for this in the following resources:
- Video courses e.g. on Udemy
- Books (like python for data science )
- Python tutorial (just google for it there are quite a lot 😉 )
Other aspects naturally include steps like:
- Test your skills on simple applications
- Take assignments on fiverr and the like to put some pressure on myself to complete tasks and assignments
- Use it to automate simple things in your everyday worklife (copy settings, backup of databases, schedule meetings, automate emails)
With this basic plan setup you can proceed to the next step in order to define and achieve your set goal.