Show all posts
6 years ago

Our Development Process

Inspired by Kanban at Lonely Planet. I think it is a good idea to share software development processes from different companies. Maybe even it would be great to create a repository of the processes somewhere on a popular agile web site/blog.

Context

  • Product development (quite large web application)
  • Two development teams: Core (5 developers, 1 scrum master, 3 testers) and Integration (3 developers – one of them plays scrum master role, 1 tester)
  • Quite mature product: 4 years
  • Technology: C#, ASP.NET, ExtJS, NHibernate

Process

  • Development team has all the power to try new practices, keep working practices and remove bad practices. There’s a little push from scrum master side.
  • We do not use iterations.
  • We do use releases, but often it is just a set of all the features implemented last month.
  • We do not have iteration planning meeting, but discuss every user story JIT before implementation on a meeting with PO + Testers + Developers.
  • We do not estimate stories and bugs, just a very brief estimate like (“oh, this will be a large story, let’s split it”).
  • We split stories, but sometimes not as aggressively as required.
  • We release new builds every week (sometimes 2 builds per week). The goal is to release every day, but we do not have a good automated functional tests coverage so far.
  • Smoke testing of the build takes 3 hours (3 testers).
  • We have a limit of 3 user stories or bugs in progress.
  • We have retrospective meetings every 2 weeks.
  • We sometimes have technical user stories (for example, remove jQuery from application), but that is rare.
  • We use Kanban Board in TargetProcess heavily and have a large screen in development room.
  • We have a flat hierarchy in the company. There are only two layers and no boundaries between the layers. No formalism at all. Also we do not have positions like Senior Developers, Junior Developers, etc. All people are equal (however, there are informal leaders).
  • Average Cycle time for user story is 13 days and 5 days for bug.
  • We track spent/remaining time on tasks and stories.

Development practices

  • We develop each user story or bug in a separate branch. Master is always ready for release (after smoke testing). We use Git (switched from Subversion).
  • Pair programming on all user stories and complex bug fixes. Sometimes people work alone on smaller/simpler problems.
  • Developers switch pairs every day, even if user story is not completed yet. The goal is to a have fresh look, knowledge spreading and real collective code ownership.
  • Before story implementation, pairs discuss possible solutions. It is quite formal.
  • TDD. All the new code is covered by unit tests. Situation is worse on JavaScript side, we just started TDD adoption for UI.
  • We use Cruise Control and have quite many different setups. Smoke builds, release builds, etc. Functional tests run in parallel and it takes 1 hour to run them all.
  • Selenium. Automated functional tests are based on Selenium. We’ve created a framework in C# especially for our application to simplify tests creation. Tests coverage is not good so far, but we are working on it (there are 2 automation testers in our team).

ToDo

  • We want to add performance tests into automated builds.
  • We want to have 80% functional tests coverage to be able to release new builds every day
  • We are incorporating User Experience into development process. This is our main goal for the next year. It includes Customers UX Community creation, interactive prototypes for all user stories, usability testing.

See what changed 1.5 years later.

  • http://kswenson.wordpress.com/ KSwenson

    Interesting how everyone gets a slightly different take at how to construct their agile process. Here is a collection of Agile “hints” that I put together for comparison:

    http://kswenson.wordpress.com/2009/10/01/26-hints-for-agile-software-development/

  • DVins

    I noticed you switched to Git from Subversion, does this mean Git integration is coming soon to TargetProcess? Did you consider Mercurial (hg) or Bazaar (bzr) before settling on Git?

  • https://www.targetprocess.com Michael Dubakov

    @DVins We’ve wanted to implement Git integration, but it appeared more complex than expected. GitSharp just released and it needs full repository copy to work with revisions. Other SC providers are not considered so far.

  • DVins

    Hopefully GitSharp will make things easier. I’ve been looking at all three and have been woefully disappointed in the kludge that Git is on Windows. I find Mercurial (hg) much better, but Bazaar (bzr) even better than that, especially on Windows. However, bzr’s branching model can be quite confusing at first.

  • http://tdoks.blogspot.com/ Lyndsay

    Thanks for sharing this – it makes a very interesting read. I'd like to hear more about how your pairing works – you mentioned that developers switch pairs every day. Does that mean each story/bug has a primary developer who sticks with it until its done, or do both parts of the pair move onto something different every day?

    Also you mentioned two layers (sounds good) – do you have one or more development managers and if so, which layer do they fit in?

  • http://www.bdarfler.com bdarfler

    I'm dying to know what kinda of performance tests you plan on adding to automated builds. I have been pondering this a while but I'm not sure how to go about this or what should be monitored. Our build machine is a bit slow and so tests that run on a dev laptop sometimes fail (time out) on our build machine. I have yet to find a good blog post or other information on best practices with performance tests, just that they should be done.

  • methodworx

    You keep your stories in seperate branches, how does that work with continuous integration?

    Do you have environments that each story is deployed to during testing?

  • http://twitter.com/mdubakov Michael Dubakov

    Yes, we do have separate test deployment for each user story. It looks like http://f23622_us26761.srv5.office.targetprocess

  • Dan

    I’m also interested in how you manage to use Git, but also “use Kanban Board in TargetProcess heavily” – or do you just not have any Git/TP integration, and just interact with TP through the web gui yourselves?

  • http://www.dynamicinfoline.com web design bangalore

    Its a nice process, i really love the way u work and deliver the projects .
    motion graphics designer

Request a demo
Our product specialists will show you the beauty and power of Targetprocess 3 and help you to customize it for your process and business requirements
Request a demo