Several people in the Agile community believe in Emergent Design. But I think that it has caused many disasters in software development projects. See below some hilarious pictures of Emergent Design in practice, with fictional conversations illustrating the kind of thinking that generated them…
1) Commenting-Out
PM: Look, the requirements were changed, we will have to modify these stairs.
Dev: It will be too difficult to modify them, I will simply write new ones.
PM: So will you delete the previous ones?
Dev: No need to delete, I will comment them out, they may be useful in the future.
2) Connecting Modules
PM: You designed the stairs between floors, but you did not design the connection between stairs.
Dev: This should not be a problem, after having the stairs it is very easy to connect between them.
3) Adding New Features
PM: There is a very wide space here, I think we should add some benches.
Dev: No problem, benches are very modular, I can easily plug them here.
4) Emergent Design
PM: You have designed the floors, but you did not design the stairs connecting them.
Dev: Don’t worry, after we have the floors it is very easy to add the stairs.
5) Partial Requirements
PM: Sincerely, I am not sure that the system you implemented is what the customer expected…
Dev: You can check the requirements, our system satisfies perfectly all the customer requirements.
6) Choosing a Platform
PM: Ideally this system should be built on top of a land-based platform.
Dev: Land is too expensive, I suggest we use old tires instead.
PM: Are you sure that old tires would be a good technology choice for this project?
Dev: No doubt, old tires are cheap, very modular and can be combined in multiple ways.
7) Cross-Cutting Concerns
PM: I see in your design that there is some coupling between the building columns and the passage.
Dev: This should not be a concern, both can perform their function despite this small coupling.
I know that basketball court! https://www.reddit.com/r/pics/comments/4l57kw/basketball_court_in_dubrovnik_croatia/
Emergence is an attractive promise that helps selling Agile. I think that a lot depends of the developers and the pressure on the developers. I know, they should work at a sustainable pace. But is the practice the same as the theory? What makes me doubting is the fact that the development is dependent of the backlog, the demand, the wishlist.This means that Agile has a only partial view or works on a part of the system (or system of software systems). If it promises rapid and continuous delivery, the client expects it, and how much time is left to refactoring so that a good design can emerge? It is meant to refactor frequently and in small steps, but a small different decision may lead to a huge refactoring job, isn’t it? My fear for Agile is that rapid delivery will overtime lead to an emerging chaos.
Yes, extremely hilarious. Thank you for the article
How about backing up your assertion of software development disasters with actual software development disasters instead of pictures of messed up buildings?
How about reading more than just one article. Hayim Makabee has been writing on this subject for years. The examples are there if you take a minute to look instead of just complain.
Don’t get your panties in a bunch, fanboy.
Hi Agile Cheetah, I’m sure you could be more respectful. Thanks.