Matt Thompson is a Solutions Design Architect at brightsolid. In this blog, he shares tips for learning to code.
This blog is part of a three part series.
In part 2, we discussed some additional tools to help your coding. Now, we look at version control, which is a way of tracking changes you make to your code (or in a wider sense, documents, information, etc.).
There are many different version control platforms available. Again, let’s not get bogged down in choice. Git is probably the best option for beginners but I’d go one step further and say you should seriously consider using Github, which is a web based Git respository. This allows you to use Git commands at the CLI to work with your version controlled assets (i.e. scripts in our case) or a GUI to take care of the underlying Git commands for you. I highly recommend you sign up for an account at Github and go through the initial ‘Getting Started’ guide. This will teach you the majority of what you need to know in under 15 minutes. That’s what I call fast tracking!
Once you get familiar with the basics, start looking at other people’s repositories (where other people upload their projects). As well as keeping on top of all your different files, tools like Github provide a great opportunity to be collaborative. Find a project that interests you and rather than just downloading, make some pull requests (effectively a suggestion for a change). Even if you just start updating a project’s documentation to get comfortable with the process, then start looking at the code itself.
Also, make sure that your own projects are well enough documented for others to understand.
We have quickly covered (as per the theme of this series) the basics of version control and provided some options. As well as being a great collaborative tool, you’ll soon be thankful for it’s ability to ensure you are always working on the latest version of your scripts rather than deciding which of the 20 files on your desktop is the latest!
Now, we cover some of the training resources available to help you take your knowledge to the next level.
Mix it up
Some people like to learn by reading a book, others prefer videos and some people say that you just can’t beat hands on experience. I think it is fair to say that, certainly for people who are not natural students, a blended approach that utilises multiple methods works best i.e. reading, videos, hands on, perhaps classroom training too. Some recommendations I would like to make based on me having found them really useful would be:
- Python Programming for the Absolute Beginner.Really good introduction that builds your knowledge up, chapter by chapter. The last third is based on GUI/games building which may or may not be your bag but the journey up to that point is definitely recommended
- Hacking Secret Ciphers with Python. This book combines Python with cryptography and really helped drive home concepts on both topics. The fact I am interested in both meant this was a great learning technique i.e. using learning about coding to help learn about something else at the same time. Win/win!
- There are loads of online coding sites that offer courses on a wealth of different languages and subjects within each e.g. Code Academy, Code School. These offer interactive training but your mileage may vary across the different platforms so try before you buy. One option I can highly recommend, having used it myself is RealPython. Initially it just looks like some videos and PDFs, but the way they are written really helps you get to grips with increasingly advanced topics. By the end (which I’m still way off!), you should be able to build full stack web apps. Really good value too
- Podcasts can be a great way of learning new skills or keeping up to date on a particular topic. Two Python related podcasts you should check out are Talk Python To Me and __init__.
Double the learning for half the effort
For the 2nd book choice above, I make a key point. Learning how to code as a standalone goal will probably make the journey a bit boring. Without any goals other than learning syntax, you’ll soon lose momentum. However, as soon as you start using coding as a tool to achieve other things, the learning experience grows beyond enjoyable to actually being something you look forward to.
Want to be more productive at work? Want to get better visibility out of your monitoring? Want to make your home smarter? Want to create some educational games for your kids? The list is potentially endless. Using coding to hit those goals is one of the most rewarding things you can do.
Now, we will review what we’ve covered so far and then try to answer the question that will, at some point, inevitably crop up. “What do I do next?”.
You’ve picked a language, you’ve settled on a particular editor/IDE you feel comfortable with and you’ve built out a simple platform to get started with coding. After finding yourself with your computer desktop spattered with multiple versions of the same file you’ve been working on for days, you take the dive and give the introduction to Github a whirl and discover version control isn’t so scary after all.
A few days go by and you can feel yourself getting more confident and so you start to feed your appetite to learn more. You buy a book and check some videos online out. You’re even listening to a podcast on the morning commute that, whilst it discusses topics you don’t fully understand just yet, you feel like you are part of something bigger.
Then you hit a brick wall. You understand the language’s syntax and data structures. You’ve even started using object oriented programming techniques to help make your code more reusable and scalable. The thing is, you are struggling for ideas on what to apply this knowledge to.
Pick a project
Find something in your life, either at work or something more personal to you, where coding could make a difference. Some examples:
- Working with your favourite service’s API e.g. Twitter, Azure, Netflix
- Create a web based toolkit for your work colleagues to automate tasks for them e.g. creating reports, configuration management, monitoring tools
- Taking the data your company has collected over the years and learn/use some solid data science techniques to extract more value from them
The list above is short but sweet but they all have something in common. They allow you to take your current skills and start building upon them, bit by bit, continually improving not only your skills, but the value those skills allow you demonstrate.
Keep at it
Try to keep the momentum going, especially in the early days when you’ve still not learnt that persistence will almost always be rewarded. Once that becomes a learned behaviour, you’ll find it easier to stick at it, even when the going gets tough, which it will from time to time.
Look for further training materials. Search out those modules that will help you hit the ground running on that seemingly impossible problem. Find forums, IRC/Slack channels where like minded folk hang out and get engaged with the community.
Share code and help others with theirs. As alluded to above, be prepared to hit brick walls but also be prepared to think outside the box with regards to how to get past the block. You can go over, under or around a wall. Sometimes, the wall isn’t really there. Hmm, very meta.
And so we reach the end of this Getting Started With Coding series. The intention was not to teach you coding but rather to get you inspired to dive in to learning coding by cutting through the noise and setting the landscape for you.
There should now be no excuse for you to go off and start working with the language of your choice and creating scripts that help build your knowledge, self-confidence and value.
I hope you have found it useful, even motivational. Please do take a couple of minutes to let me know what you liked and what you didn’t so much so I can tweak and tailor future content. In the new year, I hope to do some more coding related posts so also let me know what you’d like to see.
If you’d like to read more from Matt, be sure to check out his blog.