Don’t Let Architecture Astronauts Scare You (2001)
39 points by koala
39 points by koala
The article goes more in the direction of "when you think too much about abstraction, you stop thinking about the actual point of the software", which is a great point. However, in my head I've always focused on something else, perhaps less important: when you become an architect and disconnect from the day-to-day of writing and maintaining code, you lose your ability to reason effectively about software development.
IMO it is much worse than that. At megacorps, solving complex problems is highly rewarded. This changes the incentive for writing the best, most simple, most elegant solution to the most complex solution. Anytime I see someone with Architect in their title at a megacorp, I think they love composing huge Rube Goldberg machines out of commodity software components. They have their list of popular tech and they have to tick off each checkbox. They might notice that a solution isn't using Kafka, oh no! Gotta have some Kafka in there! It gets added. Same for a workflow system. Gotta add the Temporal! They are playing pokemon and gotta catch every tech trend.
Heh, but I don't think overengineering is specific to architects or people who are detached from writing software. In my experience, people coding daily also do it.
It's true that organizations sometimes incentivize this, but I also think we all love to learn new shiny stuff.
On a different direction, I also think we often mistake what a "complex problem" is. For example, we've been writing CRUD apps for eons, and they still take an absurd amount of menial work to deliver. IMHO it's because a good generic CRUD framework is a complex problem but we do not realize it. The last innovation I found in this area I liked was... Django around 2011.
(And I'm not sure what makes some problems sexier, honestly. My best fit theory is that they must feel new. CRUD is an old problem.)
when you become an architect and disconnect from the day-to-day of writing and maintaining code, you lose your ability to reason effectively about software development
That's a strong claim. I've not seen that in practice from people who used to do good day to day development. They ask questions as sharp as anyone else about projects.
I think this depends heavily on how good a developer the architect was. Most people I’ve seen who had good taste as devs carry that into architecture, and most architecture astronauts were developer astronauts, too.
IME the worst architects are those with zero development background. They’ve only ever thought in theoretical abstractions.
Earlier discussion here eight years ago. (Edit: fixed link, see child comment.)
I was reading yet another essay of the current mania, when the term "architecture astronaut" popped into my head. I have seen it used many times, and I think it's a useful term, but somehow I had missed apparently Joel coined it.
(It's a bit ironic and disappointing that I dug a bit to see what Joel is up to these days, though.)
Not related to the article's actual argument, but reading it gives me an odd feeling. It stirs up nostalgia for the rosy optimism of the early 2000s. Maybe it hits differently because that's roughly when I got into software development. Makes me wonder whether people looking back at this era, twenty years from now, will feel something similar.
Yeah … it was an exciting time. We'd been through the dot-com crash, which brought a welcome bit of calm, and people were figuring out what to do with new stuff like dynamic HTML, XHR, structured data formats like XML, high-level networking APIs like Java's and Python's…
(Plus, for us Apple diehards, MacOS X had come out and made development so much easier and more powerful. I remember taking a Cocoa training class in late 2000 and my mind being blown at how easy it was to build a GUI app.)
I feel like it was Facebook (and secondarily Twitter) that ruined everything … but I’m sure if they hadn’t, someone else would have.
I've shared a silly idea with my friends before that it was the death of Google Wave that marked the end of the 2000s techno-optimism (and this attitude of "we can do things that are both technically cool and broadly successful, because they are technically cool"). There was techno-optimism after that, but of a different kind. That would roughly coincide with FB/Twitter becoming more popular.
But any historical marker like that would be arbitrary, and all of it was an ongoing process.
Lately I'm placing the end of the "golden age" at the rise of smartphones. For example, release of the first iPhone in 2007. But Google killed Wave in 2010, so more or less the same era. (I thought Wave was the future, the next big Google revolution after search and GMail. My crystal ball is not so good.)
To me the factor is the move to non-programmable, non-keyboard devices, which are much less "interactive" than laptops, desktops, etc. But likely it was also the increasing "commercial" activity on the Internet and a couple of other things.
Smartphones turbocharged companies providing ad tracking and behavioral analysis to maximize "engagement", so I agree with you that their widespread usage tipped the industry over to the dark side.
I find something jarring about reading Joel on Software on a site that doesn’t look like JoS. This is how my brain wants it to look (and on a pixelated screen too):
https://web.archive.org/web/20020204105728/http://www.joelonsoftware.com/articles/fog0000000018.html
True! I arrived there a few years after you. This is how my brain wants it to look, with the Hg Init tutorial in the corner:
https://web.archive.org/web/20120103135501/http://joelonsoftware.com/articles/fog0000000018.html
As someone with "architect" in my job title, I try very very hard to not be an astronaut.
It's too easy to suggest solutions that are technically correct, and completely useless or unhelpful to the folks on the ground. And if you do that often enough, they start circumventing you, and you lose any effectiveness you might have had.