-
The First 90 Days: Proven Strategies for Getting Up to Speed Faster and Smarter, Updated and Expanded
This is the first career management book I've read that focuses specifically on transitions. Althouhg its target audiences are leaders, managers, and executives, individual contributors can also find valuable material to help during transition periods (i.e., movements between companies or within the same company). From my own experience, I can say that just the idea of a 90-day plan is in itself a great mechanism to accelerate reaching the break-even point and lessen the anxiety in these moments of change. -
Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations
Accelerate is undoubtedly on of the best examples of how to gain really useful insights into the software industry through rigorous research and analysis. Using years of data collected from The State of DevOps reports, the authors show that it's possible to define a certain set of characteristics and practices that distinguish high-performing companies from low-performing companies. They also discuss the transformation process required to achieve the same levels of results as top performers, demonstranting with real-world data that these results are best achieved when business goals, the human environment, and technical excellence go hand in hand. The use of advanced statistical methodology is something rare to see in books of this type, and really noteworthy. -
Nine Lies about Work: A Freethinking Leader's Guide to the Real World
A very well written book, very enjoyable to read. The text summarizes well many toughts I have been having in recent years about work, teams, and leadership. It's definitely one of the best I've read on these subjects. In a broader sense, it discusses factors that help explain why organizations often fail to extract the best performance from their employees. At the same time, in a more local and practical sense, it provides suggestions and action itens that leaders can use to improve the work experience and, consequently, the results of their teams.
Sunday, January 22, 2023
List of books (4th edition)
Saturday, September 26, 2020
List of books (3rd edition)
-
Refactoring: Improving the Design of Existing Code (2nd Edition)
Refactoring is one of those books that contains a lot of useful and practical wisdom. Martin Fowler presents the techniques of refactoring as a set of well-defined mechanics that can (and should) be applied to daily programming to improve the readability and maintainability of existing codebases. I had a good experience reading it from cover to cover. However, I think it would be equally good to read only the first few chapters in order, leaving the catalog to be read later as each refactoring is needed. -
The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change
The Manager's Path guides you through a journey from learning how to be managed to the complexities of being a CTO. With an articulate writing style, Camille Fournier shares excellent words of wisdom and, as she focuses specifically on engineering management, delivers content that is much more valuable to technologists than generic management books. Even those software engineers who do not intend to pursue a management career will benefit greatly from reading the book, especially the early chapters on how to be managed, what to expect from a manager, mentoring and being a tech lead. -
Building Evolutionary Architectures: Support Constant Change
Rebecca Parsons and her colleagues do a great job bringing many concepts and ideas from evolutionary computing — and biological evolution in general — into the world of software architecture. They don't take a position of defending their approach as the best way (or the right way) to build software, but rather show what kind of considerations should be made if a software architect or engineering team wants to put architectural evolution among their priorities when developing systems. Highly recommended.
Saturday, November 16, 2019
List of books (2nd edition)
-
Peopleware: Productive Projects and Teams
This is simply the best book about people and software that I've read to date. The authors use knowledge drawn from their years as software engineers and consultants to explore many questions about productivity. The book shows that leaders and managers should be constantly re-evaluating their practices (especially those that are taken as common sense) in order to maintain people at their balance point and, consequently, obtain the best results in the projects. Although the ideas in the book are focused primarily on software teams, they can also be applied for teams in general. -
Agile Software Development, Principles, Patterns, and Practices
This book by Uncle Bob was published shortly after the publication of the Agile Manifesto. It presents many design patterns and demonstrates how to use them by showing their application in real projects. All case studies are presented using principles of XP, like TDD and pair programming. The examples can become a bit tiresome by the end of the book, but the sections that present the design patterns are worth reading. -
The Effective Engineer: How to Leverage Your Efforts In Software Engineering to Make a Disproportionate and Meaningful Impact
A really practical book with many useful tips. Altough not extensive, the text covers a few different topics, offering advices that can easily be applied to everyday work. A light read that indeed has the potential to increase the effectiveness of any software engineer.
Tuesday, June 12, 2018
About blogs and books
The first post I published in this blog was about the importance of reading technical books. It was written in portuguese, but I've always wanted to translate it to English, or at least create an English version. Time has passed and, for various reasons, it hasn't happened, but I think it's not necessary anymore: Phil Caçaldo's post Read The Dinossaurs! already did the job.
I've started to read Phil's blog recently and have enjoyed much of his writings so far. This one, however, captured my attention in a special way, given I'm a passionate for books too. Thanks for that, Phil!
A curious note: I ended my post by mentioning Fred Brooks, whose The Mythical Man Month I had just finished at the time and enjoyed a lot, and Phil's post starts by mentioning exactly the same book. A coincidence that could not have been more appropriate in this case.
Monday, April 3, 2017
List of books (1st edition)
-
Design Patterns: Elements of Reusable Object-Oriented Software
A reference on the software design field, the famous GoF book is worth its status. It provides a solid ground for thinking about software projects, from the architecture to implementation and refactoring. Even if not all the patterns or their categorization are unanimously accepted (see, for example, Steve Yegge commentaries about the Interpreter pattern or the various discussions about the Singleton pattern on the web), you should know them in order to take part in the debates and decide when to apply them or not. The book organization is exceptional, which helps a lot in a book about patterns. A must-read for every software engineer. -
The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition
Is it possible that a book written 40 years ago, a 30-year paper and a review of both made 20 years ago are still relevant today? The Mythical Man-Month, Anniversary Edition proves that it is. The original content is full of good observations around the essential and accidental (in Fred Brooks' own words) aspects of the software task. The anniversary edition adds a copy of the excellent paper No Silver Bullet, published in 1985, besides new commentaries by the author. In a field where many things change fast, The Mythical Man-Month passes the test of time with great praise. -
Swarm Intelligence
The focus of this book is the PSO algorithm. Nevertheless, it also offers a good introduction, in the first part of the book, to evolutionary algorithms in general, covering historical and even some philosophical questions related to the subject. The second part shows the PSO algorithm itself and brings comments about the many ways to optimize it. The algorithm is short and simple, so it's not hard to understand (although they could have simplified it even more by using a different notation instead of greek letters). Some reviewers consider the first part as ramblings, but I have to admit I like it better. Anyway, the book as a whole offers a very good content.
Monday, March 27, 2017
The book is on the table. Bom, nem sempre, mas ele ainda é importante
Sempre gostei de ler. Desde pequeno, lembro de me encantar com as histórias nos livros. Com o tempo, passei a apreciar tipos variados de literatura, incluindo os livros técnicos. Quando entrei na universidade e tive acesso àquela enorme rede de bibliotecas dos diversos prédios, foi como se um mundo inteiro de conhecimento se abrisse diante de mim, inteiramente à disposição. E até hoje, o acesso à biblioteca é uma das coisas que mais sinto falta das minhas épocas de graduação e mestrado.
De todo modo, o gosto pela leitura persiste e, de volta ao mercado, sigo buscando bons livros para me aperfeiçoar. Hoje me espanto com a quantidade de títulos disponíveis, muito graças à facilidade de distribuição que a Internet trouxe, revolução comparável à que Gutenberg causou na produção de livros com sua máquina de tipos móveis. A propósito, o gráfico alemão ficaria certamente admirado ao ver como a imprensa evoluiu desde sua invenção, chegando aos limites de podermos consultar milhares de livros num dispositivo que cabe na palma da mão.
Igualmente espantoso, porém, é notar o pouco interesse de colegas de profissão pela leitura de livros técnicos. De maneira geral, não vejo desinteresse por ler e se informar, mas noto que os livros não estão entre as primeiras opções de aquisição de conhecimentos. Blogs, artigos de sites, artigos científicos e tutoriais entram na frente. Por que isso acontece?
Entendo perfeitamente que, sendo a computação uma área extremamente dinâmica, é fácil acontecer de conteúdos escritos sobre assuntos mais específicos se tornarem rapidamente obsoletos e isso, consequentemente, desencorajar certos investimentos, pois ninguém quer ter a sensação de estar jogando tempo fora ao ler um livro de 700 páginas que pode estar ultrapassado daqui a seis meses. Entendo também que esse mesmo dinamismo pode colocar uma certa pressão nas escolhas do que vamos ler: tem tanta coisa sendo lançada e mudando o tempo todo que, pra quem deseja estar na "crista da onda", há material suficiente de leitura nos blogs e artigos para preencher praticamente todo o tempo disponível.
Ainda assim, me questiono se esses dois motivos são suficientes para reduzir a utilidade dos livros técnicos e relegá-los a segundo, terceiro ou quarto planos, como vejo acontecer com tanta frequência. Tenho a impressão de que o problema reside mais na escolha dos livros para ler do que na leitura de livros em si.
No caso do primeiro problema que citei, se, por um lado, existem livros que tendem a ser focados no momento, perdendo muito de seu valor dentro de meses ou anos, existem também aqueles que podemos considerar atemporais. Eles tocam em questões de base, pertinentes à essência de tarefas em computação. Com isso, possuem o poder de se conservar úteis mesmo depois de anos ou décadas, ainda que algumas de suas partes fiquem desatualizadas. Esse poder compensa o esforço da leitura e retribui o investimento de tempo, por maior que seja. Não por acaso, considero que esse mesmo tipo de livro tem o poder de se colocar em patamar de igualdade (se não superior) com os conteúdos da "crista da onda". Isso porque todo conteúdo recente, toda novidade, partiu de construções anteriores. Assim, entender essas construções e, principalmente, a base comum a elas, ajuda imensamente a entender o que as novidades propõem, quais benefícios trazem em relação ao que existe e quais dificuldades acarretam (afinal, there is no free lunch).
Existe, portanto, um tipo de livro capaz de fazer frente aos impeditivos mencionados anteriormente: o livro atemporal, de base (alguns usariam o termo "clássico", mas não creio que essa palavra comunique exatamente o quero dizer). E esse tipo de livro ainda é importante, ainda vale a pena ser lido, seja no exemplar impresso ou em mídia digital. Ao fazer essa afirmação, não tenho a intenção de diminuir a relevância de conteúdos publicados em blogs, artigos e tutoriais (este texto, inclusive, faz parte de tal conjunto). Apenas exorto colegas de profissão a considerarem o quanto podem ganhar retomando os laços com esse antigo amigo: o livro.
Sabendo, contudo, que exortações raramente funcionam tão efetivamente como o exemplo, pretendo adotar a mesma postura de Fred Brooks [1] e concentrar esforços no "como", isto é, comentando a respeito de bons livros que, em minha opinião, se encaixam na categoria que descrevi. É o que virá em futuros posts.
(Anniversary Ed.). Boston: Addison-Wesley, 1995. Cap. 15, p. 164.











