I wrote this up as a Lessons Learned
after completing SPIDER for CS 460.
Well, it's over with. What to take away from the project?
- I'm not allowed to come up with class names :) Mixed case
descriptive class names are a pain to type.
- Concentrate on the risky areas early and often. Leaving the tough
stuff until last means lots of late nights and grumpy days.
- Flexibility makes or breaks a team. When one member slacks, the rest
have to be there, pulling harder. Everyone has bad times, a team must get
through those times without finger pointing and hard feelings.
- Prototype.
- Prototype early.
- Prototype often.
- Have I mentioned prototypes yet?
- Think about debugging and error checking early.
Debugging scaffolding is easier to construct when there
isn't a lot of program structure to get in the way.
- Learn how to spell "debugging". There is a 'g' on the end of the
word, no matter how often my typing fingers want to discard it.
- Spend the extra time making good class designs. The detail level is
probably too low, no matter how much I put in.
- Use some type of version control system.
- Keep a backup copy of the work in progress someplace else.
- Set up a common vocabulary for the project. Having the entire team
speaking a common jargon can make things much smoother. The common jargon
makes it easier to keep ideas consistent.
- If one team member has an objection, everybody should listen. Too
often one person sees something that the rest of the group is missing.
- Before fighting for something, ask yourself if it's really worth the
energy. Don't defend something just to defend it.
- When you think you understand something, explain it to the person who
taught it to you. You'll probably soon find out that you didn't
understand nearly as much as you thought.
- If something starts looking like a Swiss Army Knife, ask yourself if
there isn't an easier, less complex way to do those tasks. (This function
slices, dices, juliennes, and allocates computer memory, all for the low,
LOW, LOW price of only $19.95 plus $8.95 shipping and handling).
- Keep focused on the goal. Remember that a computer project is
something that you do, it isn't who you are.
- Get away from the project every now and then. You'll feel guilty for
abandoning the project, but the time away will give you a chance to relax,
to think about the project in new ways without really thinking about it,
and to refresh yourself. Burning out is a BAD thing.
- Keep a sense of humor. Laughter will get you and your team through
the project much better than any amount of grumping and grumbling.
- Meet face-to-face with your team often enough to keep track of where
the project is going, but at the same time not so often that you prevent
the project from going anywhere.
- Do something useful at the meetings. There is plenty of time to
chit-chat when there isn't a project to work on.
- If nothing is getting accomplished at a meeting,
the meeting is over.
- Remember that you don't live in a vacuum. Pay attention to the parts
of your life that aren't part of the project.
- Try to have less than 20
things I learned
in a post mortem. :) :)
- Log down errors that you commonly make. You might find yourself
making those mistakes less often after a while.
- A faster processor and more memory is always better.
- If a project is going to be divided up, make sure that one part is to
track the big picture.
- Divide functionality up into lots of functions. It is much easier to
merge several functions into one than it is to split one function apart
into several smaller functions.
- There is no such thing as a team of one.
- At the end of the day, remember that life isn't a goal, it's a
journey. Enjoy the trip, because eventually the ride will end.
Well, I didn't mean to write down this much. I'll stop now,
because I've drifted quite a way off of doing anything like a post
mortem about SPIDER, and have wandered
into life philosophy. Seems I might have learned more than I realized.