Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This is an Agile development project and I do not have the ability to change that.

The design that will be the fastest and most obvious for the first phase of our project will not be compatible with the needs of our second phase. The change would not be difficult to implement now but it would take a little more time to implement.

Our PM is pushing for the quick phase 1 approach saying we will deal with the problem in phase 3 when we get there. Making the change at phase 3 will require refactoring and data transformation will be very intensive. Is there anything I can or should do now that fits in the agile methodology?

share|improve this question
2  
This is an Agile development project and I do not have the ability to change that. Your attitude about Agile speaks worlds about how it is currently being practiced in your organization. –  maple_shaft Nov 10 '11 at 15:53
    
@maple_shaft - I simply want to avoid the agile haters with the answers of don't do agile. I generally like it. I love that it keeps me busy. So instead i invoke the wrath of the agile zealots... –  Chad Nov 10 '11 at 16:47
1  
Does the "first phase" have value it's self, e.g. will it get used by anyone? –  Ian Nov 10 '11 at 17:00
    
@Chad Do you encounter a lot of Agile haters professionally? I can't think of one that regularly contributes here. –  maple_shaft Nov 10 '11 at 17:30
    
yes each of them should be about 2 sprints long and all 3 have value. –  Chad Nov 10 '11 at 17:32
show 1 more comment

3 Answers

up vote 6 down vote accepted

If you are truly doing agile, then your team should be fully empowered as to the implementation details and your PM shouldn't have a say in it.

On one hand, agile is all about delivering some value quickly, rather than waiting until every wanted feature is perfectly in place. This occasionally means reducing short term effort at the expense of additional long term work. That is one of the hardest habits to break. I know it has been for our team.

On the other hand, it is a myth that being agile requires foregoing all long term planning. It's perfectly fine, even encouraged, to think about "phase 3," as long as you recognize that business priorities may change to never implement it. That means if two weeks of extra work now could prevent two weeks of extra work in phase 3, no question you do it in phase 3. If one week of extra work now prevents two months of work in phase 3, there's little question about doing it now.

Between those extremes, your team must use their best judgement, but I would lean toward postponing the work when you could go either way. The reason is that by the time you get to phase 3, you will know a lot more about what you need. Perhaps you will need a large refactor anyway to incorporate some feature you haven't even thought about today, and all your work now is essentially wasted.

share|improve this answer
add comment

You're practicing Scrumerfall. The reference to phases, PM's, etc... leads me to believe that the team has embraced Agile where it feels like it fits, versus changing previous notions and conceptions on how the process works.

In either case, do what you need to do to complete the backlog item. You're theorizing that priorities wont shift in N months. This is one of the concrete concepts of Agile; delivering value in an iterative manner with the possibility to shift direction at a given point in time.

You can and should certainly take a smart approach to your code base, keeping it modular, loose coupling, etc... to aid in the re-factoring effort but the re-factoring effort is something that should exist throughout the process. It's ongoing. It's iterative. It's about making things better. Don't concern yourself with theorizing done, look at the backlog item and allow it to define done.

You can't always build Rome in a day but you can certainly lay the foundation for the future.

share|improve this answer
1  
I prefer the term 'Agilefall' myself, this is a good blog about this type of cancer. agile-fall.blogspot.com/2010/03/what-is-agilefall.html –  maple_shaft Nov 10 '11 at 15:49
    
@maple_shaft Great post; it is indeed a rampant problem. –  Aaron McIver Nov 10 '11 at 16:19
add comment

I can understand this sentiment where you know a great deal of refactoring will need to happen in a later iteration based on the user stories of the current iteration. It is a tough feeling and it drives me nuts sometimes too.

I would generally take a bigger picture of the situation. If it is not a great deal of work extra in the later sprint then by all means do what you need to do to deliver exactly what is planned for the current iteration. You can plan accordingly for the refactoring effort later.

If it will likely be an extraordinary amount of work later then I will start asking around about how important this particular sprint is to the stakeholders. Customers and other stakeholders sometimes don't necessarily care about every single sprint. Believe it or not Agile methodology tends to be a political pursuit in MANY organizations making sprints a shallow artificial deadline, Eg. Wanting to attract clients and good talent with buzz words like Agile.

If the stakeholders don't have a vested interest in the current sprint then it may be possible to convince them of reprioritizing some of the user stories to where it makes more sense. I highly urge against extending sprints if possible though. That sets a dangerous precedent.

share|improve this answer
add comment

Your Answer

 
discard

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.