Books that most influenced the way I think about software development
R.C. Martin: Clean Code - A Handbook of Agile Software Craftsmanship(2008)
- The essential importance of testing
- All the basic principles of good code: Don't Repeat Yourself (no copy&paste!), Single Responsability Principle, code cohesion, size of classes & methods, the importance of naming
M. & T. Poppendieck: Implementing Lean Software Development - From Concept to Cash(2006)
- This book persuaded me that lean/agile development is the only feasible way to develop software - and showed me how to do it
- ? Specification by Example
Other inspiring reading lists:
- Poppendiecks: Recommended Readings - this list by the gurus of lean thinking is something that you *must* check!
- Jiri Novotny: 30 books everyone in software business should read (and why) - I guess that tips for some interesting books can be found there
The talk how we decide helped me to understand that different decision making modes are suitable in different situations and how important it is to understand and be aware of our own thinking/deciding process. Another talk taught me that the most important thing to succeed is to know (and communicate) why. Finally I got support for my opinion that what motivates us isn’t money, but purpose, mastery, autonomy. I summarize these talks in the post The 3 Most Important Things I’ve Learned This Year (2011).
- Books Our Developers Should Read
- Top 5 Java programming books - Best of lot (actually 8) - 1) Head First Java, 2) Effective Java, 3) Thinking in Java, 4) Head First Design Pattern, 5) Concurrency Practice in Java, 6)Java performance, 7) Java Puzzlers, 8) Head First Object Oriented Analysis and Design.
Books read recently (selection)
- Difficult Conversations: How to Discuss What Matters Most 5* - handle difficult conversations at work and with loved ones by focusing on a "learning conversation" - explore and share the underlying emotions, the impact on one's identity and self-image, and discuss what happened / should happen without blaming or judging but with acknowledging the contributions of each party and the fact that everyone's "story" matters and has a grain of truth. Adopt the "and stance" (ex.: "I am devastated about breaking with you - and I still think it is the best thing to do for us) rather than focusing on the conflict-laden all-or-nothing thinking. A lot in common with Nonviolent Communication (importance of exploring and communicating emotions, of avoiding blame and judgement). Quotes: "difficult conversations do not just involve feelings, they are at their very core about feelings." "The point is this: difficult conversations are almost never about getting the facts right. They are about conflicting perceptions, interpretations, and values. [..] Interpretations and judgments are important to explore. In contrast, the quest to determine who is right and who is wrong is a dead end." A great overview/summary of the book by Break Through Consulting (PDF, 16 pages).
- The Goal: A Process of Ongoing Improvement by Eliyahu M. Goldratt - 4* - a great classic in lean thinking in the form of a novel
- Nonviolent Communication: A Language of Life: Life-Changing Tools for Healthy Relationships by Marshall B. Rosenberg - 6*
- The Innovator's Dilemma: When New Technologies Cause Great Firms to Fail (Management of Innovation and Change) [in progress?]
- Thinking, Fast and Slow [cca 50%] - 6*
- The Tao of Coaching: Boost Your Effectiveness at Work by Inspiring and Developing Those Around You - 4*
- The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win - 5*
- Boyd: The Fighter Pilot Who Changed the Art of War - 3* - my review and digest