As your technical partner our role doesn't just begin and end with the code or setup. We consider:
- Feasibility. Is what you're trying to achieve practical given the budget?
- Suitability. Are we the best people for the job? For instance we have no experience working with genome sequencing!
- Analysis and Specification. We analyze your requirements and create or check your specification with you. This may involve several iterations of brainstorming, sketches, flowcharts, and so on.
- Time Plan and Risks. Together we formulate a realistic time plan (and then double it!). We consider the possible risks in the project. What are the unusual cases? What if..?
- Toolset. We hear it is true. There are many ways to skin a cat! You may have a preference for which tools / languages we should use, in any case we would discuss the options and advantages of each.
- Design and Code. Through our attention to peer review, pair programming, best practices, and rapid cycles of design, production, evaluation, and correction we produce clean, elegant, secure, and maintainable systems.
- Progress Evaluation. Providing early prototypes and / or access to our project wiki allows you to monitor progress and rest assured that the project is going in the right direction.
- Source Code Control. We need to be able to track code changes and it needs to be secure. Our source code control server is separate from our main web and database servers and is itself backed up nightly.
- Bug Tracking. All software has bugs and ours is no exception! We use email driven bug tracking software so that you or your clients can email us regarding any "undocumented features" or indeed wishes.
- Documentation. We believe that the best place for technical documentation is in the code and the best place for user documentation is in a project wiki where users can comment etc. This way the documentation is a growing resource rather than a dusty book!
- Usability Testing. This doesn't have to be very expensive and can reap huge rewards. Simply put, we place some (unsuspecting) users (or members of the public) in front of your system and watch how they "get it". The process can be very revealing.
- Maintenance. Every project needs to be updated sometime and its notoriously harder to read (someone else's) code than write it. Our attention to self describing code and documentation mitigates that risk.