Gripes about modern programming

My biggest gripe with modern programming is the sheer volume of arbitrary stuff I need to know. My current project has so far required me to know about Python, Django, Google App Engine and it’s datastore, XHTML, CSS, JQuery, Javascript, JSON, and a clutch of XML schema, APIs and the like.

Don’t get me wrong, I’m grateful for all of it, but it just doesn’t seem like what I was promised when I followed SICP for the first time. It just feels like I spend most of my time scouring through documentation and trying to remember umpteen different sets of syntax and class names rather than actually thinking in code.

Back in ye olden days, most programming tasks I performed felt quite natural and painless, just a quiet little chat between me and the compiler. Sometimes longwinded, sometimes repetitive, but I just sat and though and typed and software happened. The work I do these days feels more like being a dogsbody at the tower of babel. I just don’t seem to feel fluent in anything much any more.

We talk about ‘flow’ quite a lot in software and I just have to wonder what’s happening to us all in that respect. Just like a conversation becomes stilted if the speakers keep having to refer to their phrasebooks and dictionaries, I wonder how much longer it will be possible to retain any sort of flowful state when writing software. Might the idea of mastery disappear forever under a constant torrent of new tools and technologies?

This was a comment by jdietrich over at Hacker News. And here is the post that started the discussion. Be sure to read the follow on post as well. The comment I quoted captures my sentiments as well. In our aim to write libraries, frameworks and APIs, it’s becoming increasingly difficult to get into any sort of ‘flow’ when writing code. The analogy of speakers having to keep referring to their phrasebooks is a very apt one. The last fun programming project I did was a university project. And part of the reason why it was that fun was perhaps because I didn’t have to spend hours poring over documentation to learn class names. I wrote a module in C to read and decode a text message. The reading I had to do was about the SMS standard. Importantly I was still thinking in code the entire time.

Is modern programming geared more for assemblers than creators? Where do you stand? What is your preferred language/framework for development?