Joel Spolsky proposed a simple test of a software development team's ability to produce modern working software in the form of the twelve simple questions of
The Joel Test
Do you use source control?
All development source code is stored in a GIT repositories. GIT is a freely available, open source, peer to peer version management system used widely in open source and commercial contexts. The repositories are synchronised between various development hardware and our office servers, additionally a private off-site repository is kept in the cloud and backed up to amazon EC storage.
Can you make a build in one step?
Projects can always be built in a single step, for extremely agile projects this process can also include automatic deployment.
Do you make daily builds?
All code is built daily if any new source has been checked-into the repository on a main development branch of the build. Code is checked into the repository at least daily, any breaking or experimental code is branched to ensure no incomplete code enters this build.
Do you have a bug database?
Elemental systems uses an on-line bug ticketing and development utility called Unfuddle. Clients and the development team have direct real-time access to all outstanding bugs and issues. This allows clients to see the status of all reported bugs at any time and to report new issues.
Do you fix bugs before writing new code?
All outstanding bug tickets are always closed before accepting new work on any development.
Do you have an up-to-date schedule?
No technical work is completed without a complete signed off technical proposal; this proposal must include a specific calendar schedule with specific deliverable milestones. Milestones, the associated work and the total schedule for the proposal are captured into unfuddle; in the rare case of these timelines being changed or reprioritised the unfuddle version is modified so that all involved have access to an up to date schedule at all times.
Do you have a specification?
All technical work has an associated proposal, the proposal includes at least a clear functional description of what the software must do. Typically visual design, data relationships and some use-cases are included with this document.
During the development process further detailed specifications and documentation are created and used internally by the development team - these are available on unfuddle for general reference.Do programmers have quiet working conditions?
Development staff work from their own locations and as susch choose all aspects of the conditions of their working environments. We also respect 'no contact' times every day to allow for uninterrupted productivity.
Do you use the best tools money can buy?
Yes, by policy we use only open-source, industry standard development tools.
Do you have testers?
All code is tested internally against the functional requirement in the proposal. For many projects a formal testing or certification process is executed by the customer before any code is released.
Do new candidates write code during their interview?
The nature of our organisation ensures that we employ no one with whom we do not have a lengthy technical relationship - all developers have a portfolio of projects in which they have played lead designer roles.
Do you do hallway usability testing?
Usability is a core development principle in our design. All user oriented designs are tested informally in the digital hallways and more rigously by observing actual user behaviour and conducting user interviews.