We use a transparent project flow which makes the progress visible at each stage. This keeps the process in control but allows to be flexible to requirement changes.
We pay close attention to the design of our projects. We know the benefits of good software design. We make sure to understand the tradeoffs of every design decision we make.
We improve the quality of our codebase by continually refactoring it. We avoid incurring unmanageable amounts of technical debt.
We prefer open source tools that we can inspect, evaluate, and improve. We avoid depending on proprietary tools which we have no control over.
We adhere to strict coding standards to make our code readable and maintainable. We ship our source code as a product, so we make sure it is as well packaged and clean as the app it implements.
We don't waste time on repeatable tasks, everything that can be automated should be automated.
We employ the practices of continuous testing, continuous integration and continuous delivery.
We are proponents of Test-Driven Development. We write unit, integration and end-to-end tests.
Having tests gives us a level of confidence in the correctness of our products. It helps us find bugs at earlier stages of development and simplifies maintenance.
Git is our preferred version control system but we also have experience of working with TFS, SVN and Mercurial.
We choose an appropriate branching model for each new project: our preferred one is Gitflow. We have a shared understanding of a standardised branching and releasing processes.
We write detailed and consistent commit messages. We know why good commit messages matter.
Each project starts with a rapid prototyping phase. We don't waste time and money on unneeded development.
We work on the prototype, continuously getting feedback from our clients and revising the prototype. This helps us to identify the initial requirements.
We know the importance of effective work management. We always apply our best efforts to complete our work.
We are passionate advocates of the Agile Manifesto. We have a transparent and clear development process.
We constantly learn a variety of tools and techniques. We do not let unfamiliarity discourage us from using the best tools available. Our internship program helps us to grow skilled professionals.