97 Things Every Software Architect Should Know

97 Things Every Software Architect Should Know is a collection of essays written by a community of software architects. Each essay is about a page or two and drops some soft skill knowledge an architect needs to master. I already made reference of this book in 101 Things Every Software Architect Should Know. In this post I wanted to highlight some of the favorite quotes from the book, some real pearls of software architecture. The reason why these quotes mean something to me is because I have found them to be true through my experience. I hope they right true with you too.

“Fast” is not a requirement. Neither is “responsive.” Nor “extensible.” The primary reason why not is that you have no object way to tell if they’re met.
– Keith Braithwaite

Simplicity through experience rather than generality through guesswork.
– Kevlin Henney

Every team member has a different view of what is more or less important. Their concerns are often focused on their personal responsibilities, not the project’s goals.
– Dave Quick

A little training goes a long way toward ensuring that everyone is on the same page when it comes to reuse.
– Jeremy Meyer

Software architects love the challenge of big, complicated projects. The potential rewards can even tempt people to artificially expand a project’s scope to increase its apparent importance. Expanding scope is the enemy of success because the probability of failure grows faster than expected. Doubling a project’s scope often increases its probability of failure by an order of magnitude.
– Dave Quick

Large projects’ requirements change many times before they’re completed. Important requirements usually remain important as the business changes, while others change or even evaporate. Prioritization lets you deliver the most important requirements first.
– Dave Quick

Reducing the project scope often results in a simpler architecture, and is one of the most effective strategies an architect can apply to improve the odds of success.
– Dave Quick

There is no appeals court for required field or mandatory workflow. … Required fields seem innocuous, but they are always an imposition of your will on users. They force users to gather more information before starting their jobs.
– Michael Nygard

From an architects’ point of view, the hard part is to find the natural places to locate boundaries and define the appropriate interfaces needed to build a working system.
– Einar Landre

Things are usually easier said than done, and software architects are notoriously good at coming up with things to say.
– Timothy High

When you try to guess at future requirements, 50% of the time you’re wrong and 49% of the time you’re very, very wrong.
– Chad LaVigne

Screening for specific technical knowledge is definitely part of the process but turning an interview into a certification test will not guarantee success. You are searching for developers with problem-solving skills and passion. The tools you use are sure to change; yoiu need people who are good at attacking problems regardless of the technologies involved.
– Chad LaVigne

If you accept this fact – that the choices you make today will most certainly be wrong in the future – then it relieves you of the burden of trying to future-proof your architectures.
– Richard Monson-Haefel

Choosing a good technology for right now is hard enough; choosing one that will be relevant in the future is futile. Look at what your business needs now. Look at what the technology market offers now. Choose the best solution that meets your needs now, because anything else will not only be wrong choice tomorrow, but the wrong choice today.
– Richard Monson-Haefel


Leave a Reply