Does Agile work in construction projects?
Short answer: No
Long answer: NOOOOOOOOO!
What do you want from the project?
Some projects are all about a desired outcome, rather than a specific output. In some projects, relationship between the output and the outcome depends on the market and the unexpected behaviors of customers, which are very hard to predict. As a result, when possible, instead of basing everything on an upfront prediction, we choose an exploratory path: We build subsets of the product, let the end users (or their proxies) see them, work with them, and generate feedback. We use the feedback to decide what the best next step is. We continue this adaptive cycle until we have a satisfactory output. This is an adaptive lifecycle: Agile.
Projects have different environments
Most projects do not suffer from that complex relationship between their outputs and outcomes. Instead of adapting, we run the project based on prediction: We predict the product that will satisfy the needs, and we predict the best way of realizing that product.
Sometimes we must use a predictive method, because exploration is not possible. Spotify and Netflix can try anything they want and find the best product, but someone who's developing a piece of software for an airplane's autopilot system cannot do that because we don't want to risk people's lives. Instead of exploring ways of achieving the best solution, we try to predict every possibility, and settle for a safe option.
Sometimes exploration is not possible because it's not compatible with the nature of the product. A construction project is the best example: We can't use an adaptive method for a construction project, because we can't have usable subsets of the product to experiment with and generate feedback —the product is only useful when it's finished in its entirety. Besides, many such projects don't even reveal their results until a few years after they finish (so there's no feedback when we need it.)
On the other hand, the development stages of construction projects cannot be mixed into an iterative form like those of Agile projects. There has to be a design phase, where we design all (or at least most) of the product. For example, we cannot design a foundation without designing the rest of the building, because the design of the rest of the building determines the load on that foundation. These separate stages of development are what the Agile community identifies as the "waterfall".
So, why do some people say it's possible?
I've seen many people claiming that, for example, it's possible to use Agile in construction projects. It's normally because of one of the following scenarios:
- The person is familiar with Agile, but doesn't have any hands-on experience with construction projects.
- The person is familiar with construction projects, but doesn't understand Agile properly and thinks that having certain rituals and artifacts makes them Agile (Cargo Cult mentality)
- The person is neither familiar with Agile nor with construction projects!
However, some people only want to create a new market for the services they offer without paying attention to the serious negative consequences of their actions.
— the end —