Pragmatic Programmers Interviews ar Artima.com
I can't resist to point out a series of great discussion on software development by Pragmatic Programmers Andy Hunt and Dave Thomas:
Part I. Don't Live with Broken Windows -- the importance of software craftsmanship and the importance of staying on top of the small problems in your projects.
Part II. Orthogonality and the DRY Principle -- the importance of keeping your system orthogonal, and the real meaning the DRY, or Don't Repeat Yourself, principle.
Part III. Good Enough Software -- the myth of bug-free software, the importance of specifying level of quality as a system requirement, and the need for every team member to inject quality throughout the development cycle.
Part IV. Abstraction and Detail -- an approach to design in which details are pulled out of the code and stored as metadata.
Part V. Building Adaptable Systems -- reversible design decisions, the cost of change curve, going beyond the requirements, and making systems configurable.
Part VI. Programming Close to the Domain -- the benefit of programming in a language close to the business domain.
Part VII. Programming is Gardening, not Engineering -- a gardening metaphor for software development, the reasons coding is not mechanical, and the stratification of development jobs.
Part VIII. Tracer Bullets and Prototypes -- the importance of getting feedback during development by firing tracer bullets and building prototypes.
Part IX. Programming Defensively -- the importance of programming defensively against your own and other's mistakes, of crashing near the cause, and understanding the proper use assertions.
Part X. Plain Text and XML -- the value of storing persistent data in plain text and the ways they feel XML is being misused.