Good software is generally not monolithic, but modular. In our experience, iterative-incremental improvements bring the best results in the long term. To do this, software must be built to be continuously improved.
Code that is to be continuously improved must be secured with automated tests. In addition to the pure implementation of tests, so-called test-driven development focuses on the specific functionality as well as the question of how this can be checked from the very beginning: First the tests are written, and only then is the code that effectively solves a problem developed. The somewhat higher initial effort is justified, because the more complex programming is, or will become in the future, the more important are comprehensive automated tests, which check at the push of a button whether the software does exactly what it is supposed to do.
Important for customers: The way in which programming is carried out has a significant impact on the security, expandability and maintainability of a software solution.
When developing digital applications, a well-rehearsed team equipped with the necessary tools is the foundation for long-term project success. Good work in a team - to which the customer belongs - has many advantages:
- Further development, maintenance and support are well supported and also guaranteed if a programmer should fail
- The four-eyes principle - for example when merging commits - works on the one hand as a control and on the other hand also promotes constructive exchange about code quality.
- Specialized team members, such as front-end or back-end developers, make sensible use of the latest technology in their field
- The involvement of the client in teamwork prevents programming that does not address specific needs
- By involving the client in the development process, tailor-made innovative solutions can be developed
In order to work efficiently and safely in a team, reliable version management is essential. This documents and saves the technical development of a project down to every single code change. If necessary, this can be used to switch to previous system states. Together with an issue tracking system, through which we also record working hours, the greatest possible transparency is created for everyone involved in the project.
Quality and efficiency are additionally supported by a multi-stage publication and deployment process: Before a code change goes live, automated tests are run. There is also a pre-publication on test and staging servers. Changes can be checked both automatically and manually before going live.
Test driven development, automated testing, continuous deployment, delivery & integration are key technical factors for sustainable software quality. If these aspects are neglected, chaos is literally preprogrammed.
With the tools, strategies and processes mentioned, it is important to rely on generally recognized standards in order to remain open to new team members, freelancers and future developments.
We therefore attach great importance to current software standards and develop the corresponding automated processes at the forefront. One example is our development of a deployment tool (builder) for the automation of tests and code releases, which was very well received in the TYPO3 community.
With the Continuous Upgrading offer that we have developed, we go one step further: the deployment processes are set up here so that every code change can be tested against the latest version of the Content Management System or framework used. This strategy enables uninterrupted upgrades at the push of a button.