We don't seem to have a consensus as to what the word "Architecture" means. Maybe that's because it was a word invented to fit an organizational structure.
[See: WhatIsArchitectureAnyway]
Actually, the word comes from Greek archi-==chief- + tektwn==craftsman, i.e., chief-craftsman.
Interestingly enough, about a century or two centuries ago, architects were the inventors of buildings, they put their names on them.
A software architect doesn't put his name on the software, yet. He is not the creator, but he has the central vision. This means the architect must have a lot of experience.
When talking about programming, people here use "architecture" to mean an extremely broad range of different things. If you look on ArchitectureDefinitions, for example, you'll see a catalog of the following uses:
Or maybe it's because the original meaning was always weak to start out with, and the word wasn't used because it was needed to describe a concrete idea, but because it needed to justify a job title - mainly that of Architect.
Once upon a time, companies believed that programming was manufacturing, and would benefit from a hierarchical division of labor. In addition, the state of the art - language design, object-oriented theory, hardware - was primitive enough that it was hard to write agile software. Software was brittle, and it benefitted from a top-down organization.
So perhaps one day somebody decided to promote the best programmer in the company and call him the Architect - which basically meant Boss, Vice President, or even Shop Steward, but sounded much more high-falutin'. And then once they made that promotion, somebody must have inevitably asked "So if you're the Architect, how do you determine what part of the code is the Architecture (your jurisdiction) and what part isn't?" And then the trouble began.
Perhaps the reason this Wiki is full of so many people so down on the A-word is because so many of us are adherents to Agile methodologies (most notably ExtremeProgramming). And once you start seeing code as collectively owned, and you have the power to refactor as often as you see fit, you start asking yourself: "What's the point of making that distinction, anyway? Who cares what part is the Architecture if I'm allowed to change all of it?"
In XP, all programmers are architects.
[Explain that, please? Use examples, if possible.]
It's a simple, if controversial thought: CollectiveCodeOwnership means that the high-level design doesn't belong to any one programmer. -- francis
You mean like a "colorful sunset"? -- DonaldNoyes
Huh? I'm afraid you'll have to be more verbose than that. -- francis
To say more would ruin the point.