“ All the best talent and technology and process in the world will fail when the customer isn’t up to scratch” ( Beck and Fowler 2001.)
We believe that the best way to deliver strong software in time is by the collaboration between the customer and the development team. The customer has a critical role in agile development projects.
The customer’s explicit responsibilities are to join our agile coaches in driving the project, defining and planning requirements (i.e. user stories) and moreover to help us to define the right metric to ensure a strong quality control (acceptance testing).
Agile practices rely crucially on a regular interaction between customers and programmers during the development instead of large requirements documents.
In order to build not only the project in the right way, but also the right project for the customer, it is important that the latter takes time to define their needs. Customer and team members need to reach a “mutual agreement” by carefully outlining clear and prioritized requirements in scheduled meetings. For this reason we believe that the only way for developers to understand the customer is to “walk a mile in their shoes”, closing the gap in communication. The usefulness of a team member is determined by how able they are to bridge this gap. Each project we undertake is not regarded as an external job but as an internal one, and this is the reason why we don’t release code that is not functional and clean.
Software development relies on consistent customer feedback within a spiral development cycle during which the project goes through multiple phases of design, development and review. Larger projects will be broken up into multiple versions and releases placed in a project repository accessible to the customer. The customer is regularly updated on the status of the development and at the end of each iteration he is given access to a demo, which he can weight against his requirements. This is done to ensure that all of the customer’s needs are satisfied at the end of the project.
We strongly believe that sustainable software is the key to building successful projects and for this reason we are used to pair programming and periodic code reviews that will ensure a high quality end product.
We ensure that the status of each project is clearly visible through different tools. We are used to putting in place the continuous integration and a quality assurance manager for all enterprise projects.
We provide our customer with a report from our continuous integration server and continuous access to the source code repository from the start of the project. Source code is always delivered because we believe that fear of sharing the code is the first symptom of a poor architecture.