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

Last updated Oct 23, 2021 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 relates closer subjects.

Software architecture patterns

Software architecture patterns was 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 pattern. I wrote a post about the patterns used in the book while I was reading it [2], the books 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 matters 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 a programmers we use everyday without noticing it. Aditya depicts the algorithms in a visual fashion, transforming the book a choice for first year Computer Science students(and of course, experienced developers that might want a refresher on the subject).

Extreme programming explained

Extreme programming by Kent Beck and Cynthia Andres [7] was on of the most pleasant readings of the year. The history of agile is written in this book, the new approach to develop software in pairs and focusing on code was a “crazy” idea at that time.

Unfortunately the XP is not used as much as SCRUM. Which in my opinion, it lacks the technical excellence, and rather focuses on process for managers, not programmers. This is also what Martin Fowler states on 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 make an agile walk through, since it’s conception.

Redis for dummies

Redis for dummies was a 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 for me for long time. I started to practice TDD, [9] then I followed with software architecture. The clean architecture is one of the most popular style 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 own thoughts [10]. The result is the clean architecture, which is a history across the computer history, best practices on programming and also a 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 that want to understand the clean architecture in a practical way.

Talking with tech leads

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

As he mentioned in an interview at thought works podcast [14] the book is also a collection that he wish he had when he made the transition to a tech lead position. The podcast can be a warm up prior to 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 from the MOOC(Massive Open Online Courses) by Dr. Keith Devlin named “Introduction to Mathematical Thinking”. The MOOC is aimed at students that 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 thought works 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.