Why I Stopped Coding and Why I'd Start Again

It's been about a year since I wrote a program. I've written snippets of code since then but have mostly focused on managing other developers. This is partly because, as a business owner, my spare time is scarce; I have many tasks to juggle. It's also because programming stopped being fun for me.

I have been fascinated with computers and telecom systems since I was a child, but in the past several years, coding has become more of a chore, in large part because the task of actually designing something useful is a small one compared with the much less interesting work that's now required.

My favorite language is Python. I am partial to it for several reasons, but mainly because Python source is easy to write and easy to read. I have always disliked C/C++ and derivatives languages such as Java because they are, for me anyway, a chore to work with. For whatever reason, I have a tendency not to see punctuation marks when I am writing. It's a trivial thing, but I would spend a half hour trying to track down a missing { in Java. The languages themselves make sense, but for me anyway, they just weren't much fun to work with. I'd spend more time debugging a program or trying to figure out some external library than I would working on whatever problem I was trying to solve.

I like Python particularly for its versatility. I could use it as a command-line tool in one instance, a standalone app in another, or as a web script in another. Other languages can do this, but it seemed especially easy to do this with Python. I've used it to build a lot of useful little apps, for example, a Spanish flashcard program that I use to memorize vocabulary. I also like it because it is as close to procedural code as you can get. Anytime I needed to build a small utility of some sort, it was a great choice, unless I wanted to do something like talk to a database, or distribute something for use on other peoples' computers.

When I started my most recent venture, I really wanted to use Python for most of our applications. It's easy to read, runs on everything, and because of that, is cheap to support. The problem is that to do anything useful, you invariably need to talk to a database, and that's where Python falls flat on its face. I am not picking Python out for abuse here; it's what I've worked with the most. And in any case, my critique of current programming tools applies across the board.

Python should have become the dominant language for web apps but instead has remained in the shadows of Perl and PHP (and now Ruby). Most systems I see outside of large organizations run on PHP, ASP (I know, yuck), and in the past year or so, Ruby. You can find services that run on Python, like Zoomr, but they are the exception.

One of the main reasons for this is that getting Python to talk to databases can be quite an annoyance. While it does provide a high-level DB API, that API in turn talks to external modules that are designed to work with specific databases such as MySQL. It sounds simple enough, but if you're supporting servers that are scattered all over, it's a pain in the ass to keep track of which versions of what have been installed on which boxes. I never understood why, in the early 21st century, we're still using proprietary wire protocols to send SQL queries to database servers. I wrote a piece about this, Really Simple Database Protocol, in 2005, but I digress.

My gripe applies to most development environments, as to one degree or another, they each force you to waste time on tasks unrelated to actual design and development. Some languages force you to deal with external libraries. Others force you to load bloated IDEs and ship gigundous distributable packages. Others force you to deal with the author's idiosyncratic ideas about how code should be as unreadable as humanly possible.

What I want from a programming language is very simple:

I want a standard library that supports the features that most applications use. If an app needs external libraries, it should load them dynamically and transparently to the user.

I want to be able to distribute apps, using only the standard library, and not have to distribute all of the underlying libraries (for example, "just copy widget.pyc into /widgets and run it. Have fun!"). This is just my unique bit.

I want a human readable language. If it's full of extraneous formatting characters, I can't read it and will spend my time searching for missing brackets.

If performance matters, I want the option to compile to a native executable or talk at runtime with an external binary. No build commands.

I don't want to learn yet another language. That's fun when you have all the free time in the world, but later in one's career, this time is scarce. I'd rather spend my limited free time these days learning new human languages.

Lastly, I want a language that is baked into computers, much as I can go right to Python in Mac OS. I don't want to install something like .Net from a DVD.

I'll admit that I am lazy. Tinkering with computers is fun when you're first learning about them. I remember how I'd happily spend hours trying to figure out how to get the drivers for a Dialogic phone card to work. Eventually, though, you reach a point where your curiosity about the machine gets replaced by a desire to do useful things with the machine, and that's where most development tools fail.

That's my gripe with programming today. I remember "back in the day" when you'd turn a computer on and it would start up in BASIC, as if to say "teach me to do something." Today's computers are really fancy, but if you want to write software, and especially if you want to do something really useful, prepare to spend a lot of time just getting your development tools laid out on the table.

Here's a domain where a company like Google could make a really useful contribution to the trade, not by creating an operating system, but by creating the web generation's answer to BASIC. I mention Google because the tech industry has a history of launching new languages about every ten years. The last big industry push to create a standard language was Java. Since then we've slid backward into a confusing muddle of acronyms and competing languages. Google could set a standard here, and dare I say it, by simply dusting the rough edges off Python and getting it baked into all sorts of devices. The company could make a lot of headway.

My vision is to take a mature language like Python and add just two new features to the interpreter. It is a simple change, but it will create a real web operating system--one that is simple to build upon yet infinitely extensible.