This may be true in some contexts—just do a LinkedIn search for Software Architect to see why—but it doesn’t change an ancient truth about our profession: As Fred Brooks pointed out 50 years ago in The Mythical Man Month, it always has been important to separate architecture and implementation. And he also emphasizes the value of that vision being carried out and conveyed by singular people instead of committees.
Who is the architect of the Windows NT kernel? The Linux operating system? The Python programming language? If you can answer those questions with names, you’ve undermined the premise that the title “software architect” is devoid of value.
On the flip side, consider prominent software failures and consider that absence of an architectural vision may have contributed. The dumpster fire of the ROCm/HIP API set is a recent example.
Or I’ll take an older example from the distant past. I was development lead for Direct3D when Intel and AMD rolled out SSE and 3DNow, respectively. If you include x87, that meant there were three (3) instruction sets we needed to cover in our geometry pipeline—which made sense because the hardware was all rasterization-only, turning 2.5D triangles into pixels (2.5D means the triangles had had the perspective projection applied, so they were in “screen space” Applying that mathematical transformation was a core function of the geometry pipeline). So we designed an internal interface that would enable Intel and AMD to plug in optimized versions of our geometry pipeline, and it would be no one else’s business: the message to game developers was “use our geometry pipeline, we’ll make it fast.” To CPU vendors, “plug into our geometry pipeline to differentiate your platform.”
During Q&A, a guy asked, “So you will be shipping an ICD?”
“ICD” stands for Installable Client Driver and it is a full API implementation behind the interface. Surprised, I said No, there is way too much common code between the app and drivers for us to do that. We’re just enabling CPU vendors to plug into an internal interface.
Another hand, another question. “Why aren’t you doing an ICD?” and so on. The reliance on the ICD model (absence of an open source reference implementation) figured into Chris Lattner’s critique of OpenCL, btw.
I think we all understand that the engineers writing optimized geometry pipeline code were going to do a good job. The amount of work is identically the same whether they licensed it to each hardware individually or to Microsoft for use in Direct3D. But in one case, the API implementations become atomized and consistent behavior across the platform is much harder to achieve, while in the other, all three parties in the positive sum game benefit. A minor software architecture story, but one that has stayed with me because it sort of exemplifies the cultural divide. I have met many software engineers who are tactically excellent, but will happily row in the wrong direction for years because they never bother themselves about the larger context where their code resides (or will reside).