Programmers want to be productive - for example by floating down the waterfall, by coding like a cowboy, or by taking small but safe test-first baby steps. Ultimately - but as well as soon as possible - we want to have our features running and hopefully even tested.
Producing features is the joy of a programmer. Yet, after our code bases have grown to some size, the productivity decreases and maybe even the joy we feel while studying our code isn't that big any more.
The code we wrote last month or last year could be seen as the soil in which new code and new functionalities grow. If this growth is slowed down, this tells us something about the quality of this soil. Then it is time to focus for a while on improving the quality of the soil without directly contributing to the growth of the functionality.
Or, some parts of our system have grown in the wild and now it is time to integrate them into the whole code base, as a gardener has to integrate new plants in the garden or even to engraft a piece of one plant onto another.
Cultivate supports (or plans to support) you to improve the quality of the “soil” of existing code and/or to rearrange parts of your system to foster further growth.
- Optimization of code structure. (Ongoing diploma theses will do a first step in this direction)
- Integration of conceptual integrity. (first steps are made, more ideas to be explored by a diploma thesis)
- Support for interactive extraction of a cohesive set of functionality and introduction of variation points (Prototype as part of a diploma thesis. Not yet integrated.)
- New approach (needing not much additional tooling): Coevolution of conventions, structures, concepts.
- Includes refining as well as relaxing standards.1)