Process
Our rock-solid solutions are based on two long-standing pillars: our technological know-how, with teams that excel at their craft, and a deep methodological expertise.
We are innovation enthusiasts and we combine this passion with a solid and pragmatic approach. And still, we never put innovation before quality, but blend into a proven technological and methodological basis the most promising innovations.
Agile or Sequential. It’s your call.
We’ve always had a preference for agile methods and are convinced of their benefits but the approach we choose always depends on the context and complexity of the project and client objectives.
Scrum
A widely adopted agile method where the project progresses via iterations called sprints. Scrum allows the client to have fine-grained visibility on the progress of the project, as well as latitudes to adapt where the project is going mid-course. It’s best suited for new products or services projects:
- Functional scope still to be defined
- Goals centered on user value and driven by customer management team
- Client involved frequently and regularly during the project
Lean
A tactical approach more than a methodology per-se. Lean is an adaptation of agile methods founded on principles of delivering value fast and improving constantly. It reduces the feedback loop to days instead of weeks, with emphasis on quick returns rather than a defined standard of quality. A lean project has no minimal time span (it can be 3 hours) or team size. This method is best suited for prototypes projects or continuous deployment of industrial solutions:
- Very fast time to market and quick return on investment are required
- Objectives and means to be defined, demanding for a very skilled and experienced team
- Client involved daily in the project
7@af83
A classic sequential methodology related to V cycles or the waterfall model. This af83-designed method is best suited for technical or industrial-size projects:
- Functional scope of the project formalized with a strong level of details
- Standard and mastered bbjectives and means
- Client involved during specific phases of the project
Test-Driven Development
We set in place from day 1 automatic tests to cover 100% of every aspect of the system: from unit tests (how each method works) to behavior and integration tests (how the system works as a whole).
We do TDD to ensure that a specific piece of the software runs correctly compared to the defined specifications, independently of the rest of the project. In a continuous integration approach, it also allows us to make sure there’s no regression in the quality of the newly produced code.
Continuous Integration
To ensure the best code quality possible at each step of a project, we continuously run our tests on our automated integration systems. Every time a developer pushes code, it gets automatically tested. And everything must stay green, all the time.
We measure and analyze the performance of our systems, with precise business and technical metrics thanks to Logstash and Kibana. This allows us to accelerate application deployment while reducing costs.
Cloud and Deployment
We build applications that can run on a dedicated infrastructure or a public cloud. Or even mix elements from both, if need be. In both cases, our architectures rely on the same principle: they have to scale horizontally.
We don’t like to create a strong dependency on a specific cloud provider. Our clients must be able to migrate from one to the other. For this, it’s important to implement automated deployment and setup management tools. Our favorites are Capistrano, for simple infrastructures, and Chef or Puppet, for complex deployments.
Quality
We place great importance in the quality of our code, especially when it has to run in the long term : we test and do regular code reviews on all our projects, and are always looking for ways to improve ourselves.