Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In my scenario, we have a team of experienced developers with 3+ years and they are not co-located. We are in a learning phase in terms of the domain and technology. I want some recommendations in regards to what software methodology we should adapt.

I have thought of implementing waterfall, since we have to design upfront and we know all the design issues and technical challenges. Using agile on teams that are not co-located, we aren't sure how to estimate on per week bases when dont have a complete grasp on the technology.

share|improve this question

migrated from Sep 12 '11 at 0:36

This question came from our site for professional and enthusiast programmers.

Just a student. However based on what I have read in Object oriented Analysis and Design course, waterfall and Agile are POOR methodologies to work with if you are unfamiliar with technology. Throwaway Prototyping is considered the best in these cases. – Adnan Bhatti Sep 11 '11 at 2:48
If you know all the technical challenges then you aren't in learning phase. Distributed team, unfamiliar technology, mandated up-front design - this sounds like a recipe for failure to me. Something needs to change. – TrueWill Sep 11 '11 at 3:34
@Adnan: waterfall yes, agile no - agile explicitly allows for 'spike' projects. – Steven A. Lowe Sep 12 '11 at 3:29
up vote 2 down vote accepted

Do a pilot project first. Implement a whole, but small, project as a pilot study. Implementing the pilot system, your team can experience all phases of a project development and learn how to deal with the problems that eventually will arise from the lack of expertise in the used technology. Furthermore, you can use the metrics from this pilot project to have better estimate for your main project planning.

share|improve this answer
Also, focus the pilot on implementing a full vertical slice of functionality, trying to put everything together in the smallest possible project that would exercise all relevant areas. – Mathias Sep 12 '11 at 2:23

In Rapid Development: Taming Wild Software Schedules, Steve McConnell provides a table that compares a number of life cycle methodologies based on several factors and rates them between Poor and Excellent. This chart can be found in Chapter 7, on pages 156-157, if you have a copy of the book.

If your project is characterized by poorly understood requirements and a poorly understood architecture, then the spiral model is favored. However, the spiral model is designed to detect and allow for negation of risks early. This requires training and discipline in tracking progress and the current state of the project so that decisions can be made in a timely manner.

share|improve this answer

Personally I'm a big fan of SCRUM. It allows for constant evaluation especially with new technologies. Every few weeks you'll have a sprint, and it'll allow for reevaluation. I've used this in college development teams, and in real life. It's very effective, and adaptive. Do some research, I think this is your best option.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.