Cirrus Minor Wiki


Papers software architects should read at least twice

Earlier today I read a post by Michael Feathers Called "10 Papers Every Developer Should Read At Least Twice.

I knew some of the articles mentioned there and learnt about few interesting ones.I liked the idea so much, I thought I'd compile a similar list for software architects - based on some of the papers I read over the years:

  1. The Byzantine Generals Problem (1982) by Leslie Lamport, Robert Shostak and Marshall Pease - The problem with distributed consensus
  2. Go To statements considered harmfull (1968) - by Edsger W. Dijkstra - Didn't you always want to know why ? :)
  3. A Note on Distributed Computing(1994) - by Samuel C. Kendall, Jim Waldo, Ann Wollrath and Geoff Wyant - one of the foundation papers on distributed computing (also appears on Michael's list)
  4. Big Ball of Mud (1999) - by Brian Foote and Joseph Yoder - patterns or anti-patterns?
  5. No Silver Bullet Essence and Accidents of Software Engineering (1987) - by Frederick P. Brooks - On the limitations of Technology and Technological innovations.
  6. The Open Closed Principle (1996) -by Robert C. Martin (Uncle Bob) - The first in a series of articles on Object Oriented Principles - known today as the SOLID principles
  7. IEEE1471-2000 A recommended practice for architectural description of software intensive systems (2000) various- It is a standard and not a paper but it is the best foundation for describing a software architecture I know
  8. Harvest, Yield, and Scalable Tolerant Systems (1999) - by Armando Fox, Eric A. Brewer - That's where the CAP theorem was first defined.
  9. An Introduction to Software Architecture (1993) - David Garlan and Mary Shaw - one of the foundation articles of software architecture field (although based on earlier work by the two).
  10. Who Needs an Architect?(2003) - by Martin Fowler - Do we or don't we?

I could come up with quite a few more articles not to mention books that aren't in this list - maybe I'll add more later