I internally categorize a project on several factors:
- Amount of new stuff that I learn
- Yuck Factor
What I find is that while the first three things are very important, the Yuck Factor is usualy the thing that decides how I would remember the project, and how much I enjoy doing it. I'm not sure how I decide what is the Yuckiness of a project, though. It mostly has to do with design and it doesn't bear much in relation to the other factors. In my list of things to watch for are:
- Hard to understand (#1 mistake).
- Hard to modify / extend
- Stupid! Stupid! Stupid!
I was very nearly in tears today when I saw what some people did to the poor machine. Some people really believe in dynamic programming (more on that later). And it means totally incomprehensible code. It doesn't matter that the project is intersting, not too difficult and I'm learning a lot of new stuff. It sucks to deal with it.