How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Michael C. Feathers
The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.
The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.
Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.
Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.
To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.
The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.
Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.
It's an unfortunate commentary on the state of our programming industry how much we need this book.
Jez Humble, David Farley
The step-by-step guide to going live with new software releases faster - reducing risk and delivering more value sooner! * *Fast, simple, repeatable techniques for deploying working code to production in hours or days, not months! *Crafting custom processes that get developers from idea to value faster than ever. *Best practices for everything from source code control to dependency management and in-production tracing. *Common obstacles to rapid release - and pragmatic solutions. In too many organizations, build, testing, and deployment processes can take six months or more. That's simply far too long for today's businesses. But it doesn't have to be that way. It's possible to deploy working code to production in hours or days after development work is complete - and Go Live presents comprehensive processes and techniques for doing so. Written by two of the world's most experienced software project leaders, this book demonstrates how to dramatically increase speed while reducing risk and improving code quality at the same time. The authors cover all facets of build, testing, and deployment, including: configuration management, source code control, release planning, auditing, compliance, integration, build automation, and more. They introduce a wide range of advanced techniques, including inproduction monitoring and tracing, dependency management, and the effective use of virtualization. For each area, they explain the issues, show how to mitigate the risks, and present best practices. Throughout, Go Live focuses on powerful opportunities for individual improvement, clearly and simply explaining skills and techniques so they can be used every day on real projects. With this book's help, any development organization can move from idea to release faster -- and deliver far more value, far more rapidly.
Beck wants to encourage readers to re-examine their preconceptions of how software development ought to occur. He does just that in this overview of Extreme Programming, a controversial approach to software development which challenges the notion that the cost of changing a piece of software must rise dramatically over the course of time.
Managing builds is crucial to the profitable delivery of high-quality software; however, the build process has been one of the least-understood stages of the entire development lifecycle. Now, one of Microsoft's leading software build experts introduces step-by-step best practices for maximizing the reliability, effectiveness, timeliness, quality, and security of every build you create.
A comprehensive, expert guide to Scrum-based agile project ownership and management: roles, techniques, practices, and intangibles * *An indispensable resource for Scrum 'product owners,' the pivotal players in Scrum projects - and for all stakeholders who interact with them. *Covers product vision, exploration, user stories, use cases, planning poker, release planning, and much more. *Responds to one of the most crucial challenges in making agile work in the enterprise: finding and training the right product owner. In Scrum projects, the product owner plays a pivotal role, but until recently, few have been trained in the unique skills, techniques, and attitudes they need to succeed in this role. That's why courses on Scrum product ownership are soaring in popularity - and it's why this book is so important. Agile Product Management with Scrum is the first book to define and describe the role of agile product ownership in a systematic and comprehensive way. It covers a broad range of agile practices from the product owner's perspective, including product vision, exploration, user stories, use cases, 'planning poker,' sprints, release planning, portfolio management, and more. Drawing on extensive experience helping organizations succeed with Scrum, top agile consultant Roman Pichler gets down to the brass tacks: saving time and money while improving both quality and agility. He also addresses critical upstream processes and 'fuzzy front end' that organizations must get right if they are to adopt Scrum across the enterprise. This practical book is an indispensable resource for everyone who plays the role of product owner, or anticipates doing so. It will also be extremely useful to all stakeholders who interact with product owners - which is to say, the entire Scrum project team.