Dieser Artikel ist auch auf Deutsch verfügbar
This article first appeared in our INNOQ Technology Briefing on the topic of Legacy Modernization.
Developers who have been working on existing systems for a long time often question the purpose and wonder if they are doing something fundamentally wrong. Why can’t they be in a cutting-edge environment as the outside world conveys to them? Especially, employees who have taken on the role of software architect constantly face the tension of “change pressure vs. stability”. How can leaders give their employees more guidance in working on existing systems and thereby create more confidence in the development teams?
My advice: Accept the reality! Almost 80% of software development consists of working on existing systems [1]. This means that only the very fewest software creators lay the first stones of a new software solution. Nevertheless, it feels like over 80% of the content in the professional world is oriented towards new developments. To resolve this apparent contradiction, it is overdue to introduce a new role in the further development of software systems at the architectural level: the evolutionist.
The role of the evolutionist focuses on the further development of existing systems. It has different tasks than the role of “software architect”, with a different skill and mindset, which helps to deal technically and mentally with large and long-lasting software systems.
Typical tasks include:
- Securing knowledge: Post-documenting import-ant system elements and the underlying architectural decisions to maintain the understanding of the existing system and to create understanding of the current situation among all developers.
- Creating transparency: Communicating the current risks and technical debts to align them with the risk appetite set by the business side.
- Fixing root causes: In-depth analysis of systemic problems in the existing software system to solve severe blockers for further development.
- Communicating improvements: Communicating current improvement work to product owners to make even less visible, but valuable, further developments comprehensible.
- Managing innovation: Evaluating new ideas in the context of the existing system for their potentials, to show that certain innovations are noticed, but also to create understanding when a new innovation does not fit the current situation.
An evolutionist is aware of the responsibility for a successful, existing system and aims for unexciting software to ensure continuous further development. They are the sparring partner for apparent contradictions, strong uncertainties, and seemingly unmanageable complexities in a constantly changing environment. In addition to hard skills in technical matters, the role requires a high degree of soft skills such as communication, empathy, persistence, and strategic thinking, to mediate both at the development and management levels.
What can you do to strengthen the role in your organization?
Find existing evolutionists in your teams! Look especially for the seemingly invisible ones. Typical evolutionists often work on indirectly visible improvements to existing, half-baked implementations to maintain the inner quality of a software system. They are the first to structure and document software architectures so that others find it easier to understand the software. They are the people who take care of many small fires simultaneously to keep the software operational. They are the people who also care for other developers in the team and provide encouragement when new challenges arise that seem insurmountable at first glance.
Just as you need software architects in the early phase of long-lived software systems, you need people who are specifically concerned with the further evolution of the system. Therefore, strengthen the role of the evolutionist in your teams and advance to the next stage of software evolution. Ensure better visibility, orientation, and appreciation of their work by equipping your evolutionists with necessary methodological knowledge, value-creating tasks, and clear goals to secure the future success of your software.
-
Capers Jones, The Economics of Software Maintenance in the Twenty First Century, 2006 ↩
Learn more about softwarchitecture. We have a 3-day-training.