Development process overview

From Growstuff Wiki
Jump to: navigation, search

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 Discussion forums
  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, ask on any of our Discussion forums
  8. Submit a pull request to the "dev" branch
  9. Your work will be reviewed and should be integrated into the dev branch, then deployed to the staging server


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.


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.


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

See also: Technology stack, Category:Development tools

Personal tools