Technical Excellence

Evolutionary Systems - Technical Excellence

Technical excellence is about craftsmanship and good development practices.

Competent and capable teams are a central aspect for evolutionary systems. In the decentralized world of incremental innovation good developers need to identify problems, evaluate options, implement and deliver ideas and work with the feedback they get.

Low Rating:

Teams are strongly lead by central ‘master minds’ to drive technical innovation Errors, bugs and failures are common and are often caused by misconceptions or lack of understanding of the technical platform, the core practices or general IT concepts Used technologies, frameworks, development practices and patterns are outdated. It is hard to find new personell, many trivial and redundant tasks are carried out manually There are many system parts that only a single ‘expert’ or ‘specialist’ understands

High Rating:

Teams are truly cross-functional, including development, test, architecture and deployment expertise Developers see themselves as Craftsmen, always searching for ways to improve their skills Technical trends are discussed and evaluated in an ordered fashion. They constantly and selectively influence the product design Automation is a high good and used extensively in all parts of a systems lifecycle

Core Ideas

Keep software craftsmanship values in mind

Another way to create technical excellence is to improve development practices. Again this is important on the individual as well as the team level. Software developers need to learn about development practices like Extreme Programming or Clean Code. They should visit conferences, read books and articles and discuss their development practices within their team and organization. Regular sessions to improve the team’s development practices include tech talks by colleagues, visits of meetups and user groups or Communities of Practice.

Increase cross-functionality and good development practices

Team players should have at least one domain of expertise inside their team. In order to be valuable team members they should also be able to support others with questions and problems outside the expert domains. This increases collaboration inside the team and decreases the risk of missing responsibility and ownership. These so-called T-shaped professionals help create cross-functional teams that are resilient against failure.

Automate everything and choose the right tool for the job

The improvements above are related to individual and team skills. Another very important part of creating and improving technical excellence is to automate as much as possible. A famous saying in the software industry is: “if you are doing it manually for the second time you missed an opportunity for automation.” Automation removes the human risk factor where manual errors can happen. It also pulls knowledge about processes and tools out of developers’ brains into scripts and other parts of automation. Last, but not least automated processes are quicker to execute than manual ones.

Sector Rating Aspects

These are aspects that can be used to assess your performance and maturity in this sector. For a detailed explanation please have a look at our how to page.

Aspect Adoption Lifecycle
Code is written purposefully and sensibly (e.g. Clean Code) Late majority
Build and Deployment is automated Late majority
Teams are cross-functional (T-shaped / Pi-shaped professionals) Late majority
Programming is done by the team (e.g. peer review, pair programming, mob programming) Late majority
Creativity techniques are used for technical decisions (e.g. Disney method, Six Thinking Hats) Late majority
Technical decisions are made by the team, not individuals (e.g. consent based decision making) Early majority
Testing is automated on different levels (unit, integration, load and performance, security) Early majority
Infrastructure is automated (i.e. infrastructure as code) Early adopters
Applications provide deep insights (e.g. monitoring and application telemetry) Early adopters
Polyglot solution design / implementation is used (use the best tool / platform / language / framework, not the best known) Early adopters
Design concepts are developed collaboratively (e.g. Design Thinking) Early adopters
Regular and focused experiments are used for technical evolution beyond the used technologies Innovators