Evolutionary Design Talk
Evolutionary Design: The art of growing a system by observing its natural traits and then normalizing and optimizing its growth
Evolutionary Design seems to be one of the black arts of software development.
Evolution = transformation. Evolving the code is not done by magic, we the programmers evolve the code. And we need specific techniques for that. When we evolve, we transform the code to something else. We will talk about some of these transformations, when to use each one and why.
Simplicity We work feature by feature and not layer by layer. All the development is done on a vertical thin slice through all the layers. We use evolutionary refactoring with many design principles in our mind, but not with a predefined design. We respect the principles, but focus on finding the simplest solution for the problem.
Focus on the problem, not the solution We want to rather focus on the problem and not the solution, rather than when we know the solution, but we just find the fastest way to implement it. When we know the solution, the question is: can it be improved; is it worth it? We will talk about some heuristics of “good enough”.