knowledge-base

Nuggets Of Wisdom

When a team builds a system primarily around reuse, they also incur a huge amount of coupling between components.

When an architect designs a system that favors reuse, they also favor coupling to achieve that reuse, either by inheritance or composition. However; if the architect’s goal requires high degrees of decoupling,then they favor duplication over reuse.

Don’t try to find the best design in software architecture; instead, strive for the least worst combination of trade-offs.

Data is a precious thing and will last longer than the systems themselves.

There are no right or wrong answers in architecture - only trade-offs

A second common style of definition for architecture is that it’s “the design decisions that need to be made early in a project”, but Ralph complained about this too, saying that it was more like the decisions you wish you could get right early in a project. His conclusion was that “Architecture is about the important stuff. Whatever that is” - (Martin fowler) Note that “what is important” means that (expert) developers decide what is important, a simple webapp, the DB could be important, but for a medical imaging app, a detail.

There are no wrong answers in architecture, only expensive ones

Developers are drawn to complexity like months to a flame, frequently with the same result.

Since hindsight no longer leads to foresight after a shift in context, a corresponding change in management style may be called for.

Conway’s law suggest major gains from designing software architecture and team interactions together, since they are similar forces.

Promote software to a profit center, and demand strategic innovations as the only acceptable result.

TODO