With Kunlabora we want to cover the full software development lifecycle. Indeed, development is at the core of our efforts when creating new software solutions. But in order for software development to be successful, we believe we have an important role to play both before development starts and when developed functionality needs to be made available. It is this believe that resulted in our 3-step solution, where Development is preceded by the Service Blueprint step and eventually ends in the Operations step.
In order to make sure we are crafting quality software for the real business challenges our customers are facing, we unlock our toolbox and unravel key information in a very short period of time.
We embark on software projects together with our customer. This primordial condition cultivates mutual, complete, and shared understanding of the functional and technical dimensions of the project.
We start the construction of a software solution with a service blueprint that meets our customers’ needs and safeguards a quick development kickoff. The service blueprint guides development and is iteratively improved throughout the project, making sure there always is an up-to-date blueprint for the iterations yet to come.
Such a service blueprint is also highly valued by our customers, especially because of the high return on investment of this joint exercise. Also, for the Kunlabora team, the service blueprint sets the outlines of the right solution and fosters a higher predictability to success.
When performing a service blueprint we apply some powerful practices that help us get a grasp on the complexity.
Impact map We make impact maps together with our customer to gain a common understanding and make sure we are all aligned on pursuing the real business objectives. This helps us to make the right business decisions and technical choices throughout the project.
Architecture diagrams C4 diagrams are a powerful technique to describe and communicate the software architecture from different perspectives, from a high level context diagram over container and component diagrams to eventually class diagrams.
Story map We create a story map to get a clear overview of functionalities and their priorities. It is our instrument of choice for defining the scope of each major release, and during development it enables us to assess the progress of the project.
As a development team we take responsibility for crafting quality software. Central to achieving this quality is collaboration, both within the team as with our customers. In our view the team is the collective owner of the source code, and team members have to make sure that code quality meets the team standards. This is achieved a.o. by pair programming, code reviews and test driven development.
At Kunlabora we do not limit ourselves to development, but instead take responsibility for the entire value creation process. We focus a lot on understanding the value of the proposed requirements so we can better assist on how those requirements can be technically implemented.
The way we build software is heavily influenced by extreme programming techniques and agile software development principles. We question our way of working all the time, always looking for ways to improve without loosing focus of the business objectives we took commitment on.
Pair programming By having two developers work together, on the same feature and behind a single machine, we increase quality. Each line of code is challenged on the spot, and bugs are caught earlier. By regularly switching pairs we increase the number of developers working on a single feature and improve knowledge sharing.
Iterative development By focusing on sprints of 2 weeks and delivering working software in each sprint we succeed in obtaining fast feedback from our customers, making sure we deliver actual value.
Cross-functional teams We believe in taking commitment and responsibility as a team. The only way to make this work is by creating cross-functional teams, which include our customers. In fact this is the logical consequence of the value we attribute to collaboration. The Service Blueprint is the start of an intensive collaboration with our customers, which we continue during the development track. Fast feedback from our customers helps us to build the right solution. Working in a cross-functional team guarantees all dimensions have been taken into account.
Automated code quality checks We strive to deliver understandable, maintainable code. By automating code quality checks and iteratively refactoring the code base, we succeed in improving the quality of our source code over time.
Operations at Kunlabora is not about throwing software over the wall when all development is done. Instead we strive towards integrating operations into the development lifecycle starting with the first sprint. To achieve this we set up a continuous integration and continuous deployment pipeline to push each software change through a number of stages until it is ready for deployment in production. Code passes through this pipeline numerous times a day, making sure that deploying software into production is a non-event and can be done without breaking a sweat.
Actually, we do not really talk about operations but rather about DevOps. A key message with Kunlabora is collaboration, and that message is definitely applicable in this context: development and operations need to be closely integrated with each other for a software product to be truly successful. And successful means being able to respond rapidly to changing needs, to be able to minimize the time needed to get an idea into production as an actual feature of the system.
Automation is key when striving for such a level of quality and agility. Ideally, running the deployment pipeline requires zero to no manual steps from developers or operations. Each step, from executing tests up to provisioning hardware and deploying new releases is completely automated by the pipeline. Manual testing steps can be built into the pipeline so that all the necessary quality gates are in place to promote releases up to production without a hassle.