Coding
In the implementation phases of a project, we translate your requirements, the UI/UX and the system design into executable code. Thanks to the training and experience of our staff, we can cover a wide range of programming languages, environments, frameworks and technologies. In addition, we are always ready to familiarise ourselves with new topics. Staying on the ball is part of our daily business, even if we don’t use every new framework or technology for productive applications. We can use Java, C/C++, Objective-C, Swift and .NET/C#, on Windows, Linux, macOS, iOS or Android, for the web, as an app, on the server or as a client application, store data in Oracle, MySQL, HANA, or in files, native or dockerised.
Infrastructure
We rely on processes and tools to simultaneously work with a team of several people on the code base that covers the set goals for the next upcoming release. In accordance with the chosen process model, we update and evaluate the breakdown of the features to be implemented into technical tasks according to the projects progress stage. We work with Git as a robust source code management system and a GitFlow process slightly adapted to our philosophy.
Code quality
In addition to the technical correctness of the source code, its structural and syntactic quality is particularly important to us – because it has a decisive influence on the ability to react to changes of all kinds. For quality assurance, we rely on a combination of both automated and manual checks. An automatic code analysis via SonarQube indicates the violation of syntactic rules or statically identifiable errors. Moreover, each feature branch must undergo a manual peer code review, supported by GitLab, before it is merged with the code base. Here the reviewer primarily pays attention to readability but also to compliance with other conventions that cannot be checked automatically. Our Continuous Integration/Continuous Delivery infrastructure based on GitLab/Docker/Rancher provides for rapid feedback of compilability of the results of the syntax analysis, in the background and fully automatically, as well as the results of automatic professional unit and integration tests. It allows us to quickly generate release candidates, finalise testing and deliver them to our customers. We constantly maintain this process through professional and technical improvements, for example, by automating the creation of accompanying documents such as release notes.
Regardless of whether you entrust us with a specific implementation task for your own project, depending on the requirements and project stage, or whether you entrust us with a full system development – we ensure that the generated software not only meets your external requirements, but also that its inner workings are a thing of beauty. We will be happy to work on the basis of your technical specifications or work with you to identify the technology stack best suited to your situation.