Thursday, June 9, 2016

Like what you do. Love what you do well.

Why do I like programming?

My first reason would be somewhat religious. Granted, religion is not what one usually thinks of when talking about endlessly writing lines of codes and hours, days, even weeks of testing. Still, I find it divine. Why? Because it is creating something out of nothing. You get a working result, an application that somehow benefits you, as entertainment or a more productive manner. And you started with nothing more than an idea in your mind and the know-how to turn that idea into software. It's mystical. There are very few fields where the same can be said: writing books, writing music, drawing paintings... all creative processes, at best creating blueprints for productive objects or buildings or devices. Programming largely skips the middle step - just write it and you can use immediately use it. I say 'largely' as I admit most software requires some hardware to work properly.

My second reason would be the process itself. While it may be irritating, time-consuming and can make you feel so frustrated you'd almost like to quit... it is addicting as hell. The rush of pleasure when you solve a problem that has been bothering you for hours or days is simply sublime. It is the same feeling you get after solving a puzzle, jumping a new personal record height or beating an especially challenging level in a video game. It is the same feeling that explains the crazy phenomenon that was 2048. Imagine getting the pleasure of beating a difficult sudoku puzzle several times a day, sometimes even on an hourly basis. But every time you solve it, the puzzle changes. So maybe you solve a sudoku in the morning, win a game of Go in the afternoon and beat a chess champion by dinnertime. On a daily basis with constantly changing challenges - not everything is caused by a NullPointerException caused by crappy code. Sometimes you need to learn more about your tools - included but not limited to the languages used. Other times you need to rethink the logic of what you are trying to accomplish. Some times you know what you want to do but have to ponder for hours on how to describe it algorithmically so as to be able to write it in code. Other times your code works and you are left baffled because as far as you can imagine the thing shouldn't even compile, let alone work without problems. And once you strain your mind, feel the satisfying tingle of your little gray cells to arrive at a brilliant, or as it often happens more often, barely working solution, the relief of getting past a problem using nothing more than your wits and anything or anyone you can find online is breathtaking.

If you can code with someone else, share the insane joy with someone, these effects are often amplified. Sure, some people make enjoying programming very difficult, but some make it even better. And the results are even cooler - the creation of large and effective pieces of software inherently requires more than one person. As such, programming can be an awesome group activity.

So these are the reasons why I love programming. The ability to experience blissful pondering on a daily basis with others or on your own, resulting in something that never existed before and most probably would never have existed in such form if it wasn't for your thoughts, your ideas and your persistance on making it a real working program. Something out of nothing. Nothing but the random thoughts that run through your mind.