How we work
Planning & Project Management
We use industry standard tools and methods to plan and monitor projects effectively. Progress is monitored by regular internal reviews, with each task in the plan being updated on a weekly basis.
We recommend that all our clients acquire MS Project so that progress can be conveyed using our standard management tools and viewed using the Tracking Gantt Report.
Key milestones, client reviews & deliverables, with agreed acceptance criteria also form the basis of our project management controls at appropriate points in the project.
Software Development Methodologies
We employ the latest development methods and best practices to create robust, efficient and scalable systems. We have used the best elements from MSF, Extreme Programming and Feature Driven Development to best effect in existing live projects.
Our process is flexible and customer friendly, if you want us to keep to particular known methodology, and documentation guidelines we can follow it.
We can and have assisted in �concept to development� engagements where the development scope is not fixed and have a proven track record of working successfully to demanding deadlines where required. E.g. exhibitions, campaigns, scheduled media promotions etc.
Key Practices
- Extensive use of interface prototyping, wire frames, functional prototypes, proof of concepts etc.
- The software is delivered in small units of functionality that make good business sense enabling the feedback to have an impact on the remaining system development.
- Moving people around the code base. Instead of one person who knows everything about a given section of code, everyone on the team knows much of the code in each section.
- Adopting the same design patterns and coding standards in every project independent of the platform or programming language used. This reduces the overhead when adding another developer to a team e.g. if quick release of new functionality is required because of pressure from a competitor.
- Refactoring throughout the entire project life cycle. Refactoring keeps the design simple and avoids needless clutter and complexity. Code becomes easier to understand, modify, and extend.
How we achieve productivity
- Resource flexibility: we maintain our utilisation at around 60-70%, meaning that we always have resources available to meet the deadline.
- Sticking to the same design patterns and coding standards assures very low overheads when adding extra developers to a project.
- We only have top class developers. All of them have academic backgrounds and are not only skilled programmers but also understand software design principles, project management and communications issues. New employees work only on internal projects for the first year, learning our approach and development methodologies.
- When recruiting new talent we concentrate on personal qualities as well as technical skills. Loyalty, motivation, desire to work in a team are all key competencies for us.
- We have very low staff turnover due to relaxed working environments and higher than market rates of pay.
- Although we charge higher rates than some of our competitors, our clients benefit in terms of productivity, timeliness, experience, knowledge and attitude.
Quality Assurance
As part of our drive for excellence, we require all code to pass each unit test before releasing it to the next development phase. This ensures that previously developed functionality continues to work through each part of the development cycle. We use CsUnit � http://www.csunit.org/index.php
It is our practice to develop acceptance tests based upon each users end requirements. The user requirements identified during the iteration planning meeting are translated into acceptance tests. A single development may have one or many acceptance tests to ensure the functionality works.
We employ WebInject (http://www.webinject.org/) for acceptance testing.
User testing is based around each described use case. We are happy to facilitate any third party user testing or security audits.
All changes are agreed in writing with the client, prior to implementation.
