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.

I'm working in a team where each member is working on an user story. How can we avoid creating duplicate or conflicting functionality?

For example, if my user story requires the creation of class A and my team member needs the same functionality and creates a similar class (maybe with a slightly different name), how should we plan our work so that we both move smoothly?

share|improve this question
1  
Do you have a daily standup meeting? Do you attend? Do the other developers attend? –  S.Lott Feb 9 '12 at 12:48
    
we do not have daily stand up meeting but weekly.Since last week i have been reading above agile methodologies. I wanted to implement the methodology but dont know how and where to start. –  arjun Feb 10 '12 at 4:16
1  
Start with daily stand up meetings. A weekly meeting is not Agile. That's why you have this question. –  S.Lott Feb 10 '12 at 10:46
    
After you start doing a daily standup, you can search for questions like this: programmers.stackexchange.com/questions/59423/… –  S.Lott Feb 10 '12 at 10:56
    
@S.Lott thank you –  arjun Feb 10 '12 at 11:13

1 Answer 1

up vote 6 down vote accepted

Communications.

Large part of working as agile team is knowing what your team is working on. You have planning meetings and you should have design discussions prior to going off and coding solo.

On our teams we always know what other developers are working on and as soon as the thought arises that there's a potential for reuse or for overstepping bounds, you get up and walk over to the other person's desk (or if remote, pick up the phone).

UPDATE (response to comment):

At the beginning of every sprint, the team decides which stories are to deliver and which tasks are to be completed. We have a standard template (kinda like a checklist to make sure nothing is forgotten) and one of the things, is design task.

Almost every story has a design task, but generally it is 10 min to 1 hour discussion among team members to discuss the general approach of completing the work ahead. This not only serves as a heads-up for other people, but it is also useful because sometimes other people will offer a different solution that is better than what you were considering doing. In planning meeting, we decide which developers should participate in the discussion based on a) complexity and b) other people's familiarity of existing code that's involved.

If two people know they will be working in similar area, they will most likely participate in the same discussion. Our agile teams also have a technical lead, who typically participates in larger portion of design/code reviews and one of the responsibilities of that person is to spread knowledge through out the team, but I have a feeling this is a temporary position we will get rid off (or maybe scale back) once other team members get more familiar with the product (currently lots of fresh members).

Also during daily stand ups we generally talk about what we've been working on and what's ahead and if I mention that i started writing a utility class to help with feature X, and that class is useful to another developer, then the other developer would talk to me after the meeting and we would discuss how to make sure we are not repeating work and the class is generic enough to satisfy everyone's needs.

Finally, all code written is code reviewed, and we rotate through who reviews what, so in general the team has good familiarity with the whole code base. Even if two duplicate classes slip through (and I can't think of that ever actually happening), 95% chance this would be brought up in a code review and the two classes would be merged into one at that point.

share|improve this answer
    
How do you perform the design discussion citing some example scenario please –  arjun Feb 9 '12 at 5:12
    
@arjun: updated the post –  DXM Feb 9 '12 at 5:26
    
So there is also necessity of version control system to avoid duplication and confusion? –  arjun Feb 9 '12 at 5:46
4  
@arjun: I think you just made 75% (might be a conservative estimate) of members on this site visibly shiver. There is a NECESSITY on EVERY project to have version control. I have all my personal, throw away code in a perforce database. I wouldn't even consider working on anything professional without source control system in place. If I were you, I would drop EVERYTHING you are working on right now and get source control up and running as the first priority. Continuous integration being close second. –  DXM Feb 9 '12 at 5:53

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.