ND8 DEVELOPMENT
Best Practice Software Development


Thursday, July 23, 2009
OOSE -
Jacobson’s classic book is still a must read for anyone interesting developing object oriented, component based systems. The book introduced Use Cases and interaction diagramming to the world, and explains why and how to make software robust.
Design Patterns; Elements of re-
This lot pinched all the best design patterns while the rest of us weren't looking, and put them in a book. Every software architect should have a copy, anyone with an interest in developing modern, extensible software should understand the concepts
Lean Software Development -
Lean Software Development takes the ideas behind lean thinking, as pioneered by Toyota, and applies them to the field of software development. The concepts explained, including eliminating waste, delivering fast and concurrent development, underpin the Agile movement. Most importantly it explains why software development is analogous to the product development process rather than the production process.
Writing Effective Use Cases -
Though Jacobson’s OOSE explained Use Cases in just 18 pages, many more thousands of pages have been written since. Writing Effective Use Cases is perhaps the best expansion, and most commonalty read, of Jacobson’s technique, and a good reference point upon which to base a standard approach for your organisation.
Smalltalk With Style
Though the popularity of Smalltalk as a serious development language was regrettably brief, this book remains as a fine example of a how to present sensible standards and guidelines in a readable format.
Agile Software Development with Scrum -
A good explanation of the Scrum agile development process. In particular chapter five, with its discussion of why Scrum works, and its emphasis on the feedback loop to drive the discovery and development process, is a must read for anyone seriously looking to implement Agile methods.
User Stories Applied – Mike Cohn
User Stories Applied provides a good, basic and practical explanation of the main Agile requirements definition technique, and as such it should be high up on the list of books to buy if you’re starting off in Agile development. That said, those reading the book should so do with a critical eye to spot the contradictions and issues that exist within the technique.
Agile Estimating & Planning – Mike Cohn
Like User Stories Applied this is a good solid book, clearly written and covering all the main points including good descriptions of: velocity, ideal days, story points, planning poker and prioritisation, and showing how to calculate payback using NPV to boot. A good book which along with its description of Agile, and explanation of why more traditional planning approaches fail, offers more than it says on the cover.
UML Distilled -
After spending a couple years roaming the jungle of programme management, my next assignment landed me back into the world of requirements analysis and modeling, and it soon became apparent that to survive, I’d need to come up to speed on UML 2.0. UML Distilled was suggested, the order placed and a couple of days later the book arrived through my letter box.
This excellent book works for me on a number of levels. First it cuts through the
complexities to focus on the core models and practices used by the majority of practitioners
on the majority of projects. Second it sets the use of UML within the context of
an agile / iterative development where “sketches” are quickly developed to aid and
communicate understanding (rather than a more formal modeling led approach). Third
it emphasises that there’s no need to work within the strait-
I’d only take issue with Fowler on a couple of points. One is the discussion on predictive and adaptive planning. Though I’d love to work in a world where adaptive planning was the accepted norm, unfortunately Finance Directors and sponsors don’t usually want to play ball. A combination of predicative and adaptive planning is therefore needed. The second point is on communication diagrams (formally collaboration diagrams). These are so much more flexible when white boarding initial designs than iteration diagrams, and in my experience a combination of CRC and communication diagrams is extremely powerful.
In the big picture though these are minor quibbles and I’d recommend this book to anyone trying to get to grips with UML.
Armed with my new knowledge of UML 2.0, I’m now confident I can continue to survive and prosper in this ever changing environment.
Elements of UML 2.0 Style – Ambler
Put simply this book saves you the trouble of writing your own set of modeling standards and guidelines and lets you get on with something more interesting and more productive. You may quibble with 5% of the content but if 95% is fine (and it is) then that’s good enough for me, especially if it helps improve the clarity of my models. After all communication is what it’s all about.
Extreme Programming Explained – 2nd Edition -
Extreme Programming Explained describes the principles, values and practices that guide the XP approach. Though the contents are written clearly and easy to digest, from a personal point of view I found it long winded and rambling (the contents could easily be condensed into 100 pages) which is a little damming for an Agilist), and unlike Lean Software Development and Agile Software Development with Scrum, lacking in any real insight. Perhaps I should have bought the book when the first edition arrived and the ideas were fresh and new. Buy it if you’ve no other books on Agile, or to complete your collection.
The Machine That Changed the World -
The Machine that Change the World tells the story of the development of lean thinking in the automobile industry and the subsequent, and ongoing, shift from mass to lean production in manufacturing. Full of stats, figures and graphs the contents of the book provide an irresistible argument for lean ideas, based on a real, comprehensive survey of the worlds automobile industries. Though this book won’t make you a better programmer, Lean production provides the theoretical foundation for many Agile development methods (think Lean Software Development) so if you want to get to right to the heart of the matter, this is the book to read.