Learning how to program changes how one interprets the world and how they think. As with any journey or learning-curve, going through it can make a person’s point of view and experience with the subject shift. Perhaps, they begin to appreciate the hard work behind it, or they meet people that change their opinions about something. In any case, learning how to make your own computer programs helps one understand the hard work and beauty behind coding, and causes them to mentally grow as a person. For example, when I was first teaching myself how to code, I discovered that as I became more skilled my brain began recognizing patterns in different programs I created.
By “patterns” I am referring to syntax and similar solutions to different programming puzzles. I suppose this pattern-recognition is similar to that of a linguist’s. When studying dialects, over time, repetition and the patterns of the languages become easier to understand and are recognized quicker. In a way, learning a programming language is similar to learning a spoken language in that one has to rewire their brain to think more literally, meticulously, logically, and creatively.
[Image Source: Pexels (Tim Gouw)]
Coding is hard. It takes a substantial amount of time and effort. Therefore, when I put in hours upon hours of time (and patience!) to create a program that wasn’t even a thousand lines long, I realized the beauty and hard work behind software development and programming. I was proud of the program I’d created, but I also considered more complex applications and the developers behind them. It was only then that I could truly appreciate the technology of our century.
I understood how much commitment and dedication it took to create just a small piece of software, not mentioning other types of programming development, such as game development. I tried that, too. It’s even harder. Just like how a single mistake when solving an algebraic equation can throw the solution way off, a single mistake in a line of code can ruin a program. Nevertheless, going through that struggle taught me not only how important patience, diligence, and tenacity are across the facets of life, but also the skill and practice required to create efficient, neat, and beautiful code. Whenever I saw a game with excellent graphics or a dynamic productivity application, I considered the hard work behind it and not merely how polished the user-interface appeared.
[Image Source: Pexels (Skitterphoto)]
As Stephen King once said: if one wants to be a good writer, read a lot and write a lot. Similarly, if one wants to be a good coder, code a lot and code a lot. I learned this the hard way by being capricious with my coding practice when I first started out. I would go on a marathon of Codecademy lessons one week, and then the next several weeks I would go cold turkey. By the time I was ready to pick it back up again, I had forgotten half of what I’d learned earlier. I regret to admit that this routine went on for the first one or two years that I was teaching myself how to code. But, eventually I completed more than half the course. I know, that is still not the whole thing, but near the end of the course, I discovered that I wasn’t learning as well completing the lessons as I was when creating my own programs from scratch; without a guide.
Among coders in the programming community, this is a common issue with some online classes or websites. Lots of students become dependent on the online guide, and don’t truly learn how to construct original solutions to programming puzzles without clicking the “hint” button. This dependence has been dubbed by some as “The Cliff of Confusion.” A rookie programmer can’t continue this way for long, and eventually he or she has to learn how to be independent; typically by ditching the orthodoxy of their classes by failing over and over again when creating programs on their own. At least, this is true in my experience. One can read dozens of articles about how to write or how to code, but actually typing up one’s own creations is often the most successful way improve; especially because both endeavors are practical, applied skills.
If you’re interested in beginning your own programming/computer science journey of exploration, some great practice resources include Codewars, CodeInGame, HackerRank, and Khan Academy courses. Interested in game development? Checkout some awesome indie game devs on YouTube, including Jabrils, Brackeys, and Sebastian Lague.