Our development processes emphasize simplicity and user interaction : we do our best to keep the software we write lean and clean, so that it can be easily understood, easily documented, tested, and extended. We design our components to do one thing, and do it well, in accordance with the Unix Philosophy.
The functionality of a piece of software is meant to be part of a usage workflow, which is carefully designed with the users in the beginning of a project. If applicable, we try to continuously validate this usage workflow by practicing short release cycles – thus encouraging user tests. By doing so, we are able to anticipate the modification of the initial needs (or the emergence of new needs), which we know by experience to happen more than often in the lifetime of a software development project. Whatever the chosen methodology for a project is, we try to keep a flexible approach to project management.
Technology is never an issue by itself: we know mainstream operating systems and technologies (see references) – and we keep an eye on emerging ones. One of the top requirements for our developers is to continuously be able to learn new patterns, new languages, new frameworks – who know what mainstream technologies will be in a few years’ time? We provide state-of-the-art project management tools (source code management and bug tracking), but we can use just about any tool for a given project if required.
Rather than a one-time collaboration, we expect to build long-term relationships with our customers, based on confidence, reactivity and excellence to handle your evolving needs. However, we are permanently making sure that the software we develop is indeed your software, coming along with source code and documentation that ensure its long-term maintainability.