Growing Software - Proven Strategies for Managing Software Engineers (Amazon / Official Website) written by Louis Testa is the latest No Starch Press book I received a free review copy of (thank you No Starch Press). Imagine that you are working for a mid-sized software development company and you were recently promoted to become the manager of a small development team. Now you have to figure out how to plan and schedule the software development process and how to manage the people in your team. Growing Software wants to assist you with this.
The nearly 400 pages of Growing Software are divided into five parts
which are themselves divided into three to six chapters for a grand
total of 20 chapters.
The first part of the book is called "Development Team" and it encompasses the chapters "Getting Started", "Managing a Software Development Team", "Creating an Effective Development Team", and "Growing a Software Team". This part is about all the things you have to do when you are the new manager of a team. It starts with the most basic issue: how to actually get hired and what red flags to watch out for during your job interview. Afterwards the author explains what you should do to build a strong development team once you got that lucrative management job. He talks about proper conduct and behavior towards your team and your bosses. You are given guidelines how to effectively organize your team and how to communicate your ideas. The final chapter of this part is about hiring new people for your team.
The second part of the book is more technical. It is called "Product and Technology" and it contains the chapters "Defining the Product", "Driving Releases", "Evaluating your Tools and Methods", and "Assessing your Technology". In this part, the author explains how to define your product and how to interact with marketing and customers to make sure that you share a single vision of your product. Afterwards he describes the importance of selecting the right tools for the job and the significance of a having well-planned and well-documented release process. The final chapter of this part gives some hints on how you can critically and objectively assess the quality of your product.
The third part, "Outside of Engineering" contains just three chapters: "Working with your Company", "Working with the CEO and the Executive Team", and "Listening to your Customers". This part is all about creating a productive work environment that includes not just the people of your team but also all the other people who are indirectly involved in your product. This part is about company and management style as well as properly setting up meetings and creating good relationships with all relevant people.
The fourth part, "Making Work Flow: Projects, Process, and Quality", is the longest part of the book. It contains the six chapters "Project Estimating", "Starting a Project", "Project Execution and Tracking", "Designing a Software Development Process", "Process Improvement", and "Understanding Quality Assurance". This part is the part that is most concerned with the technical aspects of software development. It is all about collecting data and using the collected data to predict the future of a project. In this part the author gives advice on how to track your project progress using your favorite spreadsheet application (example spreadsheets are provided on the official website of the book) and how to visualize progress to recognize bottlenecks during development. He also talks about several of the existing software development processes (Waterfall, Agile, Scrum, ...) and how to improve your process once you have one. The final chapter is all about the importance and organization of quality assurance.
The fifth and last part of Growing Software is called "Planning the Future". It contains the chapters "Setting the Direction", "Product Roadmap and Strategy", and "Going Forward". With a total page count of just over 20 pages, these three chapters are rather small. The author talks about the importance of having a vision for your product and that it is of utmost importance to detect potential future problems (like technological debt or key people leaving the company) as early as possible.
Alright, so much for the description of the content. Let's start with the review. I read this book because we at zynamics are on the edge between being a small company and being a mid-sized company. I estimate that we need to hire just two more developers before we need to restructure our current development process to account for the growth in communication and management complexity. Reading Growing Software was my first attempt to prepare for this.
The book is well-structured and well-edited and the audience is well-defined. So the typical things I complain about in my book reviews do not apply here. Indeed, I really liked the book. The reader with no real process management experience (like me) can start at the beginning and just read the book cover to cover, picking up all the advice from the book. The book was an easy read and it was really interesting to compare the tips and guidelines shared in the book with all the stuff we figured out on our own at zynamics.
What I also liked about the book are the real-life accounts. Every few pages, there is a small gray box where a random person is quoted about some topic that directly relates to the content presented in the book. This gives the book a bit of a personal touch and emphasizes the usefulness of the advice presented in the book.
While reading I wondered what the right time to read the book really is. Like I said, we at zynamics figured out a lot of the advice shared in the book on our own. You just have to get things like proper build and release management done or you are not going to release any good software and the trial-and-error methods we tried at the company resulted in processes that are reasonably close to what the book recommends. For this reason I am not really sure when you should read the book. Maybe the book could have saved us a lot of time had we read it in advance. But maybe we would not or could not have accepted the advice in the book without failing at our own attempts first. I guess we will find out soon because the second half of the book is more advanced than anything we do yet.
That second half is all about turning estimates into real project development roadmaps. Using Excel or another spreadsheet program we are supposed to track time of everything and make predictions about the future. Trying to use the sample spreadsheets available on the official website of the book might be an interesting experience. While we do some rudimentary estimate-based planning already, the things presented in the book go deeper and I can not really estimate whether the spreadsheet-based approach will work for us or not.
So yeah, I liked the book and I would definitely recommend it to everyone who is in the same position as I am. If you work for a small software company who is growing into a mid-sized company and you want to prepare a bit for the inevitable process changes you might want to give this book a try. The primary thing I took from this book is that even though we at zynamics are on the right way there are still many things waiting for us in the future and we need to prepare for them somehow. You might feel the same about your company.