I often get asked about how we use our own tools for software development here at Atlassian. Since it is fast becoming the norm to work as a distributed team at Atlassian, I thought I’d take a moment to share some of our experiences in working more efficiently across time zones and geographies. I’m highlighting FishEye and Crucible as we’ve spawned a new team in Gdansk over a year ago, so it’s a good example of a distributed effort. 1. Release planning Planning begins when the Product Manager (PM) creates an overview page for the next release. The PM consults with the team at least once per quarter in a separate ‘Roadmap Meeting’ to ensure buy-in, to communicate any strategic shifts, and mainly to hear from the development team on what they believe are the top priorities. We then create ‘stories’ that richly describe what, why, and how the feature is actually used by customers. The PM uses Confluence to manage all input centrally regardless of where the team member sits. A vote on the release candidates ensures the key stakeholders have a voice into the planning process and the overview page that’s been vetted. Here’s what a spec summary looks like: 2. Spiking and speccing The completed overview page kicks off the 2-week sprint which we call ‘Spiking and Speccing.’ This step is about defining how the feature will function, how it will be implemented, how it will be tested, how much time it will take, and it will close with a recommendation for continuing with the feature or not. The output is a fleshed out spec for each feature which has: Been peer reviewed A task list breakdown Rough estimates for each task A QA and test plan A list of risks and mitigation for each Often changed quite a bit from the original idea or plan Been vetted by the PM, Development Manager and key stakeholders 3. Feature buddies A feature buddy is your feature champion. They are your second pair of eyes, ears, and hands that help ensure the feature you’re leading is on time and of high quality. And if you pair up leads and buddies in different geographies, you also encourage cross-pollination of ideas across time zones and even cultures. Collaboration tools play a big role here. Confluence is used for initial feature spec review, discussion, and clarification. It’s also used to articulate larger problems, and RFC from teams. JIRA is used for sprint planning, status reporting, and customer support. Crucible is used for code reviews. This has been very important for knowledge sharing about the code. HipChat is used for daily stand-ups. 4. Project plan Once all the specs have been reviewed and finalized, we create a project plan that lays out who is doing what and when. It helps us visualize what the release will involve. By posting on our intranet (we use Confluence) we also get quite a bit of discussion on scope, timing, and risks of the feature development. We […]