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've been recruited in a small team of seven developers about 4 months ago on a small scale Java project involving a basic game development, where each programmer has to do a certain part. For example programmers 1,2 and 3 have high experience in Java and they get harder tasks, while programmers 4 and 5 handle the small details of the project. (They also program, but they get the boring stuff)

We are relatively well organised, we all live in different countries and communicate by skype and share the source by Dropbox, where we keep a log of updates, a task list and whatnot, but in general a problem always occurs in the project development.

Basically everyone gets motivated for a day or two and works on some fast code that does it's job (Although not always 100% efficient, but clean and maintainable) then stops working and becomes un-motivated because he thinks he's the only one doing his job. Very little work gets done and their programming knowledge could lead the project sky-high if they used it properly. There's always a de-motivating factor in project development, such as "I don't like this feature, I think we should go back" or "Nobody works so I won't either" and in the end, it all turns out messy.

My question is - what could be done to motivate them? How could I manage them in a way to constantly have them working on the project?

EDIT: I forgot to add that all the programmers on the project are doing this mostly for experience, they work for free and they do not get paid. I personally work because I wish to gain experience in working with a team.

share|improve this question

closed as off topic by Jarrod Roberson, ChrisF Aug 1 '12 at 21:20

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
How completed work is compensated? and who manages the team? –  Yusubov Aug 1 '12 at 20:08
    
I don't understand the question, the highest-knowledge programmer manages the team. –  Bugster Aug 1 '12 at 20:11
    
what i mean is, why are you working for this project? is there any financial motivation (money, shares)? –  Yusubov Aug 1 '12 at 20:13
    
See my edit on the OP –  Bugster Aug 1 '12 at 20:15
1  
Maybe you need to move this project to be an open-source and hosted in well-known open source project hosting places like (codeplex, code.google, GitHub, etc.) , so that better motivated people would contribute ? –  Yusubov Aug 1 '12 at 20:21
show 1 more comment

5 Answers

up vote 3 down vote accepted

I agree with ElYusubov that communication is probably the most important factor to improve things. However, if you are geographically and time-wise separated, there is little chance to find time for regular team meetings.

It sounds like you have (at least) the following issues:

  • team members don't see each others' contributions and overall project development
  • there are disagreements over requirement and design issues

The first one can be tackled the following ways:

  • Move the source under a public SCM like Github, which automatically manages update logs and history, so commits are more visible to everyone. (And it has tons more advantages over Dropbox, which is very useful in general, but is not meant for hosting software projects.)
  • Moreover, you may want to start sending out regular (e.g. weekly) updates via email to keep team members up to date about how the project's going, who delivered what, what important features have been delivered or milestones reached etc.
  • For this, you may want to set up a developer mailing list too - I believe this is automatically handled by Github and the likes, which gives one more reason to migrate there.
  • To improve motivation even more, arrange regular demo sessions where developers can demonstrate important features developed by them, or nasty bugs fixed.
  • Try to rotate unpleasant tasks between team members, at least to some extent - make sure they understand that everyone needs to take his/her share in handling even the not so glamorous tasks, in order for the team as a whole to succeed. Getting only boring tasks for a long time kills motivation. If the person in question is unable to do anything else, at least make sure that his/her contributions are appreciated publicly and honestly, ideally by the whole team.

To deal with disagreement over design, arrange discussions / chats between the persons involved. Try to ensure that everyone knows at least the rough architecture / design and agrees with it. Once this is achieved, the whole team can pull into the same direction. It is perfectly fine to debate over technical details every now and then, as long as there is a prospect of getting to a satisfying compromise. However, if someone is unable or unwilling to accept team decisions, (s)he may become a estabilizing factor. It is not clear which is the case here.

One sidenote: you wrote "the highest-knowledge programmer manages the team". I assume you mean technical / development knowledge here. Note though that managing people requires communication / people skills much more than technical expertise (although the latter of course never hurts on a software project). So the most experienced software developer and the most experienced communicator can very well be two different persons in a team.

share|improve this answer
    
After going through all the answers this particular one has given me some ideas which I will put to work right now. Thanks for your answer! –  Bugster Aug 2 '12 at 5:01
add comment

Try to introduce a daily stand-up voice meeting for 5 minutes.

What you might be missing is a good communication between team members.

Edit: as i have mentioned in comments above, you may need to move this project to the open-source community and host it in code.google, GitHub, codeplex, etc.

That will allow for more motivated developers to join the project.

Open-source project contribution does count and every contributor will have pride in there work as well as in final accomplishment !

share|improve this answer
    
This is a pretty good idea, but there is no time where every member of the team is online at the same time since we have very different timezones, and not all of us can speak english fluently. –  Bugster Aug 1 '12 at 20:10
    
still, i would suggest to get everyone on a call at least twice a week (preferably every other day). That may really increase productivity and accountability. –  Yusubov Aug 1 '12 at 20:12
add comment

People are motivated by rewards, a sense of agency, and peers.

  • Show results. Release a minimum viable product and show that you have users who like it.
  • Honest praise. Do not underestimate praise as a motivator, complement frequently, criticize constructively and rarely.
  • Ownership. Give them control or input into the product, do not simply tell them what to do.
  • Credit. Spend an hour making a project blog and put there names there.
  • Communication. A team instant messaging room works well for long-distance. People should be talking everyday to keep engaged.
  • Reward. Give them shares if it is a for-profit project.
  • Creativity, learning and fun. If your team is working for free they are naturally motivated. Tap into what they already enjoy about your project and make sure they experience more of it.

The best way to demotivate them is to:

  • Pay them a meager amount (e.g. $20) per feature they accomplish.
  • Track the work they do and make them report on it.
  • Establish a hierarchical system with a few on top.
  • Reward them proportionally and let them know who makes what.

Microeconomics does not work on small teams of self-motivated knowledge workers. It crushes their spirit.

share|improve this answer
add comment

then stops working and becomes un-motivated because he thinks he's the only one doing his job.

You say you are using Dropbox for source control. If you are using a proper VCS like git (or something else) it's easy to keep track of what everyone are doing. You can view a message and see all code changes for each update ('commit/push'). This may give all of you the feeling of progress and cooperation you need.

share|improve this answer
add comment

I'd add another suggestion to what ElYusubov said. Keep clear and presice track of who and what is doing. You could introduce some principles of agile programming: user stories divided into smaller tasks, estimates of time required and specifications. This will clear up all the questions about what and by whom is done.

Keep this schedule up-to-date. Update it after every day of work or more frequently. This will also help you have a clear picture of what is left and what is done.

And, of course, whatever strategy you choose, first of all follow it by yourself, show the others that it isn't so difficult. Be their role-model in some sense. This is the best motivation I can think of.


P.S. I think there was no need for mentioning that you all work on the project for free. It was already quite clear from the rest of your question ))

share|improve this answer
add comment

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