Nine Reasons Why Programming Is Easier Than Ever Before

The good old days of programming weren’t all that good. Mundane duties were hard: Finding good role models, checking the syntax, fixing bugs, cracking the tough nuts. Let me share with you the nine reasons why I find programming in 2014 to be easier than ever before, without being any less fun.

Background: After a break of some 20 years, I’m an active programmer again. And I’m enjoying myself to no end! Sure, there are advantages in becoming a boss and in spending time with human beings rather than computers. However, once a programmer, always a programmer. It may sound nerdy, pretentious or plain strange, yet transforming ideas into not just specs but actual working code is among the most satisfying activities for many of us. Building technology is part of the fundament of the Maslow hierarchy of engineers.

I’m happy to note that the love of my youth has ripened with age, but not at the cost of beauty. Beautiful code is timeless. Python code A.D. 2014 is aesthetically more appealing, concise, elegant and readable than Pascal was twenty years ago. And nearly every aspect of coding has evolved into something much better.

  1. The editor. Sublime Text or Textmate manage feats that wouldn’t have in any way been technically impossible to implement twenty years ago. It’s just that nobody had had the ideas for the usability improvements.
  2. The user interface. Through standardised markup languages, such as HTML, JSON and XML, the coder can focus on the essential. There are ready-made tools for input and output. To the extent UI design is necessary at all, it’s simplified by packaged components.
  3. The environment. The basic configuration of the development environment is much more extensive and standardised than ever. Any Mac comes with a complete development environment, which in its standard form contains components I had expected to pay for, or at least have to install separately. And I can expect others to have the same Python 2.7 as I do.
  4. Open source. The core components I need are nearly always available in source form. Not that I need to tweak the code, but if I see the source, using it is so much easier. Besides, I get immersed in what’s usually quite good code, thus improving my own skills.
  5. Operating system independence. The Python environment differs only marginally between Mac, Windows and Linux. I need to recode only minimally. Besides, my app will be used over the web, so the last few operating system dependencies disappear altogether.
  6. Program structure. With the caveat that language issues tend to get an emotional treatment, I find today’s languages less kludged. This year, I’ve done lots of Python and bits of JavaScript, both of which have firmness, consistency and elegance. They’re less ad hoc than my previous acquaintances, PHP and Perl.
  7. Internet. Nothing has done more to simplify the life of a coder over the last 20 years, than the Internet. You can share your specs over GDoc, your source code via github, your testdata via Dropbox. Intermediate results can be shown in no time, as HTML, as JPG, or in a file format specific to the application at hand. This is possible even if the user is in another country.
  8. StackOverflow. The very reason I was inspired to write this blog entry is, like other items, probably a self-evident item to today’s coders: StackOverflow. Paradise! You don’t know how easy your life is today, unless you’ve grown up without StackOverflow. Any and all questions are smartly phrased and answered, not only clearly, but elegantly thinking around the corner into the next potential issue. Question: What’s the distance between two map points, given their latitude and longitude? Answer: Python code that can be cut-and-pasted, used as is! The same goes for date conversions in JavaScript, the best way to simulate case-switch in Python, embedding JPGs in a SVG file, or just about any issue I have come up with. It feels like a giant but easily navigable cheat sheet tailored to my needs by expert programmers.
  9. Wikipedia. If I need to learn new concepts, tools, formats or languages, Wikipedia is my best friend. I usually start by the Swedish entry, which is short and gives a good overview. The German or English entry takes longer to read, but provides a more comprehensive answer. And, should StackOverflow and Wikipedia not have all the details, there are onward pointers to the rest of the net.

So, wasn’t anything better in the old days?

Yes. One thing was better in the old days, and another was equally bad.

Keyboard shortcuts were better. I’m old-school enough not to want to use the mouse (or trackpad or other cousins). In the days of coding under Windows, I didn’t have to lift my hands off the keyboard, nor learn weird, program specific shortcuts. The shortcuts were presented to me in the menu structures. Under Mac, my coding speed is significantly impeded by the intrinsic lack of usability on the level of the operating system. Keyboard shortcuts are haphazardly implemented or nonexistent, not standardised, they lack visual cues. This one thing was better in the old days, when I coded in Windows.

Character encoding was equally bad. Ever since computers came to the Nordics, “the Scandinavian characters” åäö were treated as stepchildren. And there has been little or no progress. In the bad old days, apps lost åäö, misprinted or missorted them. In the equally bad contemporary days, apps no longer lose just åäö, but characters from all across the world. While I claim that Python is nearly always consistent and smart, it succeeds in giving me the most esoteric error messages when it comes to Unicode. If I want to print the eight first characters of “Kaj Arnö”, the eighth character is half an “ö”. Yes, half an “ö”. Equally elegant Python code otherwise either just works, or gives smart error messages.

Perhaps it will improve over time!