
Let’s be honest: software estimation is less like engineering and more like astrology with Jira tickets. You’re peering into the future, muttering something about “velocity” and “story points,” and hoping the stars (and the stakeholders) align. Everyone nods solemnly, knowing full well that “two weeks” really means “whenever the universe allows.”
So why is it so hard?
Because software isn’t like building a bridge — it’s like inventing a new kind of bridge while halfway across it, with three interns swapping the blueprints for memes. You’re dealing with unknowns: requirements that change faster than a toddler’s favorite color, libraries that deprecate overnight, and that one teammate who swears by LLVM/Clang builds “just for fun.”
Traditional estimation tries to predict human creativity in spreadsheet form. It’s adorable. No Gantt chart can model “debugging a race condition that only happens on the boss’s laptop during a full moon.”
The basics of surviving estimation
- Estimate in ranges, not absolutes. “It’ll take 3–5 days” sounds confident yet mysterious. “It’ll take 4 days” sounds like a lie waiting to happen.
- Multiply by π. Engineers joke about doubling the time and adding one. I prefer multiplying by 3.14159 — it sounds more scientific, and who’s going to argue with math?
- Never estimate tired. Fatigue adds optimism. A sleepy developer believes everything can be solved “with a quick regex.” Spoiler: nothing can.
- Break it down. Estimating an entire project is impossible. Estimating a function? Maybe. Estimating 500 functions that depend on each other? Please seek help.
- Use past data — if it exists. Look at your commit history, ticket velocity, or that dusty folder named “Lessons Learned 2019.” The truth hides in there, crying softly.

Enter AI, stage left
AI has made estimation weirder — and somehow better. Tools now analyze your repositories and whisper things like, “Based on 172 similar tasks, this feature will take 11.3 hours.” You nod, pretending you knew that all along. Predictive systems like GitHub Copilot or JetBrains AI Assistant can even estimate complexity before you’ve written a line.
The irony? AI models are trained on the same codebases full of our bad estimates. It’s like learning cooking from generations of burnt lasagna. Still, they help: they reveal patterns, highlight bottlenecks, and at least give you a starting number that feels more “machine-blessed” than random guessing.

A few artistic parallels
In art, estimation is creative too. Michelangelo probably didn’t have a Gantt chart for the Sistine Chapel. He likely just said, “Eh, give me four years,” and then spent sixteen repainting clouds. Impressionists like Monet captured fleeting light; developers capture fleeting clarity. Both are timing miracles — brush strokes or commits that somehow add up to beauty before the deadline eats the soul.
The takeaway
Software estimation isn’t a science. It’s a conversation between optimism and reality, conducted in Slack threads at 2 a.m. The trick isn’t to be right — it’s to be less wrong, sooner. Each estimate is a brushstroke on an ever-changing canvas of code. You don’t measure perfection; you measure progress, and laugh a little when it goes sideways.
Now go forth and estimate — but keep a pencil, not a pen.

Art Prompt (Impressionism): A sun-dappled riverside scene bathed in morning light, with gentle pastel reflections rippling across the water. Loose, airy brush strokes capture fleeting motion — rowboats gliding, trees whispering in soft golds and greens, and distant figures fading into a dreamy haze of atmosphere and light.
Video Prompt: A time-lapse of shimmering light on a river’s surface, blending abstract reflections and subtle motion. The camera drifts lazily from water ripples to glowing leaves, dissolving into painterly bokeh and soft fades — like a memory gently replaying itself through color and movement.
Songs:
- Endless Time — The Weather Station
- The Dream — Rufus Wainwright
