I’m new at Crisp and this is my first blog post (actually, my first blog post ever!). I thought that this could be a good time to give a short presentation of myself. I have 15 years of experience as a software developer in various roles. I worked the first nine years as a consultant at various companies and the last six years at St Jude Medical as an employee. During the years I have had different roles and responsibilities: programmer, architect, team leader/Scrum Master, manager etc. I love programming and to coach my co-workers to grow as both individuals and as professionals. I have a passion for agile development and I always try to use it’s value system wherever I work.
When I’m not working I spend my time with my family (wife and two kids), friends and training (swimming, cycling and running)
I think that you can get a good idea about people’s character by looking at what kind of books that they have in their bookshelves and their bedside tables. I thought that a good presentation of me could be to list the books that have influenced me the most during my career. So here they come, the books that I think has changed me as a professional since I started to work fifteen years ago.
1996: Advanced C++ Programming Styles and Idioms by Coplien
This was the book that opened my eyes for object orientation and C++. I was new in the profession and I didn’t really understand much about software development, but the book gave me some key insights into how to design object oriented software, and how to tame the C++ beast. It is like Scott Meyers writes in the foreword of his Effective C++, the book expands your mind!
1996: Design Patterns: Elements of Reusable Object-Oriented Software by Gamma et al
Like most people in the software industry I was really influenced by the first design pattern book. By reading the book and practicing the different patterns I have learned the value of structuring the code in small loosely coupled objects, and also the value of separating implementations with interfaces.
1997: Object-Oriented Software Construction by Meyer
This is the book that taught me Design by Contract, an extremely valuable methodology in software construction. The method helps you think through your design and implementation by stating contracts at both method and class levels, and it catches any deviations from the contracts during run time. Design by Contract is a good complement to test driven development, especially preconditions which makes the code more understandable and more maintainable.
1999: Extreme Programming explained: Embrace change by Beck
Kent Becks book about XP was a big turning point regarding how I thought software should be developed. Up to that point I had a keen interest in different processes and methodologies but all has been really heavy and complex. The simplicity of XP attracted me, and I saw the positive effect the engineering practices could have on software development. I have been a believer of the agile principles and its value system ever since.
2003: Agile Software Development, Principles, Patterns and Practices by Martin
Uncle Bob’s book taught me the SOLID principles which I have tried to follow thereafter. I had read the principles before I read the book but since I think these principles are a must in object oriented design I list the book here anyway.
2005: Toyota Way by Liker
This book about the Toyota Way was also a big turning point in my professional career. I understood the importance of creating a culture and environment that boost people’s creativity and lust for continuous improvements. Respecting people and to show belief in them is one of the best ways of achieving that. Most lean and agile implementations fails due to lack of understanding that the fundament is respect for people and a belief in that all employees are competent and willing to make decisions on complicated and complex matters.
2006: Domain Driven Design: Tackling Complexity in the Heart of Software by Evans
The ideas in Eric Evans book was in large not new to me, I had used domain oriented design for some years before. But domain driven design together with behavior driven development gave me a new set of collaboration patterns of how to organize and work in cross-functional teams. The teams that I have worked in that have implemented the two practices have shown it to be very effective and productive way of working. You avoid a lot of mistakes and rework if you make sure all stakeholders have equal understanding of what to do early, and that everybody has a shared view what to try to accomplish when implementing the feature.
2006: The Fifth Discipline: The Art & Practice of the Learning Organization by Senge
The Fifth Discipline was the first book I read about system thinking. Up to that point I could be quite detailed focused. By reading the book I learned the importance of having a systematic view of problems and to search for root problems instead of quick fixes. System thinking is also central in both Lean and Agile systems so the perspective attracted me a lot and has done so ever since.
2006: Quality Software Management, Vol 3: Congruent Action by Weinberg
Weinberg has written a lot of really good books about software development and other topics. His third volume in the Quality Software Management series, congruent action, is about interpersonal collaboration and communication, and the complexity this brings you in any software development project with more than one participant. The book gave me tools in how to inspect and improve myself and also a realization that my point of view is not always shared by everybody else!
2006: Fearless change: Patterns for introducing New Ideas by Manns et al
I like the pattern format; it is structured in a very pedagogic way. Fearless change is a very nice book with a lot of useful patterns that is valuable when you coach people and tries to introduce changes. One really simple but powerful pattern described in the book is “Just Do It”, which is a pattern that I try to follow in my profession. It is better to try to do something and observe its outcome than trying to understand everything before you go ahead and implement it.
2008: Managing the Design Factory by Reinertsen
Reinertsen has written a few really good books about project management and Managing the Design Factory is one of the best books I have read. The book describes product development using queuing, information and system theories. The book gave me a better understanding in these theories which also are fundamental in both Lean and Agile systems.
2009: Abolishing Performance Appraisals by Coens at al
I have had thoughts about the value of performance appraisals for a long time and I have grown an understanding of its negative impact on the organizational performance. This book by Coens and Jenkins gave me both theoretical ground and examples in that you if possible should avoid using appraisals. You gain far more in performance if you focus on creating an organization where people are safe to both succeed and fail without being afraid of low grades at the yearly appraisals, and to foster a culture of real peer-to-peer feedback instead of going through the managers.
2010: Coaching Agile teams by Adkins
Even though that this book didn’t change my current point of view as many of the other books listed here have done, I anyway need to include this book. Adkins book about Agile coaching is absolutely wonderful and a must for anyone trying to work as a team leader or manager in product development. I would even recommend this book for anyone working in Agile teams since we all are coaches to each other from time to time.
This was my background described from the list of books that have influenced my development at most. As can be seen I focused a lot on technical studying in the beginning of my career while the last years I have focused more on softer subjects. I still read a lot about programming and design, especially about all the latest interesting languages like Scala and Clojure, but I guess that it’s in the soft area that I have had the greatest gaps and therefore also greatest development during the last years.