There’s an interesting article at First Round Review by Kris Gale, VP Engineering at Yammer, on “The One Cost Engineers and Product Managers Don’t Consider”…
“Complexity cost is the debt you accrue by complicating features or technology in order to solve problems”
or put another way…
“The work of implementing a feature initially is often a tiny fraction of the work to support that feature over the lifetime of a product”
People tend to ask how long a feature will take to implement but there’s rarely any consideration as to the long term cost.
I believe there’s even more to the problem than complexity cost. The long term cost is also related to how well the feature is implemented. It can sometimes be implemented more than one way with different longer term costs or put it another way, different technical debt.
For example, be wary of using/overloading old mechanisms to support concepts for which they obviously weren’t designed – this is usually a sure sign of adding technical debt and complexity cost. Instead, re-design so it’s clearer and simpler.
So, when thinking about estimates, try to also think about the complexity cost and technical debt.