Plans are worthless, planning is essential. — Gen. Dwight D. Eisenhower One of the myths about Agile is that it is disorganized coding with no documentation or regard to planning. Nothing could be further from...
Automating tests at the unit and acceptance level are the “grease that helps the wheel turn” on Agile teams. Does automated testing take extra time? When you’re first starting, yes. However, you must consider automated...
A relatively important practice in Agile is the use of multiple pairs of eyeballs to help ensure that the code that is being delivered is of the highest quality possible. Quality in the context means...
For a team to effectively share ownership of all the code, all the developers need to write the code in the same way, with rules that ensure the code communicates clearly. The specifics of the...
All of the system artifacts belong to the entire team. This allows the team to continuously move forward, avoiding bottlenecks caused by islands of knowledge in the team. This improves flow and thus productivity, and...
Continuous Integration is a practice in which the team checks in and builds the software system as often as possible. This keeps all the programmers on the same page, and enables very rapid progress. Perhaps...
The developers put a simple system into production early, and update it frequently on a very short cycle. This makes the software ‘visible’ to the Product Owner and Stakeholders, and is a much better indicator...
Iterative Development is a key element to adding agility to the development process. The development schedule for a release should be divided into iterations of about 1-3 weeks in length. This length is kept constant,...
Knowing when a Story or Feature is ready to be put into production, the Done State, is critical. It doesn’t matter if the developers believe that they’re done, or even if QA says a feature...
Many people have said that embracing change in Agile leads to scope creep and churning, and in the end nothing gets delivered. Consider this analogy: You’re renovating a bathroom, and you planned to change the...
Lack of user involvement traditionally has been the No. 1 reason for project failure. Conversely, it has been the leading contributor to project success. Even when delivered on time and on budget, a project can...
The use of the term “Velocity” is very deliberate in Agile. Velocity is defined as the rate of change of position over time along a straight line. It is a vector quantity, adding the dimension...
Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Its heart is a series of small behavior preserving transformations. Each transformation (called a...
The development team needs to release incremental versions of the system to the customers as often as possible. Release Planning is used to discover small units of functionality that make good business sense and can...
Agile teams strive for continuous improvement. Just as Refactoring is used to improve the design of the code, Retrospectives are used to improve how the team works. Traditionally, retrospectives were held at the end of...
A program built using an Agile process should be the simplest program that meets the current requirements. There is not much building for the future. Instead, the focus is on providing business value. Of course...
Each day, the team gathers for a very short meeting to discuss the current situation on the project. For this meeting, everyone stands in order to avoid long detailed discussions. This is the Standup Meeting,...
Tired team members make more mistakes. Airline pilots, truck drivers and other occupations that require sharp concentration mandate the maximum number of hours that can be worked. That doesn’t apply to the software industry, and...
Effective Agile teams use a technique called Test-Driven Development (TDD), in which the unit tests are written before the code. Then, just enough production code is written to allow the test to compile, but not...
There are situations in which the developers simply don’t know enough about a Story to be able to provide an estimate. In that case, they would perform what’s known as a Spike. The Spike is...
Agile teams use Retrospectives at two levels – at the end of each Iteration, and at the end of each Release. In both cases, the goal is to identify not only what didn’t work well...
A User Story is a short description of the behavior of the system from the point of view of the Product Owner. They are in the format of about three sentences of text written in...
Agile approaches prefer to use a simple estimation technique called Relative Estimation. Consider this stack of books: If you estimated the number of pages in each book, you would have some very precise numbers. You...
Quite often it’s difficult to get started writing User Stories for the first time. Here are some sample User Stories that may provide some guidance. In general, though, there are a few guidelines you can...
Any code base will contain build up Technical Debt over time. This is even more true for code that does not have any automated tests. You can easily see the symptoms of Technical Debt: Velocity...
It is said that if you forecast the weather for the next day based on today’s weather, you will be correct 70% of the time. This concept is used to determine how much work for...