Question :  

There are multiple roles of responsibility for software development. Using your own research what roles are responsible for each phase of development in a project

*Note to protect the innocent I have paraphrased the question.   

Response:

Most people when they look to build a software development team will put together the “normal” group. This will generally consist of project owners, a project manager, an architect or technical lead, and a few developers. Reading over a few other posts it looks like some of the more formal development methodologies (like RUP) have been covered. As such, I am going to go a different direction with my post and cover the roles and responsibilities of the new darling of the methodology world; Agile.

The Agile Development methodology several other flavors as well, but, be it Agile, Scrum or XP they all have the same goal. The goal is to simplify development and bring the project owner in early and often! Now I won’t go much more in to those details here but just the loose structure of an Agile team will give you an taste for its less rigid style.

Agile really consist of between three to five roles. Below are five common roles; however there is overlap on some of them because some get rolled up into a single role or shared by multiple team members, in some cases.

  • Customer: These are the project owners (or their duly anointed representative). While I was at SigmaTel we called them clients, others may call them customers or sponsors. In short these are the people who want to what the project will deliver. They will be instrumental in requirement definitions (sometimes called stories), acceptance testing, and prioritization. These members are also tasked with managing the budget and the business case.
  • Developer/Implementer: These are the builders. Developers take a given requirement and turn it into functionality. This can include Architects, technical leads, coders or Database developers, Testers. Even members of the IT Ops team can be an Implementer if they are assisting in the completion of a project requirement. This is probably the most ambigous of all the roles, but that’s because Agile believes in removing titles and barriers inside a development team.
  • Facilitator: The easiest way of thinking of a Facilitator as anyone who is not described above. Project or resource managers are likely candidates for this role
  • Tracker (a type of Facilitator): The tracker manages time. Trackers are responsible for keeping track of deliverables, task completions, time estimates and well everything schedule related.
  • Coach (a type of Facilitator): Finally the coach. A coach is someone that helps the team keep to methodology. Coachs could be developers, customers, trackers, any role. What they are around to do is too help the team stay true to the process. This role is especially important when a team is first implementing Agile and its methodology is new to the team.

As you can see from the above roles Agile development is kind of the antithesis of structured development methodologies like Rational and while it may look “to loose” to work from here, but I’ll make sure to shed more light on it as the class progresses. (and subject matter dictates :-P).

Refrences:
Where Did All the Positions Go?
Agile teams means examining expectations and adapting skill sets
http://www.ddj.com/architect/187203749?pgno=1

Espresso Fueled Agile Development
http://blogs.msdn.com/mpuleio/archive/2006/05/24/606561.aspx

The Roots of Scrum:
How Japanese Manufacturing Changed Global Software Development Practices
http://jeffsutherland.com/scrum/RootsofScrumJAOO28Sep2005.pdf

Extreme Programming : Team-Based Development (Page 59-64)
http://www.oreilly.com/catalog/extprogpg/chapter/ch05.pdf