Articles


Agile Planning Process

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...

Keep reading »

Automated Testing Enables Agility

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...

Keep reading »

Code Oversight

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...

Keep reading »

Coding Standard

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...

Keep reading »

Collective Ownership

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...

Keep reading »

Continuous Integration

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...

Keep reading »

Frequent, Small Releases

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...

Keep reading »

Iteration Planning

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,...

Keep reading »

Know Your Done State

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...

Keep reading »

Managing Scope Creep

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...

Keep reading »

On-site Product Owner

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...

Keep reading »

Project Velocity

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...

Keep reading »

Refactoring

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...

Keep reading »

Release Planning

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...

Keep reading »

Retrospectives – Improving Your Process

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...

Keep reading »

Simple Design

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...

Keep reading »

Standup Meeting

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,...

Keep reading »

Sustainable Pace

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...

Keep reading »

Test-Driven Development (TDD)

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...

Keep reading »

The Spike – Experiments to Improve Learning

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...

Keep reading »

Use Retrospectives to Improve

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...

Keep reading »

User Stories

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...

Keep reading »

User Story Estimation

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...

Keep reading »

User Story Examples

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...

Keep reading »

Watch for Technical Debt

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...

Keep reading »

Yesterday’s Weather

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...

Keep reading »