These are the overarching principles that guide the actual details of the process:
- Quality is the most important thing. Above all else. This means taking time to do things correctly, and prioritizing bugs and errors above all else.
- Maximizing frequent output is more important than individual efficiency. Help others, and ask for help for yourself.
- Work in progress should be minimized. Anything started but not 100% delivered is a scheduling risk (it's hard to know really how close to done it is), and "waste" (in the Lean sense). “100% delivered” means the client has reviewed and accepted it, it's deployed to production, and there are no small things left for later unless they’re defined as a separate card.
- We make short-term commitments to ourselves and our clients, as a team, not as individuals.
- We peer-review everything.
- Items with deadlines are given the same priority as bugs and errors, and are to be completed before any other tasks
- Provide good test coverage. The value it brings is tremendous
- Don't live with pain (duplicated code, glue code, yak-shaving). Take the time to solve the pain.
- Automate where possible. Make builds, deployments, and common tasks as painless as possible. By automating, you save time for everyone.
Browse the pages here to see our various development processes documented.