"Complete" and "Freeze" Aren't

 

I had a discussion recently with a manager who was concerned about his developers meeting their milestones. “We have “Code Complete” as a milestone. The developers say they meet it, but that just means they wrote code until the milestone date. The code isn't complete. I can't even tell how complete it is.”

Ah, the hazards of a functional milestone. Functional milestones occur when a functional group says they're done with something, not when a particular piece of the product is done (including review and integration with the rest of the product).

“Code complete” should be based on a bunch of feature deliverables (Feature 1 implemented, tested, integrated, Feature 2 implemented, tested, integrated, and so on), but we tend to use “Code Complete” (or my favorite, Code Freeze)as a milestone itself, instead of a roll-up of interim milestones. When project managers don't have feature-by-feature (or architectural milestones if you insist) milestones, with developer testing and integration built in, the developers don't remember or don't feel they have the time to do the testing and integration. (Too often, developers are correct, they don't have enough time because the original estimation was off, or they're multi-project multi-tasking, or someone decided to add more features and not change the schedule.)

So if you're a project manager, consider what you want to call the end of scheduled development. If you want a Code Complete or a Code Freeze, make sure that's rolled-up task, consisting of individual tasks that include development, testing, and review. If you don't, you'll end up with Code Incomplete or Code Slush. “Code Complete” as a stand-alone task means the code won't be complete.

2 Replies to “"Complete" and "Freeze" Aren't”

  1. I’ve never heard the term “Code Complete” used except as the title of an excellent book. Code is complete at the end of the development cycle, and we usually call that “Final”, “Gold Master”, or just “Done”.
    “Code Freeze” is common in my experience, but it’s not well-defined. It means a state where no further changes are desired but there is an expectation that bug fixes will be required and all code submissions should be carefully examined for their potential to destabilize other code. It’s somewhere after “Beta” in that everyone understands that bug fixing will be widespread during the Beta period.
    A closely allied milestone I’ve heard used is “Feature Freeze”, which means we’re now limited to bug fixing, not adding features. The line between a bug and a feature can, of course, be fuzzy. :-(.

  2. Maybe I’m just nitpicking at you today, but like the writer above I have trouble with your usage of “Code Complete” and “Code Freeze”.
    Code Complete is traditionally a milestone, not a rolled up task; it marks the end of a bunch of tasks and reaching that milestone depends on those tasks being done. Those tasks are writing code and the implication is a Waterfall development cycle. The semantic is “code complete”, not code, integration and testing complete. In fact the Code Complete milestone is typically a gate into the Integration phase, and subsequently into the Test phase.
    I provide this as definition, not as advocation. It’s a horrible way to develop software because of exactly the situation described by the manager in your story. Agile, or short cycle development is what works in practice, but let’s leave the waterfall terminology where it belongs.
    “Code Freeze” is a different animal, although on waterfall based projects it’s often hoped that it will happen around the same time as “Code Complete”. Code Freeze indicates a point in time after which only very carefully considered and controlled changes will be made to the code base, rather than the willy-nilly hurricane of development that was likely in progress previously. Code Freeze usually does not happen instantly, rather the code becomes more stable and certain sections may be frozen first, informally, e.g. when an area lead threatens to disembowel anyone who changes the framework again.
    Thanks for putting this stuff out there.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.