I came across this article by Joel Spolsky, which got me thinking about my experiences as an Architecture Astronaut. Joel wrote this essay twenty-two (!!) years ago, but it’s as relevant today as it was back then.
When you go too far up, abstraction-wise, you run out of oxygen. Sometimes smart thinkers just don’t know when to stop, and they create these absurd, all-encompassing, high-level pictures of the universe that are all good and fine, but don’t actually mean anything at all.
These are the people I call Architecture Astronauts. It’s very hard to get them to write code or design programs, because they won’t stop thinking about Architecture. They’re astronauts because they are above the oxygen level, I don’t know how they’re breathing. They tend to work for really big companies that can afford to have lots of unproductive people with really advanced degrees that don’t contribute to the bottom line.
I’m not the type of academic, full-time astronaut Joel talks about, but I have made the mistake of acting like one on more than one occasion. When we put our architect hat on, it’s easy to get caught up in creating abstractions everywhere. We see two screens that look alike, or two features that behave more-or-less the same, and our first impulse is to create a shared class or component to keep things DRY.
There’s nothing necessarily wrong with that. Abstractions are a good thing, after all. The problem is when we start creating abstractions on top of other abstractions, jumping to higher and higher levels until things stop making sense.
To avoid this, share your designs with fellow engineers early and often, and always ask for feedback. If they have lots of questions and suggestions, that’s a good sign. It means they understand your design and can imagine how it could be better. If you hear nothing at all, that’s a red flag. You might think that the lack of feedback means that your work is perfect, but it’s far more likely that people don’t fully understand your design and don’t even know what questions to ask.
Designing software is hard. It’s a constant learning process, and you’ll probably act like an Architecture Architect several times in your career. But don’t make it your entire identity. Know when you’ve gone too far up, and come back to Earth for some fresh air.