Coding is not only about producing text. Coding is a way to think, especially to think like a computer. Given that today Computers are everywhere, that sounds like a good thing to me.
Also you won’t really be able to do anything with the learned skills by itself, because you don’t learn everything. When you have finished the campaign you have the skills to solve any (mathematical at least) problem program-wise, but you have yet to acquire the knowledge of how to interact with the world (e.g. write to a file). But guess what? It’s just another function-call. You already know how to handle that. You don’t know how to show a window. Just another function-call.
You may not write the next Computer Operating System with just the skills learned from CodeCombat. But you learn the basics, and then you can extend from there.
All in all, programmers are extremely lazy. I was once told that there is no problem for which there isn’t already a library (bundled code from other developer). If there is actually such a problem it can be solved by somehow gluing two existing libraries together.
The good thing for you is that you don’t have to reinvent the wheel. You already used a library, the CodeCombat one. It provides you with functions like
attack. Now imagine you use a GUI-Library. It will provide functions like
resize. Later in the campaign you will use the
Vector-Library. It will allow you to
You will usually just have to find the correct library for your problem, and then solve the problem itself.
You want a window that calculates the average network-load? You will probably need some
Math, maybe a
Graph and of course
Network. As programmers are lazy, they will call their libraries exactly after what they are doing, which makes searching them extremely easy. It also helps developing software in general.
So you somehow created a working program, you feel awesome, but you realize you will never code the next Windows.
Don’t mind, nobody, not a single person, could (or even did) develop something huge like windows alone. One of the most important strategies in Software-Development (not to be confused with programming!) is Separate-and-Conquer. Instead of tackling the big problem, you tackle the small problems it is made up from. One after another they will fall to you and in the end you will suddenly stand on the top, noticing you have finished what previously looked like an impossible project.
Last but not least it will help you use programs. Sounds weird, but it actually works. Microsoft once asked it’s customers which features they want in the next Word-version. The results were devastating. More than 50% of the features existed already, but most users didn’t find them buried in the submenus. The most successful user-group were the software-developers. For them it was perfectly clear why the features where in those submenus, it was logical to them.
When the Microsoft-Programmers developed Word, they also created the submenus. Because nobody told them how to do it exactly they did it as it seemed logical to them. The result was that Word was only effectively usable by other Software Developers who thought the same way.
This is of course fixed today (no one understands Word anymore). But the problem itself still persists. More often than not programmers do something as it seems useful to them, just because it is the way their software (and likewise their thoughts) are structured. If
C is part of
B is part of
A it makes no sense to put
C in the topmost submenu, right? That is exactly what happens in actual software, even if
C is one of the more important features of the program.
I hope that I didn’t confuse you too much with this wall of text and look forward to any further questions.
 I know about Linus Torvalds. He was not alone.