In his recent talk on architecture vs. agile development, Philippe Kruchten presented a simple but compelling message:
Software Architecture is about anticipation of what is to come. Agile Development is about adaptation in response to change.
These two often seem to be at odds, but they are not. Anticipation and adaptation are not simply two principles at opposite ends of a scale. I would rather think of them as two sides of the same coin. You can only look at one side at the same time. But they come together, as a pair. You cannot have one without the other, or you will have a bad coin. Or a bad project…
Anticipation and Adaptation Last week I had anticipated to drive to my partner in Brussels on Friday night. But he got sick (chickenpox) so I adapted by canceling some meetings and joining him two days earlier. I had anticipated to write this blog entry the night before in Rotterdam, but due to my new plans I adapted my schedule and wrote it a day later in Brussels. I anticipated that I am immune to chickenpox (I already had it as a child), but if I get sick again… oh well, I will simply have to adapt.
We would not be able to do anything if we couldn't anticipate. We would not dare to sign a contract with a deadline in it; we would not be willing to choose a platform and programming language; and we would not be able to get the first version of the backlog on the wall.
Anticipation is what makes us move forward.
We would also not be able to be successful if we couldn't adapt. We would not be care to change features in order to make the deadline; we would not dare to refactor to better designs; and we would not be comfortable publishing that altered second version of the backlog on the wall.
Adaptation is what makes us change course.
In order to get where you need to be, whether in Rotterdam, in Brussels, or anywhere else in life, you have to anticipate and adapt. You must dare to make decisions and be ready to change them later. You have to make assumptions and be ready to face the consequences. You must join your sick partner and be willing to sleep on another floor.