It doesn't take a genius to learn programming...

…it takes a genius to recognise and escape it when it becomes just "coding". Do not accept jobs where you are required to simply "code" things without thinking if you want to be a programmer. Instead, accept those jobs that challenge you to think before you write code. That is called "programming".

Now, for real... it does not take a genius to learn to program, but it is preferable to start younger rather than older.

I’ve started programming back in elementary school. It was probably somewhere around the year 2000. Before that, the only thing I ever used a computer was to play the limited number of games that were available to me at the time.

The first "programming" I’ve done happened like this. We’ve had a new operating system installed on our computer somewhere around that time. It was Windows 98. On the original installation CD for Windows 98, there was a directory called QBASIC. As I was de facto the "owner" and for the most part the only user of our PC, I could install things, change settings and generally play around with the PC as I saw fit. I’ve copied the QBASIC directory from the CD to the hard drive and found the executable named qbasic.exe in it. From that point onward my life was never the same. The only source of "help" with this "programming" was the Help manual that was a part of the Quick BASIC editor. It included examples, explanations etc. so learning the basics was not difficult. I wrote a couple of programs which were for the most part just slightly modified examples from the Help manual, modified only to the extent until which the code would still execute. It took me a while to grasp than the syntax was important, but when that revelation was in the past, all was pretty much a fast transformation of the mind into code. Allegorically, of course...

After Quick BASIC (a very short phase, thankfully), came Turbo Pascal, then Turbo C, Delphi and ultimately Borland’s C++ Builder. Other programming languages, such as C#, Java and PHP came much, much later in my story, somewhere around 2007, when I first started playing around with PHP. Until then, all my web based endeavours were static HTML pages, mostly generated using page builders such as Front Page and Dream Weaver.

But, it was somewhere at that time that I began to recognise a difference in my way of work regarding different programming languages. At first I thought that it was because of the difference in my knowledge of all these languages and different levels of experience with different platforms (PC vs the Web), but ultimately I understood "the catch".

Whenever I worked in C++ or Java, I was solving a problem of some kind. I was either writing games with somewhat complex logic (for me at the time, I must note) or programs to help me with tasks at my studies. Back than I was studding physics and we’ve had this very laborious task of calculating the least mean square, so I wrote a small Symbian mobile application that would allow us (my colleagues and my) to input all our measurement data from some experiment and it would calculate the result and show a small (very small) chart. Remember, mobile phones at the time had very small screen resolutions. I was using a Nokia 6120 classic phone with a 240x320 pixel screen, and the application never covered the full screen of the phone. Nevertheless, it was a task that required some though, planning, sketching and even trial and error (read in plural, even though I did not write it so).

With my job at the time, it was different. I was a web programmer, as they called my position at the company, but my job was exclusively coding HTML pages based on some PSD file with a web site design made by some random web designer. This job was paid well enough for someone fresh out of high school and enrolled in a faculty, but nowhere near as challenging as my hobby, which was programming.

Now it is obvious, but back then, whenever someone asked me what I do, I would tell them that I am a programmer. This was only half true. In private, for my own satisfaction and for my own needs (be it hobby or studies) I was doing programming, but professionally, for money, I was doing nothing other than writing code. I was a professional coder and a hobbyist programmer.

Thankfully, that changed next year, in 2008, then I started working for a different company. There I was channelled. Projects required thinking, planning, designing, building an architecture, a framework and, ultimately, programming. Business logic was never simple, almost never the same and sometimes extremely confusing. But, what isn’t here on the Balkans? Ever since than I could say that I am doing programming and that I am a programmer.

Even so, occasionally, a project comes by that requires "just coding" and it is sometimes refreshing to rest the mind and to some old-fashioned coding.

Now I like to distinguish between programming and coding, not so that I can make someone feel better or worse, but to tell people that anyone can code and almost anyone can program, but that they should be mindful of what both are so that they can recognise if they are doing what they wanted or that they are stuck at a job they thing is one thing, but is in fact something else.