I’ve never been much for titles. When I was relabeled as a senior engineer, I still did the same things, I was still me. I’ve never actually held the title of architect, but I feel it’s the one that describes what I do best.

It doesn’t say much. Only ‘Howard Roark, Architect.’ But it’s like those mottoes men carved over the entrance of a castle and died for.

As software developers, we borrow a lot from other engineering disciplines. As with the terms Engineer and Architect.

The separation of design and construction into phases is a hangover from civil engineering. It has the baked in assumption that the design phase is relatively cheap, short and somewhat unpredictable the construction phase is expensive, long and predictable. The root problem is the assumption that specifications can be validated for correctness, like a blueprint for a bridge can.

When building physically, blueprints are the plans and the construction is final. In software, the plans become the delivered product. A product that not only can change, but is expected to change.

Architects in software take abstract design ideas and give them a shape. They begin the plan by organizing requirements into a sub-structure that engineering is built on top of.

“Where did you learn to handle it like that, Red?”

“Oh, I’ve been an electrician, and a plumber, and a rivet catcher, and many other things.”

“Gonna be an architect?”