***** = Essential reading for software professionals
If you only buy one software development book this year, buy this one. It will change the way you think about your work.
Lean development was started by Toyota in the 50s when Ford was selling more cars in a day than they were in a decade. They looked at all their development activities to see how they could develop quicker and cheaper and get closer to what the customer wanted. They were so successful that now all car manufacturers have to follow the principles they developed just to remain competitive.
The Poppendiecks' book shows how to apply these lean principles to software development. The first chapter gives an overview, including listing the seven principles. They then take a chapter per principle, showing how to apply this principle to software development. The final chapter is a "warranty" and guidelines for applying the principles usefully (basically think about them, don't apply them blind).
The seven lean principles are:
I found this book compulsive reading and difficult to put down. So much of it fitted with my experience running projects - they recommend the things I found worked, and avoid the things I found didn't. And the rest of it provided useful extra techniques. Buy it. You won't regret it. But don't expect silver bullets - you will have to work at it to get the benefits.
Here's the author's description:
The XML Bible is a comprehensive introduction to XML for Web page design. It shows you how to write XML documents, validate them with DTDs, design CSS and XSL style sheets for those documents, convert them to HTML, and publish them on Web servers for the world to read. You'll also learn how to use XML technologies like RDF, XLinks, XHTML, and namespaces to add structure and organization to your document collections. And finally, you'll learn about the many uses of XML beyond the Web site, including genealogy, subscription services, mathematics, vector graphics, and more.
Fundamental Algorithms begins with mathematical preliminaries. The first section offers a good grounding in a variety of useful mathematical tools: proof techniques, combinatorics, and elementary number theory. Knuth then details the MIX processor, a virtual machine architecture that serves as the programming target for subsequent discussions. This wonderful section comprehensively covers the principles of simple machine architecture, beginning with a register-level discussion of the instruction set. A later discussion of a simulator for this machine includes an excellent description of the principles underlying the implementation of subroutines and co-routines. Implementing such a simulator is an excellent introduction to computer design.
In the second section, Knuth covers data structures--stacks, queues, lists, arrays, and trees--and presents implementations (in MIX assembly) along with techniques for manipulating these structures. Knuth follows many of the algorithms with careful time and space analysis. In the section on tree structures, the discussion includes a series of interesting problems concerning the combinatorics of trees (counting distinct trees of a particular form, for example) and some particularly interesting applications. Also featured is a discussion of Huffmann encoding and, in the section on lists, an excellent introduction to garbage collection algorithms and the difficult challenges associated with such a task. The book closes with a discussion of dynamic allocation algorithms.
Volume 2 of Donald Knuth's classic series The Art of Computer Programming covers seminumerical algorithms, with topics ranging from random number generators to floating point operations and other optimized arithmetic algorithms.
The book begins with fundamental questions regarding random numbers and how to use algorithms to generate them. Subsequent chapters demonstrate efficient computation of single-precision and double-precision arithmetic calculations and modular arithmetic. The text then presents prime factorization (which can be used in cryptography, for instance) and algorithms for calculating fractions. This volume ends with algorithms for polynomial arithmetic and manipulation of power-series topics, which will benefit those with some knowledge of calculus.
Donald Knuth's The Art of Computer Programming, Volume 3: Sorting and Searching has long been recognized as the classic guide to finding the most appropriate sort and search methods for given sets of data structures, output requirements, and physical storage systems.
Yet this book is far more than just a collection of algorithm recipes. The reader is led to understand the mathematical basis for the verifiability and performance of each algorithm and how each fits within a taxonomy of varying solutions to similar problems. Each algorithm is clearly presented in text, in language-independent pseudocode, and in MIX assembler (MIX is the hypothetical computer model used throughout the Art of Computer Programming series). Flow charts and output diagrams appear frequently to clarify the discussion. The famous exercises, which are graded in difficulty from easy snap-quiz questions to unsolved research problems, keep you from glossing over the material or kidding yourself about what you know. Throughout, Knuth's writing is lucid and witty, and he keeps the most abstruse discussions rooted in reality with concrete examples.
Except where otherwise indicated, all content on this site (including text, images, dance descriptions and any other original work) is licensed under a Creative Commons License.
This page is maintained by Ian Brockbank