☁️ Cloud-native and distributed for the win.
Cloud-native refers to set of tools and practices which enable quick scale, reduction of dependencies and ability to rapidly deploy new versions of the software. If you want to build a scalable product, then cloud-native technologies are the way to go.
While cloud-native technologies such as Docker, Kubernetes and the overall micro-services architecture with components such as message queues are usually considered to be complicated, our teams are adept at them after having developed with these tool-chains for several customers.
The result of using cloud-native technologies is that you launch a product which you don’t have to refactor when you start to scale. These technologies can be deployed on any public cloud and hence there is no vendor lock-in.
🧭 Code standardization = quality.
Code quality is a big factor in a project’s success, time-to-market, and product longevity. Poor code may help you achieve some short term goals, but it cannot help you scale. Code which is not standardised is hard to maintain, results in more bugs, and increases the compute spend. Good code can make or break your product.
Each of our engineering competency areas has well defined conventions and standards when it comes to writing code. Our objective is to make sure that the code written by one developer is identical to the one written by another.
We employ an effective definition of done during our delivery process which includes a step where code contributed by a developer is reviewed by a more senior developer. Usually this is done by the tech lead who is the most senior developer on any product.
♾️ DevOps practices
Your product is as good as the people who work on it and the processes they adopt. Modern platforms require swift changes and continuous flow of updates without breaking things. DevOps refers to a set of practices for continuous integration and testing of new code.
All of our projects make extensive use of Git for source control, continuous integration servers for running various tests on the code, and releasing once the changes have met all the criteria (definition of done). Every new change is staged in a preview environment before it makes it way to the more critical environments. Our environments are managed with infrastructure-as-code tools and monitoring and alerting are configured as a standard.
Combining the DevOps practices with our balanced agile process and cloud-native technologies, we have a well oiled machine which continues to produce high quality code at a swift pace.
❤️ We love Open Source
Open source software has a major contribution in bringing the digital revolution in past few decades. Not only are open source software free, but the good projects have large communities around them, which means they get regular updates.
It is almost impossible to build a modern product without using open source components in it. We take this a little further and make sure that we use open source components wherever an option is available. This approach minimises vendor lock-in and opens up possibilities for future expansion without having to refactor the code base.
Open source does come with its challenges especially in security, and therefore we use vulnerability scanning as a standard at different levels of the infrastructure.
💸 Integrated growth stack
Modern products are data driven and decisions around building new features, running marketing campaigns, and providing support to your customers are all made with the help of data. Measuring growth metrics are vital to know how your customers are using your product and where you can make improvements to enhance financial performance.
Since we utilise cloud-native architectures and build our backends to be event driven, we also stream these events to customer data platforms, analytics and marketing automation tools so that this data can be used by your sales, success and marketing teams.
By having a well designed and integrated growth stack from the very beginning, your product will be ready for scale from day one.