Best Software Engineering & Architecture articles of the last decade (2010–2019)
You have to know the past to understand the present — Carl Sagan
Internet pace is frenetic. In a couple of months, articles and books become history. Slowing down and reviewing the past can be a rewarding experience, so I reflected on my notes and came up with the best articles of the last decade.
I have decided to order them chronologically so we spare the “which one is the best one” controversy and focus on content. I have left many outside the list and for sure there are a lot more. Please share your best ones in the comments.
Some of the greatest writers in this field are Martin Fowler, Joel Spolsky, Paul Graham, Robert Martin (Uncle Bob), Neal Ford, Rebecca Parsons, Patrick Kua, Gregor Hohpe, among many others.
Are You a Software Architect? by Simon Brown (February 2010)
The creator of the C4 model for Software Architecture, Simon Brown, about the role of the Software Architect. I think the best part is in the first paragraph when he mentions that becoming an Architect is not awarded overnight and it is not a rank neither. It is the result of gradually building experience, confidence and going through many battles in the field.
Why Software Is Eating The World by Marc Andreessen (August 2011)
The well-known Marc Andreessen’s 2011 prediction that software is eating the world is so obvious now and it was such a brilliant observation almost a decade ago. Tangible-asset-light and information-rich businesses were the biggest winners of the decade. Now every company is a software company, or at least it should.
The Clean Architecture by Robert C. Martin (August 2012)
Uncle Bob’s clean architecture introduction and definitions. He advocates separation of concerns, and to do so he uses layers. By separating the software into layers, and conforming to The Dependency Rule, you will create a system that is intrinsically testable, with all the benefits that implies.
Microservices by Martin Fowler (March 2014)
Having no precise definition of this architectural style, this is one of the first and greatest articles describing the characteristics of microservices:
- Componentization via Services
- Organized around Business Capabilities
- Products not Projects
- Smart endpoints and dumb pipes
- Decentralized Governance
- Decentralized Data Management
- Infrastructure Automation
- Design for failure
- Evolutionary Design
Microservices are SOLID by Matt Stine (June 2014)
I wanted to include a reference to the SOLID principles expressed by Robert C. “Uncle Bob” Martin in his foundational book, Agile Software Development: Principles, Patterns, and Practices. And Matt combines both microservices and SOLID in one article.
This article was written prior Sam Newman’s Building Microservices was released in Feb 2015 and around 2014 we were trying to get consensus about this new Architectural pattern.
Beck design rules by Martin Fowler (March 2015)
Kent Beck developed Extreme Programming and Test Driven Development. In this article Martin Fowler summarizes Kent design rules in 4 simple but still powerful guidelines to improve coding in any language or programming paradigm:
- Passes the tests
- Reveals intention
- No duplication
- Fewest elements
10 Lessons from 10 Years of Amazon Web Services by Werner Vogels (March 2016)
Lessons learned from the Amazon CTO from 2006 to 2016. I always liked his clear vision and direction in his article. Some lessons learned mentioned are:
- Build a minimum feature set and make evolvable products/systems
- Automation is key to be able to achieve reliability, performance, and scalability expectations
- Security by design
- API are forever
The Well Rounded Architect by Patrick Kua (November 2016)
Pat explores 6 different aspects of being a Software Architect:
- Leading, guiding, shepherding a team
- Spending time with developers and time in the code
- System focus and paying attention to quality attributes
- Thinking like an entrepreneur
- Balancing strategic with tactical thinking
- Excellent communication skills
Container based architectures by Pablo Iorio (July 2017)
This is the first part of an article series about container based architectures. The first one covers technical advantages in development, testing and production. The second part covers business benefits. The third part will compare 3 major cloud providers container services (AWS, Azure and Google).
The Architect Elevator — Visiting the upper floors by Gregor Hohpe (May 2017)
Gregor is well known for his insightful metaphors, and Architect Elevator must be one of the best ones. At the beginning he did not use this phrase for his book (37 Things One Architect Knows About IT Transformation). However, he is now using it in his own website where he writes about real life IT experiences.
The concept highlights the importance of Architects in nowadays technology driven organizations. This elevator spans from a company’s engine room where code is writen all the way to the penthouse where upper management defines the strategy.
Engineering incremental change by Neal Ford, Rebecca Parsons and Patrick Kua (October 2017)
This article talks about one of the most important chapters from Building Evolutionary Architectures which describes architectures that support incremental change along with some of the engineering practices used to achieve incremental change.
I like the idea of designing fitness functions to have objective, quantifiable results. For example, developers can test concrete architectural characteristics like coupling, develop guidelines, and eventually automate those tests.
Serverless Architectures I/III: Design and technical trade-offs by Pablo Iorio (February 2019)
This is the first part of an article series about serverless architectures. Design and technical trade-offs are the focal point of this work. The second part covers business benefits and what drives adoption. The third part compares major market offerings.
I like it because it provides an unbiased view of serverless written in such a way to stand the test of time.
Nines are not enough: meaningful metrics for clouds by Adrian Colyer (June 2019)
Adrian reads, analyses and provides a short summary of influential, topical or otherwise interesting papers in the field of computer science. In this case, Jeffrey Mogul and John Wilkes at Google authored the paper Nines are not enough.
I enjoyed this writing because it gave clarity around SLIs, SLOs and SLAs. And why is so difficult to define them in a cloud environment with so many variables.
Bonus: Who needs an Architect? By Martin Fowler (July 2003)
Outside the last decade range, but probably one of the greatest articles. What is architecture, and who exactly is an architect? Many years after and still interesting debates around this topic.
Final thoughts
This selection is heavily influenced by my personal taste and career situation. Please share your thoughts about other notorious articles that caught your attention in the last decade. Thanks.