Tuesday, August 19, 2014

Just let me code!

The other day I ran into this article on Dr. Dobbs. The headline is "just let me code!", and the author laments the lack of "coding" in his daily work routine. This is nothing new (although the author seems to want to imply that this is a recent change. I remember a figure mentioned during a lecture back in '93 or so, where the average programmer spent around 10% percent of his time actually writing code. The rest were spent in meetings, administrative tasks, building, testing, etc.)

The articles goes on and blames the "complexity of the tools" for preventing the programmer from doing what he likes most: writing code. Tasks such as managing the SCM system, IDE, build system, deployment, testing on a variety of client systems and hardware platforms. This takes time from the pure, creative task of programming.

I have a rather different take on it.

Programming today is complicated because the systems we build are complicated. They are no longer simple executables which take some input and produce some response. They handle huge data sets using databases. They handle a wide variety of client platforms by leveraging a Javascript-enabled web browser. They handle automatic updates using continuous delivery platforms. And so on.

Demanding that you, as a professional programmer, who makes a living creating complex software products, should be able to "just code", is like a carpenter wanting to just have to do woodwork, and not have to bother about boring things like "following local building regulations". It works if you are only doing it as a hobby, but not if you intend to make a living on it.

Source code control, build systems and test frameworks are just as much part of the noble art of programming as writing nice, elegant, pure functions in Haskell. Writing makefiles, tests, and deployment scripts is also "coding", and should not be treated as anything less.