You can buy a replica Ferrari that looks exactly like a Ferrari. The color, the body shape, the interior, it all looks the same. So much so, if you walked past it parked on the side of the road, you wouldn’t know the difference. Until someone turns it on.
It wouldn’t have that Ferrari sound, it wouldn’t be as fast, it wouldn’t have the control, the reliability, the acceleration.. the list goes on.
The same can be said for websites and apps. They may look great but once you try and interact with it, you can tell pretty quickly if it’s just all surface with no quality code behind it, or if it’s technically proficient.
Technical excellence is vital in web development. It ensures that the final product is well tested, documented, future-proof, and easy to maintain and extend. This is achieved by employing best-in-class development methodologies and tools crafted and honed over a variety of projects.
Technical Excellence is achieved through six key areas:
- Automated testing and continuous integration
Automated testing underpins a development company’s ability to be agile and to develop reliable code rapidly. Automated tests should be written at a number of levels throughout the application which effectively locks business critical parts, preventing them from being inadvertently broken by new code.
Every time a developer commits code, the suite of tests are automatically run across the whole application on a build server. If anything breaks with the last code commit, the developer is notified and will be able to quickly fix the bug before it is introduced to the live site. This continuous integration workflow creates a very robust software product and maintains a high velocity of productivity with a small number of developers, even as the code size increases.
- Service Orientated Architecture
Service orientated architecture makes change easier for a development company. It does this by building digital products with easy to assemble, easy to configure components or blocks. Each component can be thought of as a service that a business performs e.g. booking, ticketing, inventory tracking. These services can be flexibly assembled any way that the client wants and that is also best suited for the business.
When change is needed, a developer can easily take apart the components and put them back together - saving time and money compared to writing the whole code again from scratch.
- Automated test-coverage reports
Test coverage reports provide insight into the quality and effectiveness of an automated test suite. They include both quantitative measures of code coverage and detailed code reports, showing the parts of a code base that have been covered by tests, and those that have not.
For a product owner, project manager, or technical manager, the quantitative measures are an indicator of the comprehensiveness and effectiveness of an automated test suite. This information can be used to inform strategic, process and investment decisions around application testing.
For developers, detailed code reports allow them to identify parts of the application that have insufficient test coverage based on the testing requirements of the project. This allows them to make conscious and measured decisions around where to invest effort in testing. On projects that have strict testing requirements, these reports are essential to effective code review and auditing.
- Git-flow code management workflow
GitFlow makes parallel development very easy by isolating new development from finished work. New development is done in separate code branches, and is only merged back into main body of code when the developer is happy that the code is ready for release.
Git-flow makes it easier for two or more developers to collaborate on the same feature, as it makes it very easy to see and follow what each collaborator is doing.
With pair programming, two developers work on the same machine, so are fully aware of the code, how it works, and why it was done that way. This means the code is generally better than just one developer working alone, as there was somebody watching. It's less likely to contain bugs and hacks and things that cause maintenance problems later.
Developers also get to share their solutions or discover solutions to the problems presented together. This increases the knowledge of the whole team and helps people work towards more common and maintainable solutions.
- Code review
Here are some stats regarding code reviews:
"Before code reviews were introduced in software organisations, 55 percent of maintenance changes were in error. After reviews were introduced, only 2 percent of the changes were in error. When all changes were considered, 95 percent were correct the first time after reviews were introduced. Before reviews were introduced, under 20 percent were correct the first time."
"In a group of 11 programs developed by the same group of people, the first 5 were developed without reviews. The remaining 6 were developed with reviews. After all the programs were released to production, the first 5 had an average of 4.5 errors per 100 lines of code. The 6 that had been inspected had an average of only 0.82 errors per 100. Reviews cut the errors by over 80 percent."
Technical excellence is the foundation all development companies must have when building digital products for their clients. It keeps costs and delays down as well as providing a solid digital platform that successfully drives a company upwards while outpacing their competition.