Most of my big projects seem to go through a “fan out” phase, where the to-do list grows very quickly. This is a scary phase of the project — one where it feels as though things are accelerating out of control, and where success seems as though it could be in doubt. The compiler seems to be entering this phase now.
While this phase feels dangerous, I think the more dangerous phases come earlier, when I’m more confident.
Do you experience fan-out? I’m curious whether this is an artifact of how I approach projects, or whether it is a more universal experience.
6 Comments
Yes, happens to me too. I take it as a sign that the design has jelled enough to start revealing its awful details, instead of being a daydream.
I have experienced exactly the same for GCC work. And it does not seem to get better, the lists keep and keep on growing fast. The thing that helps to save sanity for me is recognizing which of the new TODO items are outside the project scope.
It’s probably happened in every project I’ve worked on — unforseen implications of partial plans often come up in scary clumps.
Yeah, I get this 🙂
Maybe it depends on what you mean by the to-do list. I would not say that this normally happens to me. Usually I have several large things to tackle in a project, and that doesn’t usually change. Certainly when I start tackling a big thing for the first time, details emerge. So in that sense the to-do list gets larger, in that there are more details to implement. But those details were always implicitly there, so it doesn’t feel to me like things are “accelerating.”
The problem I have more often is the “and here’s yet another thing to do before you’re done” problem, which happens near the end of the project (or near what seems to be the end). But for me that happens more with general projects than with projects restricted to programming.
My fan-outs occur at two times. One is just before requirements are finalized, when I’m trying to think through all the ramifications of the project, and estimate it accurately. The other is in the QA phase, where I realize how what I built doesn’t meet the requirements and I’m busy with small patches and enhancements reflected by the clients.
These fan-outs are stressful, but I think half the job of a developer is to learn to keep track of the small stuff. Bug trackers help, for sure!
This may be a reflection of the fact that I do small month to three month projects where I’m pretty much the only developer.