What do we mean by Technical Excellence?
“Continuous attention to technical excellence and good design enhances agility.”
The above is the ninth principle of the agile manifesto. And the ultimate goal of technical excellence in a simple form? Less bugs, more reliability, delivered quickly.
“Technical excellence” is one of those vague phrases with numerous interpretations, but in an agile context, it usually refers to removing hindrances. This includes three general dimensions: the processes in play, the individual’s technical skill, and how people interact as a team.
Technical excellence is deeply embedded in seeking opportunities to become more collaborative, iterative, and systematic when making decisions in order to save time and money by determining the right direction more quickly and effectively.
We believe that technical excellence is, primarily, a mind-set that is supported by a constant focus on sustainable code, continuous learning, and teamwork. Facilitating technical excellence necessitates the implementation of design and development practises such as sustained architecting, as well as lifelong learning. In addition, three empowering conditions for technical excellence are identified in a study: leadership support, customer buy-in, and psychological safety. These factors give teams the flexibility they need to pursue technical excellence.
Technical Excellence: Collaborative practices
Most organisations have invested significant time and effort in achieving technical excellence through technical craftsmanship practises and routines in their IT departments. But they have difficulty finding qualified programmers and to form collaborative teams capable of tackling any technical challenge while continually developing their skill sets to remain competitive. However, technical excellence is not only required in the technology department. Collaborative routines add value across an organisation’s entire enterprise.
Coding Standards for Technical Excellence
Technical excellence in coding refers to a set of coding conventions & standards that are shared, discussed, abided by the team.
A scholar by the name of Timperi, discusses in his paper “An Overview of Quality Assurance Practices in Agile Methodologies” that several engineering practices deployed by agile teams are there to assure quality, which can be:
- Inspections of code
- Pair Programming
- Test-driven development
- Coding standards
- Collective code ownership
In another study related to code quality for technical excellence, Dingsøyr et al. have documented a research paper in which they investigated the guidelines, principles and conventions amongst other aspects which determine code quality. They found in the study that code comprehensibility and readability was the most important quality of technical excellence named by software developments in agile. The other two prominent qualities were identified as structured naming of code, and detecting code smells, such as duplication, wrong abstraction, missing tests, noise and cycles).
From these studies and other literature available on the technical excellence of coding standards, here are some guidelines for when crafting code:
- Maintainability – This helps engineers debug, update and extend the existing code
- Readability – This is named as one of the most important code quality factors
- Verification – Code needs to be verified to ensure it is not full of errors or bugs so the best way to do this is through automated testing
- Scalability of the code – You should have processes, documentation and standard operating procedures which allow accelerating scalability of the codebase and the engineering team.
Architecture Standards for Technical Excellence
The well-architected framework for evaluating technical excellence is based on five pillars:
- Operational excellence: run and monitor systems to provide business value while continually improving support processes and procedures
- Security: protect information, systems, and assets while delivering business value through risk assessments and mitigation strategies
- Reliability: ensure systems can recover from infrastructure or service disruptions, dynamically acquire computing resources to meet demand, and mitigate disruptions such as misconﬁgurations or transient network issues
- Performance efficiency: use resources eﬃciently to meet system requirements and to maintain performance as demand changes and technologies evolve
- Cost optimisation: run systems that provide business value at the lowest price point by minimising or avoiding unnecessary costs
Technical Excellence: Focus on building for the future
It is people that create code, not computers.
People create software, which is an important fact. In “Craftsmanship versus engineering: Computer programming—An art or a science?” Pyritz mentions, an excellent architecture, model or process alone cannot produce high-quality code because this task requires highly skilled software engineers who create code with skill and agility.
They say that the craft of software exceeds the technological curve; technologies come in and out of trends, but the skills and wisdom needed from these craftspeople remain to stay valuable. This is why it is vital that senior craftsmen are hired as mentors to pass on their knowledge, understanding, and experience to new talent in order to maintain technical excellence.
Scalable Architecture for Technical Excellence
Scalability is a system’s ability to handle increasing amounts of work by increasing capacity to the system. This indicates, a scalable architecture can handle increased workloads without requiring any major changes.
Scalability is driven by two primary factors. The first is software, followed by design decisions and IT infrastructure. The second factor is team and process scalability. Scalable systems are difficult to construct without experienced engineers tuning both parts of the machine.
Forbes say: “With every software innovation vying to be the ‘next big thing’, the need to keep the door open for expansive upward growth (while still operating successfully at a lower-scale factor) is often the mark of excellence in terms of the underlying architecture upon which any single software platform is designed.”
Deployment Practices of Technical Excellence
If you’re familiar with DevOps, you’ll know that continuous deployment is the most efficient and effective way for software companies to maintain and upgrade their products. You may also be aware that the vast majority of software companies do not engage in legitimate continuous deployment or any other type of continuous integration/continuous delivery (CI/CD).
When enterprises opt for technical excellence in their deployment practices, rather than waiting for a member of the operations team to make a business decision about when to deploy updates and services into existing production, a continuous and periodic deployment system will deploy everything that has successfully passed the development and deployment process.
For technical excellence, you need continuous deployment, which means two things:
- Teams to produce software in short cycles to reliably release software at any time
- Continuous deployment requires continuous delivery with code always being in production
For technical excellence for continuous deployment practice, you must focus on all of these tasks:
- Version Control – Know which version is being deployed and how quickly
- Deploy Pipelines – What is being worked on at the moment
- Good Observability – Overall picture of deployment and when to deploy updates
- Infrastructure as code – Infrastructure management and provisioning via code rather than manual processes
- Frequent small code updates – Short cycles of code to release anytime
- Separate roll-out and activation – Ensure automated testing is in the loop
Digital Dom – Technical Excellence for your Enterprise
Digital Dom will ensure technical excellence throughout your organisation. We help you scale your agile teams, optimise software delivery, and create awesome technology. Digital Dom equips organisations with the tools, processes, and mind set needed to transition to agile working methods while developing complex custom software.
If you’d like to discuss your next project requirement, speak to a dedicated member of our team by filling in the form on our ‘Contact’ page, or email firstname.lastname@example.org.