Warning: metaphors ahead! May be inappropriate or stretched.
Reading through student proposals for Google Summer of Code yesterday, I took a break from sitting in front of a keyboard to get some gardening done. We've had a few windstorms since I last raked, and with spring beginning, a few weeds have been popping up as well.
One of the issues I've been reminding almost every student about is unit testing. The other is documentation. These are practices which are seen as not fun, not creative.
Raking isn't seen as fun or creative either! Nor is hunting and digging the wily dandelion. But I rake away the dead branches and fir cones, and snag those dandelions because later in the season, my healthy vegetables and beautiful flowers not only flourish without weeds, but look better without litter around them. In addition, we chop up the branches and cones, and use that as mulch, which saves water and keeps down weeds. The dandelions go into the compost pile and rot into richer soil to help transplants be healthy. In other words, the work I do now pays off in the future.
The same is true of writing unit tests, commenting your code, and keeping good notes for user documentation as well! These are habits to build, not onerous tasks to be put off for tomorrow. Your unit tests will serve you well as long as your code runs anywhere. The same is true of your commented code. And finally if you code is user-facing, user documentation is what lets people use it!
So students, please remember to put those necessary bits into your proposal. This along with good communication with your mentor and the entire team are absolutely crucial for a successful project, so bake these into your plans.