Possible Duplicate:
How do you stay motivated on long projects?
Exact duplicate of this question.
How do you keep motivated on lengthy projects and battle project-fatigue?
Possible Duplicate:
How do you stay motivated on long projects?
Exact duplicate of this question.
How do you keep motivated on lengthy projects and battle project-fatigue?
Perhaps it depends upon the type of project, but to release early and release often can be helpful where possible, so that you get constant feedback and the encouragement of seeing something working.
Take a day off (with your team) and go out doing something fun (go-karting, paintball etc)!
I try to work on "fun" projects in my spare time. That helps me keep my motivation and enthusiasm up for coding in general, even if what I'm doing at work is tedious.
Work on something different every once in a while.
As anecdotal evidence, Google gives its employees time to work on their own, personal, projects - and that's how some of their software gets developed.
I don't. I mean I try to keep motivated, obviously, but getting bored of a long project is perfectly natural.
However, I'm in a role where I work on a number of projects concurrently, so I can't afford to spend months or years on just one project.
I used to be in a large team of developers all working on one large product. I didn't think about it at the time and I was only there for 8 months, but looking back, I realised that it was soul-destroying looking at the same parts of the same code every day.
One good tip I have found is that having developers rotate projects periodically can be beneficial. Apart from the change for the developer, a new set of eyes often reveals old problems or new opportunities, and better still, the cross-skilling reduces the dependancy on particular individuals on particular projects.
Excersize, eating right, getting enough sleep, and Humor!
Aside of that the best way that I have found for a team to stay motivated through a long project is to show each other that respect and appreciate the work that they are all doing.
This is best communicated over a beer at the local pub ;-)
P.S. I do have to agree with Andy here as well, it's makes everyone pretty happy when the client likes what they see so it's good to release in early iteration AS LONG as there's no major bugs in what you're going to show the client. Then of course it could back-fire on the motivation.
Break the large project down into smaller subprojects. Ideally these subprojects would be constructed to represent some defined unit of functionality or related features. Deliver each of these subprojects as it becomes ready to be used.
This is really an amplification of the "release early, release often" response, with the emphasis on structuring the project so that this can be done. Beyond helping you to remain motivated, there are additional benefits to this method. You get feedback earlier in the release cycle about changes, you can structure the subprojects so the most value is delivered earliest, you end up developing the features that customer really wants as opposed to those they think they want, ...
Beside the obvious things as described elsewhere, give all of your team members a "goody" from time to time as a reward: Make sure, you have 2-4 realistic milestones, and arrange for a fest (outside the office), whenever a milestone has been reached.
Pay for everything (as employer) !
I remember even 30yrs ago (in my unix-kernel times), our project manager went to a "biergarden" with the whole 50-70 people department for half a day. Paying beer and food.
Of course, everyone was actually discussing, designing etc. So for the company, it was actually not throw away money and time, as everyone was working.
But we all had fun and were highly motivated.
I think the SO podcast hit on this recently but I personally agreed. Most of the fatigue I feel is less from the project and more from always using/doing the same thing. Always learning has been the key for me to keep fatigue at bay...
I'm not sure how much freedom you have at your work but try something new. If all you can get your management to agree to is a new tool, it keeps you learning and keeps the fatigue away.
On my current .NET/C# project I started using IronPython for a new Admin Console to help me learn Python and keep me from getting into a learning rut.
And if you can't get it at work do as others have stated and start side projects, just don't use the same old tools or it won't help much. That's where I started and found it just made me burn out faster.
Two words: HARDWARE UPGRADE.
Bigger monitors. More monitors. Better monitors. Faster boxes. More RAM. Better keyboards. Better Mice. Better chairs. Productivity gadgets. All will give any stale project a new lease on life.
Yes, it does cost money, but the motivation it inspires will more than make up for the cost in lower turnover, productivity increase, and general morale.
As a corollary to this I would consider upgrading software tools to better/newer versions. However, I would recommend extreme caution when it comes to this as there are pitfalls involved with the cost/time involved in the learning curve for new software tools. Also, judging the benefits of new software is a lot more subjective a task than doing so for new hardware.
Spending time with the users is the best way I know of staying focused.
Usually this requires adjusting the focus so that instead of thinking of the 6 month+ that is still required, there is something that can be done in 6 hours or 6 days, which is much shorter. Small victories and milestones can help to boost morale as well as drive since at some point you may get on a roll and the look out world, now we are cookin'!
Additionally, taking a break once in a while, whether this be that weekend off or a statutory holiday, also helps to prevent burnout.
Be able to improve the project. To some managers it may not seem like moving forward if it doesn't change the user's experience, but when at the end of the day I see I've cleaned up some crufty mess or fixed that annoying thing in the code or build system that bugs me every time I run into it, I feel good.
Emptying a bit of sand from your shoe can make a long walk a lot more enjoyable.
Having milestones that are not too far apart is the key.
These milestones could be releases as pointed out by other users, but could also be sections of code development or other work related goals.
With each milestone create some sort of event that you and your team can look forward to so that there is motivation to work towards them.