惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Check Point Blog
GbyAI
GbyAI
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
T
Troy Hunt's Blog
博客园 - Franky
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Security Blog
Microsoft Security Blog
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
The Cloudflare Blog
S
SegmentFault 最新的问题
Latest news
Latest news
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
I
InfoQ
博客园 - 【当耐特】
NISL@THU
NISL@THU
A
About on SuperTechFans
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Scott Helme
Scott Helme
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
Security Latest
Security Latest
V
Vulnerabilities – Threatpost
Security Archives - TechRepublic
Security Archives - TechRepublic
A
Arctic Wolf
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
IT之家
IT之家
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
aimingoo的专栏
aimingoo的专栏
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
大猫的无限游戏
大猫的无限游戏
S
Security Affairs
The Register - Security
The Register - Security
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 热门话题
T
Tor Project blog

Yusuf Aytas

When Code Is Cheap, Does Quality Still Matter? Why Crouching Tiger, Hidden Dragon Is a Masterpiece Why We Ignore Advice The Mirror Is Part of the Machine When Too Many Maps Overlap on One Person The Work Runs on Different Maps Your Work Introduces You Trial By Fire The Dude Why Headcount Math Lies Capacity Is the Roadmap The Roadmap Is Not the System Torres del Paine W Trek Escaping Status Theater Incentives Drive Everything Scaling Culture Without Dilution What Good Looks Like Why Airport Security Feels Random Why Politics Appear How to Work with Me The Janus Protocol Multi-Horizon Delivery Framework What Good Execution Looks Like Managing Your Manager Why Kingdom of Heaven’s Director’s Cut Is Better AI Broke Interviews Most of What We Call Progress Managers Have Been Vibe Coding All Along Stop Wasting Brainpower Why Over-Engineering Happens Prisoner's Dilemma Climbing No More The Weekly Win Mevlana Candy Brewing Turkish Tea Onboarding Your Engineering Manager Technical Deep Dives Yapay Zekâ Çağında Bilgisayar Mühendisliği Building Remote Teams From Idea to Launch in 2 Weeks Reflecting on Software Engineering Handbook Representing the Business New Manager Survival Guide Take Self Reviews Seriously Chasing Real Respect The Invisible Difference Learning the Johari Window Management is a Lonely Place Simple Task Management AI Balance in Work PIP Manager Insights Engineering Manager Interview Preparation Work-Life Balance as a Manager Bridging the Management Disconnect Tech Hiring Bubble Bursts Traits for EMs Simple Acts of Recognition Matter The Question I Ask Every New Report The Reality of an Employer's Market Bridging Ideals and Reality Hiring Red Flags Why The Godfather Is So Damn Good Subteam Tenets No Fluff Please Losing a Top Performer Balancing Act of Reliability Building Trust in Engineering Teams Ideal Number of Direct Reports Overriding a People Leader’s Decision From Misperception to Promotion Perception vs Perspective Setting Goals From Engineer to Manager Getting Delegation Right Interviewing Your Future Boss Celebrating Our Book in Iceland Operational Skills Needed On Writing Software Engineering Handbook Charlie Munger Quotes Working with Dependencies From Las Vegas to Canyons Navigating Layoffs Handling Competitive Dynamics A Weekend Getaway to Malta Engineering Health Essentials Should Dev Managers Code? Confronting the Life on Pause Winning Eleven Kindness is A Choice Bireysel Katılımcılar ve Yöneticiler Leading from Where You Are The Subtle Art of Listening Coding in Leadership The Power of Consistency The Making of a Leader The Path to Leadership Embracing TikTok Talent Sourcing Journey Leading Self Managing Teams Cracking Coding Bottlenecks
Estimation Accuracy
Yusuf Aytas · 2023-10-15 · via Yusuf Aytas

Published · 5 min read

Estimating software projects is basically the tech equivalent of arguing about Irish weather. Everyone has an opinion, nobody really knows anything, and the forecast changes all the time. One minute you're looking up and see that nice blue sky, and fifteen minutes later you're sprinting through sideways rain wondering why you ever trusted an umbrella in this country. If you get sideways rain, you get wet. Like really wet.

That's why we don't rely on umbrellas. We rely on raincoats.

A raincoat doesn't stop the rain. It just means the rain can't stop you. Software development isn't much different. The only way to survive the chaos is to embrace it the way we embrace Irish weather: with humour, realism, and the right gear. In this post, we'll look at what those raincoats are: practical tools and approaches that help us handle the unpredictability baked into every project.

Psychological Safety in Estimations

Most bad estimates are bad conversations. And before getting into the specifics, it's worth naming that directly. Psychological safety is supposed to mean people can speak honestly without consequence. In practice, it gets used the other way: as cover for pressure, wrapped in the language of openness and trust.

Estimation AccuracyEstimation Accuracy

Sometimes the people talking loudest about psychological safety are the ones making it unsafe to give an honest number. The pressure is rarely explicit. It's a raised eyebrow on a call, a follow-up message that carries a clear expectation, a silence that says the answer was wrong before anyone responds. Engineers learn to read these signals fast. They give the number that ends the conversation. That number is almost always wrong. It distorts estimations, sets unrealistic expectations, and jeopardises the project before the first line of code is written. A team that can't say "I don't know" is standing in sideways rain holding an umbrella.

Divide and Conquer

One effective raincoat is the classic: divide and conquer. It works almost everywhere. Breaking down complex projects into smaller, more manageable tasks decreases the number of unknowns and reduces dependencies on other teams or departments. It lets you assess each component more granularly, which makes it easier to give estimates that actually hold up.

Even so, estimation accuracy can remain elusive. Here's why.

Unknown Unknowns

The term unknown unknowns captures one of the biggest challenges here. These are the things you don't know you don't know: hidden pitfalls, unforeseen complications, or external factors that can blow up your timeline and budget without warning.

No matter how well you plan and break down a project, there will always be unknown unknowns lurking. They're surprises waiting to happen, and they can throw even the most careful estimates off course. No raincoat covers everything. But knowing that going in changes how you pack.

Unpredictable Change

Identified request to simplify paragraph while preserving linkWhat you're estimating today might not exist in the same form next week. Requirements shift, priorities change, someone discovers the third-party service you were counting on doesn't do the thing you thought it did. New tools change what's hard and what isn't. The estimate doesn't go wrong because you estimated badly. It goes wrong because the thing you estimated changed.

External Dependencies

External dependencies, often involving other teams, departments, or third-party services, introduce significant uncertainty into estimations. To mitigate this, I generally try to do the following:

Where you can, cut the dependency entirely. Find an alternative path, own more of the stack, do without the feature. That's not always possible, but it's always worth asking first.

When you're stuck with a dependency, get in front of it early. Find out when the other team does their planning and get your ask in before that window closes. A request that lands during planning becomes a prioritised ticket. The same request a week later becomes an interruption, and interruptions get deprioritised. Once you're in, check in. Not obsessively, but enough that it doesn't quietly slip off their board while you're not looking.

Getting your project into the planning cycles of your dependencies early minimises surprises and gives you a fighting chance at a realistic estimate.

The goal was never to make estimation perfect. It was to build teams and processes that can absorb the unexpected without losing momentum.

None of this is clean. The most useful thing you can actually do is make the uncertainty visible rather than hiding it inside a number. State your assumptions out loud. Do the post-mortem even when it's uncomfortable. And stop treating a revised estimate as a failure. The estimate was always a guess. Now it's a better-informed guess. That's progress.

The point is not to stop the rain. The point is to stop pretending you can. Get good at moving when the forecast is wrong because in software, it usually is. That's the raincoat. Wear it.