Wednesday, October 28, 2015

Agile encourages developers not to think about the future?

Does Agile encourage developers not to think about the future?

You Ain't Gonna Need It

The argument against Premature Generalisation is that a lot of bloated software designs come from well-intentioned software designers attempting to prepare for anticipated needs, just in case.  Instead, you remind yourself that You Ain't Gonna Need It, that the carrying cost of more complex code will be greater than any anticipated future cost of change AND that a simpler design is always easier to modify to address an unanticipated design need than a complex one.

In other words, don't anticipate any specific future but be ready for any future.  See Kent Beck's Rules of Simple Design.

I will accept that this doesn't really work without the discipline of simple design.  Hence, issues with Flaccid Scrum.

What's the simplest thing that could possibly work?

There was a slogan in Extreme Programming called "Do the simplest thing that could possibly work."

It came from a pair programming episode with Ward Cunningham and Kent Beck:
So when I asked, "What's the simplest thing that could possibly work," I wasn't even sure. I wasn't asking, "What do you know would work?" I was asking, "What's possible? What is the simplest thing we could say in code, so that we'll be talking about something that's on the screen, instead of something that's ill-formed in our mind." I was saying, "Once we get something on the screen, we can look at it. If it needs to be more we can make it more. Our problem is we've got nothing."
Asking the question "What's the simplest thing that could possibly work?" is about focus; it's about trying to focus on the essence of a problem rather than try to solve every problem at the same time; it's about dealing with the blank page problem in programming.

Does Agile encourage developers not to think about the future?

So it seems that the Agile community is encouraging developers not to think about the future.  Well, not exactly.

There's nothing wrong with thinking about the future per se.  The problem is to allow thinking about that future to distract from what you need to deal with right now.  The problem is acting upon that future prematurely.

The Agile approach is to not anticipate any specific future but be ready for any future by keeping the design simple.

No comments:

Post a Comment