How to improve your programming skills?
This is something we get asked a lot.
For me, being so busy running workshops for schools and completing the other tidbits that come with running a social enterprise, finding the most efficient way to improve my programming skills is always at the front of my mind.
You may recall from my earlier articles the ’10 minute a day rule’.
I have always recommended to busy people, who want to learn to code, to find 10 minutes per day to learn and practice new concepts.
This is great for when you are just starting out, but what about when you get past the basics? Or when you want to learn a new language but already know what variables and if statements are and you just want to practice doing them in java, say, instead of python.
This is the time - and a sign- that you are ready to start delving into projects!
Completing a project is the best way to improve your skills, and a great way to solve the problem of not knowing what you don’t know.
It is not enough to complete dry exercises from textbooks - whether you are a parent, school student or home educating - nor to look at other people’s code and work out what it does. Although both of these are good things to do and will bring some benefits, to really become a good programmer you must complete projects by yourself.
So where do you start?
Find something of interest and don’t worry if it seems simple or hugely complex.
It could be an Arduino controlled led lamp, or it might be a map making drone that learns how to plan the most efficient route to places.
Whatever you decide, choose something that you find interesting and that you want to complete.
For example, I would absolutely love a lamp that follows my hands around on my long workbench, particularly when I am soldering and doing electronics and switching between tasks.
When you have your idea, break it down into steps.
Make a list of the components that you need - make a note of any that you have used/programmed before and those which are completely new.
Start with the simplest part of your project - making a motor move, turning on a light, reacting to a sensor etc. then build up and start adding in the more complex parts.
As you go you will learn so much!
When you’ve finished, go back and research ways to do things more efficiently, see if someone has done what you have done and how they solved the same problems that you had.
Keep going until you know that the methods you have used are the most efficient/best solution for your project.
Because this is your project, it does not matter how long it takes you to complete. Although, depending on how busy you are, you may find it useful and motivating to have a deadline and work out how much you want to achieve by the end of each day or week.
Remember to keep it enjoyable and don’t pressure yourself too much.
Whatever you are doing, there is very likely to be some example code available online. This code might be exactly the solution you need or something that is similar and easy to adapt.
Whilst you are learning, I recommend staying away from such example code.
I find that you don’t learn a lot and there is hardly any satisfaction on completing a project this way.
This is one of the dangers of using Arduino or other popular micro controller boards, sometimes - and I never thought I’d say this - there is too much help available on line which can ruin the thrill and challenge of the project you are doing. It also means that an 8 year old can do what you just did with added quirks that you probably didn’t even think of! Hmmmm….
So I hope that helps, if you are stuck for ideas or want to share yours please do get in touch.
I am currently working with the Grandad of all micro controller boards - An ARM development board- and a few weeks back, when I was just getting started with it, I took this very satisfying picture!
There were a few issues that I couldn't get my head round, but after hours of battling I finally I got it to say "Hello World!!"
That indescribable feeling...