Why is programming hard?

barcampblock logo

I’m at BarCampBlock sitting in a session by Kragen Sitaker on “Why is programming hard?” We’re mostly just going round the group and trying to come up with a list of answers to that question.

Kragen's talk
Photo by Beatrice Murch

Here’s some of what’s on the board:

* Gulf of evaluation
* Gulf of execution
* Impatience (but not the Larry Wall kind, just the frustrating kind.)
* Too much crap to keep in your head
* Leaky abstractions
* Lack of flow
* Yak shaving
* We’re solving hard problems

We’re also putting together a list of “end user programming environments”: things that people use for programming-like activities while not actually thinking of what they’re doing as programming. We’ve talked about things like spreadsheets, command lines and shells (from bash to MS-DOS .BAT files), query languages (including Google search), etc. A bit like Yoz’s Folk Programming stuff (which he’s presenting again at noon, as it happens.)

Now we’re talking about “making the language fit the domain”. Of course the sexy answer to that is Domain Specific Languages (DSLs) but my feeling (in agreement with chromatic) is that there’s not much difference between a DSL and a well-designed API, at least in the sorts of languages I use. But also, some things are just good to think about as objects, and some as tables, and some as pipes, and picking the right language (one that natively thinks in that way) will help a lot.