• Tim Buchalka

How to Practice and Improve Your Programming Skills?

Today, I wanna talk about finding a project for yourself to work on if you’re looking to practice and hone your newly found programming skills.


A question I get very often from students is “Can you provide me with some more practice assignments?” or “How do I find a project to work on?” Now there’s a lot of ways that you can actually do that. One of the ways you can start with, the first one is to find a small need for an application, a program and try and write that for yourself. Don’t try and figure out how to sell it or see if there’s an audience who need it. Come up with a very simple program to solve a particular problem.


I’ve got a really weird story for you. Back when I was starting up programming, one of the first program I wrote was a very simple game. Believe it or not, I wrote it for my mother because I had this first computer, a MicroBee and it had 16k of RAM. This was back in the 1980s, and I wanted to write a very simple game and show my parents, show my mother. So I wrote a simple game which was called a reaction timer. So I had to try and figure out how to do that, and what I decided to do was to time the difference between when it said “Go” to when I press the Spacebar, and come up with basically a reaction to how long it took for that game. It had a high score ladder. A really, really simple game. Very, very primitive but that was great fun and that was a project because I had to work through the system, I had to figure out things like how to display something on the screen, I had to figure out how to calculate time from when the program said “Go” and when the Spacebar was pressed, and I had to show how to calculate that and print out the result on the screen. So that very simple, simple game was a great way to learn some basic programming skills and again it was one of the first things that I learned to program.

Another example that I can give you of a more complex program was back in 2005. I joined a new ISP, Internet Service Provider, and at the time they didn’t have a usage metre. So in other words, there was no way to track how many gigabytes or, in that case, it was more tracking megabytes, but basically how much usage for a particular month. That’s more of an issue in countries like Australia where there’s a premium price on daily usage, so you basically need to track it to make sure that your bills are not too high. So the company didn’t have the facility or it didn’t offer that as a program so I thought, “Okay, I’m gonna write a program to do that”. So I wrote a program to actually do just that. It took a very simple calculation and it was sitting there in the background and monitoring how much you were using and saving that into a very primitive text file, a really primitive form of a database. The point was again, that I figured out a need for a program and actually wrote that and solved it.

That’s way back in 2005 that I worked on that and I ended up actually making that program a lot more complex and working with the Internet Service Provider. They actually gave me a way to pull the stats from their server because I actually recorded the stats internally. They just weren’t presenting them to the users of their servers. That was an app and I’m gonna put a link in the resources for this video or in the description of this video. If you’re interested you can go and check out the original code but it’s all the way back from 2005. I released it as open source and that was another good way of doing it and that really leads me into the second point actually of contributing to an open source project.


One of the great ways that you can practice your skills is to find an open source project. Now an open source project if you’re not aware of it, is basically a program that someone has put out there to solve a particular need or solve a particular problem and is released for free. Depending on the license there is usually no great restrictions, and you’re able to take that code and adapt it or contribute to the project. So I’ve contributed to a lot of projects over the year. Over the last probably 20-plus years now, a great site you can go to is github.com. Now GitHub has been recently purchased by Microsoft but don’t let that be a negative thing because I know there are some people out there who, for whatever reason, don’t like Microsoft. GitHub is a great site and there are thousands of projects in virtually any programming language you can think of that need contributions.


Now when you’re contributing to an open source project, that doesn’t mean you need to be an expert programmer. There are lots of different ways that you can contribute. One of the early ways that I contributed to a project was with the documentation. I was more of a user of a particular program and I decided to hone the documentation and to make the documentation easier to show people how to install the application and to get the most out of it. You might wanna start there and it can be as simple as finding bugs.


So you might have decided to take that code base, the program from GitHub or any other open source repository, source code repository, and you might find a bug, you might run the program and find that it doesn’t work on your system. Perhaps it’s a particular version of Windows, or whatever it is, a particular scenario and it doesn’t work so you might firstly report that as a bug because most of these projects have got the mechanisms for you to report a bug. But secondly, you might then decide, “Okay I’m gonna have a go at fixing it”, and this can be really, really good practice for you to hone your skills. Because you’re taking a real application someone’s developed and you’re trying to figure out the flow of the program, and you’re trying to debug it, you’re trying to find the bug and fix it. What you can do is you can then contribute that change, that fix, back to the people who wrote it, back through to the repository. That can flow in as a future version of that program and that can be a good feeling because you can eventually get your name up in credits, so to speak, because you’ve actually contributed to the project. So I wouldn’t necessarily say you should contribute purely to get your name up in lights, but I know that can be a good thing when you’re going for a job to say you’ve contributed to these projects. But if you go there and do that, you’ll find that the real world skills you’ll learn, by working with someone else’s code and interacting with people can really, really set you up and help you in your journey to become a good programmer.


So I would suggest either of those methods. Firstly, find a particular problem, can be a simple problem or complex problem and try and solve that by writing a computer program or write as much of it as you can. Secondly, find an open source project and see if you can contribute to that. Both of those ways will definitely help you become a better programmer. So I hope that helped and if you’ve got any questions, feel free to leave a comment and I’ll get back to you.


© 2019 Tim Buchalka