views:

282

answers:

2

The project is poorly defined: we are to write educational software for CS 111 Computer Programming I students focusing on functions. We have 6 student developers with various backgrounds working in Flex. The project has a duration of about 7 weeks. We have very limited face time (30 min per week) and very limited work time (<8 hours per developer per week). We have limited access to the customers (professor of our course, professor of CS 111, students in CS 111).

Our toolset includes Flex Builder, Subversion, and TRAC.

What methodology is best for this project and why? Alternately, what features should be gathered from various methodologies to better suit this situation?

+6  A: 

What makes you think any methodology would be successful under these circumstances -- little communication, more requirements than time, and lack of access to customers?

That being said, I would focus on incremental delivery (each iteration should have some few working features), unit testing (all tests pass before check in), tagging of incremental releases (the ability to go back to a working release), and pairing of strong team members with weaker team members to boost the overall productivity of the team. Consider devoting one strong member of the team to integration testing.

Incremental delivery is most important. Showing a working demo of less than what was asked for is always better than showing a non-working prototype.

tvanfosson
+1  A: 

You could use Agile methodology here but obviously you'll have to adopt it to suit your needs.

For example if you don't have enough access to the real customers that someone with the best understanding of your goals will have to act as a customer proxy. I would also suggest trying to get more access to the customers - almost everyone try to appear more busy then they are and there is usually a way to resolve that obstacle.

Make sure that the limited work time your team have they have at the same time. There could be no Agile approach when you could not work together.

You could definitely use story-based estimations, iterative development process etc.

What is really important is too give every team member a clear and unambiguous understanding of how the Agile process works and what is each person's role in the project. It's very easy to say that you will use SCRUM but unfortunately without real understanding and experience that will not really mean much.

Some advice:

  1. Educate your team members
  2. Get a list of what you would like to deliver if you would not be limited by the time/resources.
  3. Find out what is realistic to deliver given your constraints. That will probably be not much. Don't try to be overly optimistic. Focus on what you could really achieve.
  4. Make sure that your real customers are on board for that.
  5. Use short iterations (1 week or less). Make sure you could deliver fully tested product by the end of each iteration.
  6. Show your work early.
Ilya Kochetov