2020, a year of reading - Tech leadership, software architecture, mathematical thinking, algorithms and XP

Last updated May 5, 2024 Published Feb 11, 2021

The content here is under the Attribution 4.0 International (CC BY 4.0) license

2020 was a mixed year for reading, in my list, I had technical subjects, productivity, algorithms, software architecture, programming methodologies, microservices and leadership. In total, I read 1k pages across the listed subjects.

Books read in 2020

This section provides my thoughts on each of them, my personal opinions and the book I enjoyed the most [1]. Disclaimer: The order I list the books here does not represent the order I read them, instead I combined them into sections that relate to closer subjects.

Software architecture patterns

Software Architecture Patterns is one of the books I will keep for reference as it provides 5 chapters with different architectures, diagrams and examples of applications that use such patterns. I wrote a post about the patterns used in the book while I was reading it [2], the book is around 47 pages long and catalogs the following architectural styles:

  • Layered
  • Event-driven
  • Microkernel
  • Microservices
  • Spaced-based

[3] goes through each style and gives a few examples on how to use them, the diagrams used are helpful to depict the architecture components. Pat Kua [4] uses the listed architecture styles in his talk as a context to build evolutionary architecture.

Production-Ready microservices

This was one of the first books I read focused on microservices, as such it is a complete guide on what, when and how to handle microservices. Susan Fowler catalogs the aspects that matter while choosing the microservices architecture for the enterprise and how to standardize them [5]. I shared more details on what I got from reading her book along with other references as well.

Grokking algorithms

Grokking algorithms [6] was a book for remembering classical algorithms and implementation that as programmers we use every day without noticing it. Aditya visually depicts the algorithms, transforming the book into a choice for first-year Computer Science students(and of course, experienced developers who might want a refresher on the subject).

Extreme programming explained

Extreme programming by Kent Beck and Cynthia Andres [7] was one of the most pleasant readings of the year. The history of agile is written in this book, the new approach to developing software in pairs and focusing on code was a “crazy” idea at that time. Unfortunately, the XP is not used as much as SCRUM. In my opinion, it lacks technical excellence and rather focuses on processes for managers, not programmers. This is also what Martin Fowler states in his blog post entitled “Flaccid Scrum” [8]. Besides that, more recently he also shared the same opinion on the ThoughtWorks podcast - Twenty Years of Agile. There, Jim Highsmith and Martin Fowler made an agile walk-through, since its conception.

Redis for dummies

Redis for Dummies was an easy read to recap a few Redis concepts and ideas on how to use it.

Get your hands dirty on clean architecture

Software architecture has been a subject of interest to me for a long time. I started to practice TDD, [9] then I followed with software architecture. Clean architecture is one of the most popular styles among the developers I know, it became a standard for getting started on the subject.

Uncle Bob defined the clean architecture based on different styles, fetching what each one of the others has to offer best and then added his thoughts [10]. The result is clean architecture, which is a history of the computer history, best practices on programming and also an architectural style definition, named clean.

Therefore, Uncle Bob’s architecture [11] does not provide an implementation for his architecture, it is a theoretical book. Tom, on the other hand, took the clean architecture and gave his opinionated implementation [12], using the java programming language. Get Your Hands on Clean Architecture is a reading for programmers who want to understand clean architecture practically.

Talking with tech leads

Pat Kua [13] assembled a collection of advice from tech leads from various sectors in the industry, the insights provided are a handful list of do’s and dont’s for novices in the tech lead role and for experienced one.

As he mentioned in an interview at ThoughtWorks podcast [14] the book is also a collection that he wishes he had when he made the transition to a tech lead position. The podcast can be a warm-up before reading the book.

14 habits of highly productive developers

Zeno Rocha [15] collected 14 habits that might help developers to achieve their career goals. It is not a recipe to follow as it is described, rather it is a friendly companion to keep under the shelf and consult it from time to time.

Introduction to Mathematical Thinking

This book is a companion to the MOOC(Massive Open Online Courses) by Dr. Keith Devlin named “Introduction to Mathematical Thinking”. The MOOC is aimed at students who are coming from school mathematics and want to level up to university mathematics, or at least to get started with it. The course is one of the best I have ever taken and as such, the companion book has exercises to follow on the course.

References

  1. [1]M. Marabesi, “My Year in Books,” 2021 [Online]. Available at: https://www.goodreads.com/user/year_in_books/2020/34168517. [Accessed: 11-Feb-2021]
  2. [2]M. Marabesi, “Software arquitecture patterns,” 2020 [Online]. Available at: https://marabesi.com/architecture/2020/10/17/software-arquitecture-patterns.html. [Accessed: 15-Feb-2021]
  3. [3]R. Mark, Software Architecture Patterns. O’Reilly Media, Inc, 2015.
  4. [4]P. Kua, Evolutionary Architecture by Patrick Kua. Devoxx, 2017 [Online]. Available at: https://youtu.be/iDYAtys2oK0
  5. [5]S. J. Fowler, Production-ready microservices: building standardized systems across an engineering organization. " O’Reilly Media, Inc.", 2016.
  6. [6]A. Bhargava, Grokking Algorithms. Manning Publications, 2016.
  7. [7]K. Beck and C. Andres, “Extreme Programming Explained: Embrace Change (The XP Series),” 2004 [Online]. Available at: https://www.goodreads.com/book/show/67833.Extreme_Programming_Explained. [Accessed: 15-Feb-2021]
  8. [8]M. Fowler, “FlaccidScrum,” 2009 [Online]. Available at: https://martinfowler.com/bliki/FlaccidScrum.html. [Accessed: 31-May-2021]
  9. [9]M. Marabesi, “ARE YOU NOT USING TDD ?! - PART 1,” 2015 [Online]. Available at: https://marabesi.com/tdd/2015/04/19/not-using-tdd-part-1.html. [Accessed: 31-May-2021]
  10. [10]R. C. Martin, “The Clean Architecture,” 2020 [Online]. Available at: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html. [Accessed: 07-Oct-2020]
  11. [11]R. C. Martin, “Clean Architecture A Craftsman’s Guide To Software Structure And Design,” 2017 [Online]. Available at: https://archive.org/details/CleanArchitecture/page/n179/mode/2up. [Accessed: 2020-Jun-11AD]
  12. [12]T. Hombergs, Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java. Packt Publishing Ltd, 2019.
  13. [13]P. Kua, Talking with Tech Leads. Patrick Kua, 2014.
  14. [14]P. Kua, “Talking with tech leads with Pat Kua,” 2021 [Online]. Available at: https://www.thoughtworks.com/podcasts/talking-tech-leads. [Accessed: 29-Mar-2021]
  15. [15]Z. Rocha, 14 Habits of Highly Productive Developers. Zeno Rocha, 2020.

Edit March 29, 2021

Added reference to the ThoughtWorks podcast, an interview made with Pat Kua about the book Talking with Tech Leads.

Edit March 29, 2021

Added reference to the thought works podcast, an interview made with Jim Highsmith and Martin Fowler about the 20 years of agile under the book Extreme Programming Explained.