I forced myself to finish a chapter of GEB tonight, and it ended with Hofstadter's Law:
It always takes longer than you expect, even when you take Hofstadter's Law into account.
Although not originally about programming productivity - Hofstadter's example was about chess-playing programs - it's gained popularity in programming circles for being annoyingly accurate in software estimation.1
Unfortunately, I've felt Hofstadter's law weighing heavily on me recently. I recently started the django-repo-browser project, but to be honest, I don't have nearly enough time to devote to it. And even that is a small sliver of the larger programming ambitions I have: an open-source, Launchpad-like project hosting app, absorbing the features of Trac, the community of Django, and the multi-project abilities of Redmine or Launchpad.
But from the outset, the amount of code needed to make that happen could easily take a year for me to write - and combined with Hofstadter's law, my chances of actually completing it are pretty much laughable.
The good news is that Trac will probably get multi-project support at some point.
The bad news is that this state of affairs doesn't really help my general feeling of hopelessness when it comes to programming - I know that no matter how good I get, I'm still stuck at being just one person, and the code a single person can write is pitifully small. Sure, it can sometimes snowball - we all know the Linux story by now - but this just reinforces the underlying deficiency: nontrivial software is too complex for a single person to write in a single lifetime, let alone in a subset of that lifetime. Only a few immortals are granted exeption from this sad state of affairs - Knuth, Thompson & Ritchie, Cutler - but for the rest of us...
And so I'm struck with the possiblity of quite literally spending my entire life learning to be a better programmer, and having nothing to show for it at the end than being a marginally better programmer than I otherwise would have been. I'll still be bound by Hofstadter's law, and things will still take me far longer to accomplish than I expect (even, naturally, with Hofstadter's law taken into account) - meaning that I'll get far less done than I anticipate.
And that's why I've never considered programming something I'd like to have as a long-term career. In fact, I'm not sure I'd ever like to have a career, per se; the idea of doing the same thing for a decade - to say nothing of three! - feels downright bleak.
-
It's also annoying in two other respects. First, it's really hard to spell. Second, how on earth is it pronounced, anyway? "Yegge" is hard enough. ↩
Comments
18 spam comments omitted.
I am no longer accepting new comments.
Noah Slater
#8803, 2008-11-03T07:38:54Z
I feel your pain...
Pavlo Kerestey
#8812, 2008-11-03T15:06:34Z
Actually the Idea of another Django-based repository is really gread. I've thought of it some days ago, but I don't have enough experience with python and Django to write it on my own. I think, that scince this appeared on Ryan Tomayko's Blog as a Link, it could spread around the web and more people will appear that want to start such a project. On the other hand, what would make your project different from Redmine?
Roman V. Shaposhnik
#8920, 2008-11-06T17:34:55Z
Hi!
I've been thinking about exactly the same set of issues lately. Software industry these days is really like a terrestrial ecosystems 160 million years ago. The complexity dinosaurs we keep spawning in the name of efficiency depress me. I can only hope that just as in nature where complexity was trumped by adaptability things like Plan 9 OS or functional programming languages will prevail over the ugly beasts. One can only hope.
On a practical side of things, though, I use Plan 9 today to overcome exactly the kind of hopelessness you're talking about. Try it out. Read the papers. And think of this: may be, just may be, Ken Thompson (who was one of the biggest brains behind Plan9) invented it for that very reason: to make mere mortals somewhat more powerful than our spiffy OSes, languages and tools make us.
I know the following is going to sound cheesy, but reading Plan9 papers, thinking about its concepts and playing with it is what I do during the dark days of professional desperation.
Thanks, Roman.
P.S. I'm slowly discovering functional languages as a comparable source of joy, but I have a long road ahead of me there.
Ilmari
#9527, 2008-11-15T13:16:43Z
And in what profession can you achieve great things as one person?
Janne
#9770, 2008-11-21T10:09:18Z
I have felt the same burden too for many years, but recently I've started to break out from this limitation. One person can do only certain amount, but what is keeping our creations from expanding? In my case the limitations came from my own doughts, fears and beliefs. Those things are kind of payload of bad experiences from this life, lives before or from the mass consiousness.
When we start to see these limitations within us and begin to release them, joy and passion begins flow into our life and into our work. So do not give up. Feeling bad about it is the first step.
How can we bring joy and passion into what ever we are doing? What are we expecting from your life and from our work? Where did lose the connection to joy and passion?
Wonderfull people began to enter into my life and my life and my work began to expand. I wasn't alone anymore ;)
Gautam Beri
#24466, 2009-07-10T12:54:03Z
I dont see it as a law coz it hasnt been true for me all the time. And it also gives u a way to get around doing work. This law shouldn't be taken into consideration while u wanna do work and meet deadlines. A project that has proper planning with principles that has a purpose can be done on time or under time.