Development process overview

The Growstuff project uses a methodology called Extreme Programming to develop our software. This page is a brief overview of how that works for us.

QUICK GUIDE: how to get involved as a developer

 * 1) Join our Mailing list
 * 2) Optionally, hang out on IRC
 * 3) Find a story you're interested in working on, in Pivotal Tracker
 * 4) Find someone to pair with
 * 5) Fork the Growstuff/growstuff repo
 * 6) Work on your story, making sure to use Extreme Programming practices such as test-driven development (TDD) and Pairing
 * 7) If you need help or feedback or want to discuss your work, post to the mailing list
 * 8) You can also ask the coaches for help at any time
 * 9) Submit a pull request to the "dev" branch
 * 10) Your work will be reviewed and should be integrated into the dev branch, then deployed to the dev server

Iterations
Main article: Iteration

We develop our software on a 2-week cycle called an "iteration". This helps us plan what work we're trying to do when, gives us milestones, and lets us review our work and calculate our velocity on a regular basis.

At the start of each iteration, you'll see emails to the Mailing list kicking off the coding for the cycle, and asking for people who want to volunteer as coders or Customers to step forward.

At the end of the iteration, we send a "pencils down" email, calculate our velocity, and ask people who took part to answer a few questions about how it went, to help us improve our processes for next time.

Stories
Main article: Story

Our work is broken down into "stories", each one describing a desired behaviour from a user perspective. Other projects might refer to these as features or tasks. For us, a "task" is a technical step we take to deliver a story, not the story itself.

Coding practices
We always work in pairs, to help cross-train and to make our software higher quality. We also use test-driven development as a discipline to help us code better and make sure we don't break things. This is a definite help when Refactoring, or improving older code, because the tests can demonstrate that our changes haven't broken functionality.

Most of the time, our pairs of developers work together using voice chat (Skype or similar) and a screen-sharing tool. Sometimes, when they live near each other, they work side by side in front of one computer. For small tasks, asynchronous pairing (communicating via email, documenting the work, reviewing each other's code) may be feasible, though we consider it to be a last resort.

Sustainability
We want our software development process to be sustainable. This means that we don't push people til they burn out. We encourage people to work at a comfortable pace, and to pass on work that's proving to be too difficult, too time-consuming, or too frustrating.

Development tools and infrastructure

 * Github for source control
 * Pivotal Tracker for project planning and tracking our work -- see http://tracker.growstuff.org/
 * Mailing list and IRC for communication amongst developers (and anyone else)

See also: Technology stack, Category:Development tools