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:
- The Byzantine Generals Problem (1982) by Leslie Lamport, Robert Shostak and Marshall Pease - The problem with distributed consensus
- Go To statements considered harmfull (1968) - by Edsger W. Dijkstra - Didn't you always want to know why ? :)
- 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)
- Big Ball of Mud (1999) - by Brian Foote and Joseph Yoder - patterns or anti-patterns?
- No Silver Bullet Essence and Accidents of Software Engineering (1987) - by Frederick P. Brooks - On the limitations of Technology and Technological innovations.
- 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
- 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
- Harvest, Yield, and Scalable Tolerant Systems (1999) - by Armando Fox, Eric A. Brewer - That's where the CAP theorem was first defined.
- 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).
- 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