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.
"Offers a requirements process that saves time, eliminates rework, and leads directly to better software. A great way to build software that meets users' needs is to begin with 'user stories': simple, clear, brief descriptions of functionality that will be valuable to real users. ... [the author] provides you with a front-to-back blueprint for writing these user stories and weaving them into your development lifecycle. You'll learn what makes a great user story, and what makes a bad one. You'll discover practical ways to gather user stories, even when you can't speak with your users. Then, once you've compiled your user stories, [the author] shows how to organize them, prioritize them, and use them for planning, management, and testing"--Back cover.
Project managers, technical leads, and Windows programmers throughout the industry share an important concern--how to get their development schedules under control. Rapid Development addresses that concern head-on with philosophy, techniques, and tools that help shrink and control development schedules and keep projects moving. The style is friendly and conversational--and the content is impressive.
Ken Schwaber, Mike Beedle
Arguably the most important book about managing technology and systems development efforts, this book describes building systems using the deceptively simple process, Scrum. Readers will come to understand a new approach to systems development projects that cuts through the complexity and ambiguity of complex, emergent requirements and unstable technology to iteratively and quickly produce quality software. BENEFITS Learn how to immediately start producing software incrementally regardless of existing engineering practices or methodologies Learn how to simplify the implementation of Agile processes Learn how to simplify XP implementation through a Scrum wrapper Learn why Agile processes work and how to manage them Understand the theoretical underpinnings of Agile processes
David J. Anderson
"Kanban is becoming a popular way to visualize and limit work-in-progress in software development and information technology work. Teams around the world are adding Kanban around their existing processes to catalyze cultural change and deliver better business agility. David J. Anderson pioneered the Kanban Method. Hear how this happened and what you can do to succeed using Kanban."--Publisher's website.
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.
Mary Lynn Manns, Linda Rising
* *Individuals and organizations fear change; this book helps you overcome that fear and make it work for you! *Helps you assess your organization's culture and accurately predict the level and speed of change that will be most effective * Teaching points are supported by illustrative case studies
“Agile Software Development is a highly stimulating and rich book. The author has a deep background and gives us a tour de force of the emerging agile methods.” —Tom Gilb The agile model of software development has taken the world by storm. Now, in Agile Software Development, Second Edition, one of agile’s leading pioneers updates his Jolt Productivity award-winning book to reflect all that’s been learned about agile development since its original introduction. Alistair Cockburn begins by updating his powerful model of software development as a “cooperative game of invention and communication.” Among the new ideas he introduces: harnessing competition without damaging collaboration; learning lessons from lean manufacturing; and balancing strategies for communication. Cockburn also explains how the cooperative game is played in business and on engineering projects, not just software development Next, he systematically illuminates the agile model, shows how it has evolved, and answers the questions developers and project managers ask most often, including · Where does agile development fit in our organization? · How do we blend agile ideas with other ideas? · How do we extend agile ideas more broadly? Cockburn takes on crucial misconceptions that cause agile projects to fail. For example, you’ll learn why encoding project management strategies into fixed processes can lead to ineffective strategy decisions and costly mistakes. You’ll also find a thoughtful discussion of the controversial relationship between agile methods and user experience design. Cockburn turns to the practical challenges of constructing agile methodologies for your own teams. You’ll learn how to tune and continuously reinvent your methodologies, and how to manage incomplete communication. This edition contains important new contributions on these and other topics: · Agile and CMMI · Introducing agile from the top down · Revisiting “custom contracts” · Creating change with “stickers” In addition, Cockburn updates his discussion of the Crystal methodologies, which utilize his “cooperative game” as their central metaphor. If you’re new to agile development, this book will help you succeed the first time out. If you’ve used agile methods before, Cockburn’s techniques will make you even more effective.
Esther Derby, Diana Larsen
The tools and recipes in this book will help readers uncover and solve hidden and not-so-hidden problems with their technology and methodology. It offers tips to fix the problems faced on a software development project on an ongoing basis.
Donald C. Gause, Gerald M. Weinberg
A Practical Guide for Everyone Involved in Product and Systems Development The fledgling problem solver invariably rushes in with solutions before taking time to define the problem being solved. Even experienced solvers, when subjected to social pressure, yield to this demand for haste. When they do, many solutions are found, but not necessarily to the problem at hand. Whether you are a novice or a veteran, this powerful little book will make you a more effective problem solver. Anyone involved in product and systems development will appreciate this practical illustrated guide, which was first published in 1982 and has since become a cult classic. Offering such insights as "A problem is a difference between things as desired and things as perceived, " and "In spite of appearances, people seldom know what they want until you give them what they ask for, " authors Don Gause and Jerry Weinberg provide an entertaining look at ways to improve one's thinking power. The book playfully instructs the reader first to identify the problem, second to determine the problem's owner, third to identify where the problem came from, and fourth to determine whether or not to solve it. Delightfully illustrated with 55 line drawings, the book conveys a message that will change the way you think about projects and problems.
Software documentation forms the basis for all communication relating to a software project. To be truly effective and usable, it should be based on what needs to be known. Agile Documentation provides sound advice on how to produce lean and lightweight software documentation. It will be welcomed by all project team members who want to cut out the fat from this time consuming task. Guidance given in pattern form, easily digested and cross-referenced, provides solutions to common problems. Straightforward advice will help you to judge: What details should be left in and what left out When communication face-to-face would be better than paper or online How to adapt the documentation process to the requirements of individual projects and build in change How to organise documents and make them easily accessible When to use diagrams rather than text How to choose the right tools and techniques How documentation impacts the customer Better than offering pat answers or prescriptions, this book will help you to understand the elements and processes that can be found repeatedly in good project documentation and which can be shaped and designed to address your individual circumstance. The author uses real-world examples and utilises agile principles to provide an accessible, practical pattern-based guide which shows how to produce necessary and high quality documentation.
Marc T. Sewell, Laura M. Sewell
A transformational guide to the profession of software architecture. Whether a structure is built of bricks, steel, or computer code, the process begins with an architect and client. Together they arrive at a shared vision—a plan—that the architect guides through the bidding, construction, and implementation phases. The Parthenon and the Empire State Building were built according to architectural designs, but the software industry has been building information skyscrapers without architects. It is time for the profession to become a reality. Successful software-based technology is designed, then built. It does not "develop." Who creates the design? An enormous grass-roots demand exists for software architects-but a true profession of software architecture is not yet established. Many software professionals adopt the gravitas of the title "software architect," but fail to fulfill the true, classical role. Drawing on deep metaphors from traditional architecture, Marc T. Sewell, President of the Worldwide Institute of Software Architects, and Laura M. Sewell examine the nature of architecture, what defines a software architect, and how the profession is coming of age. The Software Architect's Profession is lingo-free. It is a book of philosophy that will enable anyone to understand software construction, and it is the first "line in the sand" defining the parameters of this fledgling, yet ancient, e-profession. Key areas include: Bridging the chasm that separates clients from technical professionals Differentiating the professions within the software construction industry and defining the roles and accountabilities of software engineers and software "builders" Discussing the vocational temperament and aptitudes that characterize architects Reviewing the phases of architecture Describing the critical role of the client in understanding and validating the design and construction of software Whether you are a CIO, CEO, IT manager, software professional, or student, you inhabit software structures, and your world is profoundly affected by their design. The Software Architect's Profession offers a simple cognitive map that will change your world view of software architecture, construction, and the information structures we live and work in everyday.
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.
Walker Royce, Kurt Bittner, Mike Perrow
Build software to interact with customers and help deliver goods and services in new and innovative ways • • Industry observers see this synergy of business concerns and IT projects as the fastest growing topic of interest to both groups • A compact and easily-digestible book that explains the key terms behind software success and failure from a business perspective • Borrows from real-world case studies and helps team leaders and managers understand why software costs what it does. Through the years, software has come less and less of an IT concern, and -- for better or worse -- more closely tied To The fortunes of an entire business organization. Yet still, even in this day and age, educated business people are often at a loss when it comes to making an informed decision about software initiatives. They truly don't Understand The widespread ramifications of their technology decisions. This book will dispel common myths about software costs, and help organizations Understand The challenges so that they may devise projects that will show measurable return on their significant technology investment. Based on years of field experience, The authors explain how software impacts the entire business infrastructure, and how it can be either a barrier to, or facilitator of success. This book outlines the essential principles of software economics so that decision makers throughout the organization can better Understand The challenges and opportunities that software presents them. The book turns the traditional view of software development as an 'engineering' discipline on its head, and offers alternative concepts of economics, iterative process, and valuebased management as the basis for repeatable, predictable success within any business organization.