I have actually read The Art of Computer Programming by D.E. Knuth. I even came up with my own solution to the elevator problem. It’s of note that while this multiple volume set specifically mentions “Art”, it is full of high level math and scientific analysis. This is because programming is both an Art and a Science – a full fledged discipline.
Software Architects have much in common with the Architect of a commercial building. We must fully understand the purpose of the system we are required to build and all the use cases. There is tremendous freedom in what we create – but just like the physical architect can design a fabulous wonder, if there isn’t enough parking and elevators, frustration will result. If the doors and windows don’t meet industry standard, interoperability will suffer and cost will skyrocket. And of course the structure must withstand wind and all the elements and be structurally sound – or it will be plain dangerous.
Likewise, once a software architect understands what the software system must do, we also must follow our industries best practices and create a system that freely exchanges data with other software systems and its user base, but it safe from attack. Software is complex, so we must design in flexibility and diagnostics from the start.
Good software engineers also have a lot in common with Physicians.
I’ll get around to explaining that someday.