October, 2014 is exactly fifty years (and one month) since my first job as a programmer. My training was a three months internship. In four years I was offered double my first salary, but I wasn’t a professional. I decided to move on. Read why.
I didn’t want to take time out from learning on the job to get a computing degree. In a field changing so rapidly, I felt my best shot to become a professional had to include experience in new developments. I also joined the professional computing society.
This was the oddly-named Association for Computing Machinery. I didn’t just join, I read as many of their publications as I could comprehend and attended conferences whenever I could. (I even had a paper accepted at a regional conference.)
I also chose jobs for learning opportunities, not salary. Positive choices means avoiding negatives ones. I shunned programmers who thought they were superior to non-programmers. If you had a problem with their software, it was your fault, not theirs.
I saw many people confounded by code written by those smarter-than-thou programmers. Instead of caring about their customers, these high-and-mighty programmers were more interested in showing off their cleverness. Not smart in my book.
The more of this arrogance I saw, the more I looked for gems of real wisdom. Early on, I discovered a programmer’s best tool was ignorance. Admit when you don’t know and get help. You can bluff clients for a while but not computers for a nanosecond.
My next epiphany came when I realized it was my job to communicate clearly to the client, not theirs to understand my jargon. Lose the tech terms and rely on common English. If you fail, try again. It’s not their fault—clarity is your responsibility.
In recent years (as I’ve written in this blog), I’ve seen a serious decline in good programming. I encounter errors so egregious they astound me. Too many programmers follow fashion, eschewing both logic and common sense. And worse.
I swear there are programmers who enjoy needlessly punishing users. I know there are programmers who write what’s easiest for them, ignoring whether it makes sense or how hard it is to use. It’s ridiculous to see this, but why do companies permit it?
The goal is obvious: things should work exactly as the user expects without thinking twice about it. The programmer may write the code, but the user should see nothing between what he or she wants and how to get it. In two words, total transparency.
Like a good writer, a programmer should produce the best experience possible without showing how it’s done. Just because you are in control is no reason to show off. Being clever is just ego. If you need that, you should avoid the reality of computers.