This page should ultimately end up combined with the one posted by Ariane, but I wanted to toss up what I've been working out on the airplane. We'll go over it today and see what we want to keep / toss.
Project Management - Using Agile
This wiki page requires some background in what Agile development means. For an overview on what Agile is, and some of the important terms, please read:
http://en.wikipedia.org/wiki/Agile_software_development
http://en.wikipedia.org/wiki/Scrum_(development)
While we’re not explicitly proposing any of the models there, what will will be proposing closely follows The Agile Manifesto.
The essential bits of any Agile methodology include:
- Create a process for writing / identifying stories for your project. There are whole books published on writing good user stories (I personally prefer a variation of S.M.A.R.T.), but the basics are:
- Specifc and Simple - Keep stories short and to the point. Clearly define what you’re going to accomplish and make it easy for others to understand.
- Good: “Develop a clickable complete wireframe for the site homepage”
- Bad: “Develop some representation of a visual design that showcases the potential functional components of a site through ocular and somatic user interaction on the primary page of the web application.”
- Measurable - Stories need to have a clear line between “done” and “not done”. It needs to be clear to everyone what success means.
- Attainable - The story needs to have a reasonable chance of being accomplished within the sprint time-frame. Often, if a story feels too big it should be broken into smaller more attainable chunks.
- Relevant - Be sure you ask yourself if the story is important to the project and if it makes sense to work on. It is important that all of the stories support the goals of the outlined project.
- Timely - It's essential that there is a reasonable chance of accomplishing the story within a sprint cycle. This also is where you consider dependencies (including predecessors) of the story to see if it's the right time to be working on it.
-
Review prior sprint and demo functionality (if not already done). Decide what work that wasn’t completed is going to be reevaluated and what is going to move forward into the next sprint.
- Address any standing team issues that need immediate attention - what are blockers to tasks from the prior sprint or blockers to the coming sprint?
- Plan for the user stories you’re going to tackle this sprint (more on this later). Assign story responsibilities to project team members.
- Ensure that each team member buys-in to the sprint plan and feels that they can accomplish their assigned work.
- Provide a chance for the team to feedback into the process and the work being done.
- What was accomplished since the last check-in?
- What is planned to be accomplished before the next check-in?
- Are there any blockers to the work that is being done?
- Are there any meetings or scheduling that needs to be done with other project team members?
- Who checks the work that has been submitted for accuracy and completeness?
- How do we share completed work with each other and the community?
- What indication do we have of something being done?
- How do we mark something as “submitted” rather than “completed”?
Tools we use:
- Calendars - it’s imperative that you have a calendar setup to plan and coordinate your team. Google Calendar is a great option as it provides XML / iCal / RSS publicly so you can make sure that people have multiple ways of accessing it.
- Drupal Issue Queues - While imperfect, this is the single best way to communicate with the public Drupal community around the stories you’re working on and the sprints you’ve planned.
- Drupal Groups
- Drupal Initiatives Group - the place where we can go to collaborate on process, planning, and get help on getting things done.
Proposed Organizational Structure
insert structure here...