Software development can be a very interesting and financially rewarding career. With abundance of free online tutorials, learning how to program today is easier than ever. However, there is one major hurdle that everyone who has ever tried coding is familiar with: the process of writing software can, sometimes, be tedious and boring.
This is especially true for online tutorials. Getting to know a new programming language can be tremendously useful for one's career. However, most of the tutorials available online are extremely dry. Nothing saps motivation for learning new technology as much as seeing the code for yet another "Hello world!" app.
However, the good news is that learning how to code doesn't have to be boring. Perhaps, for learning the very basics of a given language, going through some of the boring tutorial steps is unavoidable. However, once you know the basics, there is a great and exciting way of practicing your programming skills. This is how you can do it.
CodinGame is a website that makes programming extremely fun, especially for anyone who has ever enjoyed playing video games. It's all about programming video game bots to correctly respond to their environmental stimuli in many different scenarios.
Once you register on the website for free, you can choose to tackle any of several challenges of various difficulties. Easy challenges are suitable for a beginner who is just getting grips of a programming language, while the most difficult ones will keep even the most seasoned experts on their toes.
Each challenge is all about programming a bot to complete a certain task by responding to its environmental stimuli. In an easy challenge, for example, the task may be for a cartoon character to walk through a field and reach a certain point on it, while not accidentally wandering off the map. The code needs to ensure that the bot knows where it is in relation to the point it needs to reach and adjusts its path accordingly.
An example of a more difficult problem is a motorcycle that has to jump through several gaps before it can reach its destination. The code needs to ensure that the bike keeps adjusting its speed relative to length of the gaps and distance to them. For example, if the motorcycle would go too fast, it will be able to jump across any gap. However, it may have too much uncontrollable momentum and, as the result, fall into the next one. If it's too slow, however, it may not even make it across a wide gap.
For the most challenging examples, you will be asked to create something that is very close to a proper AI. There are, for example, a challenges that involve machine learning.
And this is not about programming a bot to respond to a specific environment that is set in stone. The solution should be universal enough that the bot will be able to successfully complete its challenge in any scenario, all of which operate under the same general rules. With the motorcycle puzzle, for example, you don't know in advance where the gaps would be and how wide each one of them is.
So, once your code is ready, it is tested against several rounds of inputs. Each input is just a text file with various numeric patterns representing the environment your bot interacts with. However, while the tests are running, the process is very well animated in real time, so it does look from the outside like a video game is being played. So, going back to the motorcycle example, if your code has failed to ensure that you have enough speed for the gap in front of you, you will see the motorcycle falling into the gap.
The whole process is not at all different from writing code and then running it through automated tests. That, essentially, all it is. Therefore skills and principles picked up in CodinGame will be applicable in the actual programming career, especially in a place where test-driven development is embraced.
Any popular language is supported
When you go to "Practice " section of the website, you will see many challenges specific to various computer science problems that are labeled as such. For example, a particular puzzle may have multiple labels, such as "binary search" and &quit;conditions". The labels clearly indicate what particular skill area a given puzzle will help you to develop.
Once you have solved a particular puzzle, you can publish your solution and have a look how other users have solved it. This will help you to see if you are using the language of your choice in the most effective way.
You can even compete and win
As well as giving you an opportunity to practice coding skills in a fun way, CodinGame also makes it possible to compete with others and win prices. For example, "Practice" section has a subsection that contains sponsored puzzles. Those have been placed there by various software companies, who assess the best solutions to the problems that they have posted and offer real programming jobs to their authors.
As well as this, there is a whole "Compete " section on the website that allows the members to go head to head against each other. The types of competition vary. Some of them are organised just for fun, while others allow people to win various prizes.
So, CodinGame allows you to play video games in a proper nerdy way. Instead of controlling the character, you program one to navigate its environment on its own.
The website is, indeed, the most fun way to practice coding skills. However, it is much more than that. Once you spend some time on it, it makes you realise that, although you are only typing some lines of code, the code that you've typed does something that is both really fun and visually compelling.
In real programming jobs, we often forget that what we do on day-to-day basis is more than just typing code. The code that we type becomes a part of something bigger, something that solves real-life problems for someone. When you see yourself as not just a coder, but an engineer who builds some advanced solutions to some of the most difficult problems, you will definitely be much more satisfied with your job. And one thing that CodinGame does is help you to acquire this mindset.
Written by Fiodar Sazanavets
Posted on 7 Jun 2018