Image by janek030 via Flickr
This post is mostly a notepad for myself for a series of posts I’d like to do over time. I want to take an application – real or hypothetical – and go through the process of building it out, starting with requirements and going through the first release, or at least the first feature.
What follows is a list of the steps I typically follow in an ideal development process:
- Developers meet with users/stakeholders to create list of features, including business reason for each requested feature. Developers relatively size features. Stakeholders prioritize at least the first seven to ten features.
- Features go up on a Kanban-style board in priority order.
- Devs get any necessary details about first feature from stakeholders. Document where helpful.
- Devs break feature into small tasks.
- Devs write acceptance tests in plain English that define when the feature will be done. Use acceptance tests to ask stakeholders if they’ve missed or misunderstood anything. Can be done in conjunction with QA testers if you have them.
- Build UI around making first acceptance test pass. Ask stakeholder to look at UI and confirm you’re on the right track.
- Write unit test(s) around first bit of code to make UI “work” for the first feature. Tests should define what that layer of code needs to do to support feature.
- Write code to make test pass.
- Write unit test around layer of code to make previous layer of code work.
- Write code to make test pass. Repeat this process until all tests pass for your feature.
- Get stakeholder to review what’s been done and suggest changes if necessary.
- Measure time feature spends in each Kanban column. Use this data to project timeline for other features.
- Repeat steps from “get any necessary details” for next prioritized feature.
- Release/deploy as often as you possibly can without being stupid.