THE BLOG OF
DR. JOSH C. SIMMONS
.

ESTIMATE RAMBO: A CAUTIONARY TALE ABOUT SOFTWARE PLANNING

4 MIN READ

They call him “Estimate Rambo” and he is everywhere. He is definitely on your team. Estimate Rambo is almost never a product manager. It is the job of product managers to make insane estimations and the job of developers to reel these deadlines back into reality. Estimate Rambo is always a software developer.

To clarify further — Estimate Rambo is never a junior developer. Junior developers, by definition, have no real world experience to back up their estimates. That doesn’t mean they shouldn’t be given leeway to attempt estimation but in any responsible org, their estimates will be advised by more senior developers.

Estimate Rambo is brazen and there is no bravado without knowing better. Estimate Rambo will report that he can build the new feature that touches five legacy areas of the codebase (each one error prone) in “a few days”. Estimate Rambo’s sole ambition in life is to bend the realities of software engineering to fit the idyllic outsider visions of it held by product managers, stakeholders, designers, et al. When he inevitably fails to deliver on time, he will chalk it up to a “one off” where “the unforeseen happened”. When this happens to most of Estimate Rambo’s estimations, he will be unable to see the pattern.

Estimate Rambo operates on one of, or a hybrid of two modalities.

  1. A need to people please.
  2. A massive ego.

When a software engineer begins a new position a tacit understanding is established: I (the engineer) will do honest work at the best of my ability to make decisions and write code to execute on the business priorities. You (the stakeholder) will respect my estimates since I am the expert. If you question my estimates, I have the right and authority to correct those estimates. The more you pester me about how I arrived at my estimates, the less time I am able to spend building software. I will be way off on some of my estimates (that’s why they’re called estimates, not certainties) but if you let me learn from my own mistakes, the estimates will get better over time.

If Estimate Rambo has a need to people please, he will try to tell the stakeholder what he wants to hear instead of relying on his expertise and experience to provide a realistic estimate. This initiates a downward spiral where estimates seem to be consistently bad so the stakeholder starts pestering more about how those estimates were arrived at, which wastes development time, which ensures the next milestone is way off track, etc.

A massive ego Estimate Rambo is not unheard of and I have worked with more than one over the course of my career. This flavor of Estimate Rambo believes himself to be God’s gift to software engineering. He believes himself to have a supernatural coding ability and usually views teamwork or collaboration as something unnecessary that will “only slow him down”. This may be so for lower level coding work but when it comes to meatier features, working in a vacuum is a mistake. The main asset of a senior developer isn’t their ability to come up with the perfect solution, it’s to bring the right talent and opinions together to DISCOVER the solution with the best tradeoffs.

Proper estimation begins with self knowledge. You must have a deep understanding of how much you can accomplish if you’re not lazy and if you don’t work so hard as to burn yourself out. This self knowledge is only gained through real world experience. If you’re already working as a dev, simply note when your estimates are on and off — be honest with yourself, there are genuine unforeseen blockers sometimes, but usually these can be budgeted for ahead of time and they don’t happen that often.

If you’re trying to land your first dev job, I’ll give you the advice I give anyone I speak to that’s looking to start a career in software engineering; work for free first. There is a mentality in our antiwork culture that this is “getting taken advantage of” but you’d only be getting taken advantage of if you didn’t get anything out of the exercise which isn’t the case, you’re getting experience. Boot camps aren’t inherently bad but they are academic and will teach you little in the way of working on real projects where deadlines, features, and stakes are always negotiable. Internships are great for this. Can’t find an internship? Find a few other developers maybe a product manager and build a project together. Do it online if you can’t find anyone locally. Reach out to a crusty old dev like me for feedback on the project once you have an MVP — who knows, maybe people will actually use your app.

Regarding Estimate Rambo I say this, “of course I know him, he was me”. I was eager to please in my first software job and would always provide aggressive estimates. I would work too hard and too many hours to meet my own deadlines and as a result this cycle continued until I felt pretty burned out and rotten about software development. That’s probably going to happen to you at some point early on in your dev career — if it hasn’t, you might be Estimate Rambo.

I recently removed social share links from my site. If you enjoyed what you read, please take the time to tell one person directly about this blog.