I was fascinated with Jurgen Appelo’s post proposing a new “Complex Manifesto” because it was able to explain with clarity why we have to think deeper when we read software experts talk about various principles and practices. I requested him to answer a few questions on the topic and he was very kind to agree and respond. Here are the questions and answers:
- If you were to sum up the “Complex Manifesto” in one sentence, what would you say?
It is important to understand why there is no silver bullet: the world is complex.
- What were the recent causes that prompted you to create a “Complex Manifesto”?
I saw too many claims about the “absolute necessity” to do refactoring, unit testing, and several other good practices. While it is true that these practices are often quite good, there are no absolutes in this world, other than death and taxes.
- Why does the programming world need a “Complex Manifesto”?
It doesn’t. But it also didn’t need an Agile Manifesto, nor a Manifesto for Software Craftmanship, or whatever. However, these things can help to give people a frame of reference for the things they do. They are a bit like vision statements, in that they paint a global picture of how things should be. We can glance and point at them occasionally, and then we get back to work.
- What would you say to critics who may interpret the “Complex Manifesto” as “It Depends” statement? Or do you agree with that assessment?
Yes, I agree. It depends. There is no silver bullet. Everything is relative. However, my Complex Manifesto does more. It explains why this is the case.
- How much knowledge and/or experience would a developer need to be able to understand “when to use what”?
I cannot answer that question. A one year old child already understands when to use its feet and when to use its hands. While at my age I still don’t know when to use Twitter and when to use Facebook. So again… it depends on the problem.
- Do you envision the “Complex Manifesto” as changing the arguments from “what methodology is best” to “what scenarios is a particular methodology better in”?
No, I don’t think any methodology is best. For every software project there are several optimal sets of best practices. Whether or not such an optimal set closely resembles any particular methodology is probably pure chance. The real value of methodologies is that they are good vehicles for teaching practices, and for practices to be carried over from one project to another. The practice “collective code ownership” gets copied around more than “private code ownership” because the former is part of XP while the latter is part of FDD, and XP is far more popular than FDD. That is the value of methodologies: they copy practices around.
- Finally, religious arguments among programmers in the right spirit are fun to read. If the “Complex Manifesto” is widely accepted, wouldn’t it make the community a little, ahem, boring?
Not at all. Religious arguments in absolutes are useless when they don’t consider the context. But when people do consider a context, we can still enjoy fanatical arguments. I know several of these going around in our projects… 🙂