Earlier quoted context omitted.
As a dev who has now gone into management, I fully feel the frustration that you feel about estimate. I was on the "estimates are stupid and pointless" train for a decade and I've made the same arguments you've made here to my managers countless times over the years. Being on the other side of it now though, I really take issue with sentences like "Estimates are useful to managers and executives to pretend they're in…
I understand and sympathize with the managerial PoV as well. :) It doesn't make the exercise of estimates any less pointless, though. > I've never gotten the impression from anyone that it's about control. It's about resource and risk management as well as ROI. Don't get me wrong. I didn't mean "control" in the sense that they want power over the project. It's more that they want to feel that these processes make the…
I fully disagree with that. Yes, you can absolutely rely on physics to be predictable in physical engineering, but I'd estimate there are similar consistencies in software engineering. You know how long things like the built time take and you can get averages on PR and design doc review times. There are going to be parts of a project that aren't full of unknowns that you can probably accurately predict (e.g. I have to change the color and text of a button or I need to spin up a new Redis instances and did that same thing on my last project). If you're building a house though, there are plenty of things you can't predict, same as with engineering. You can estimate how much concrete costs, but if you're supplier is in Canada and all of the sudden there's a 25% tariff slapped on the import your cost estimate could be fucked. Alternatively, what if the bricklayer breaks their arm a week before they're scheduled to start? In almost every project in almost every discipline there are unknown unknowns, but that doesn't stop them from providing estimates.
> Whereas software development depends entirely on humans (for now, at least; AI is not reliable yet), and there's no predictable physical component to it. Every project is entirely different from every other.
I mentioned it above, but I could not disagree with this more and if you really feel this way, I think you're not thinking things through. If I build an API endpoint to return all users from a database, I can probably pretty accurately predict how long it would take to build an endpoint to return a single user from that same database. If you did a project to build the front end of a sign in page, you can probably pretty accurately predict how long building the front end of a sign up page would take.
Even on projects where the project itself is fairly novel, not every part of the project will be and that can be a starting point. Even if you're building something entirely new, if you know you need to add a new database table, you might need to look at what their migration framework looks like, but you can probably get a fairly accurate estimate on the time it takes to do that part. Most software projects aren't 100% work that you've never done before and even estimating that work can be a good starting point and be helpful.
I also really disagree with the idea that just because it's physical means it's predictable. Concrete drys slower in cold weather, so unless you have a 100% accurate weather prediction there's unknowns there. You may estimate it's going to take 5 days to build the framing, but if a freak snowstorm happens and your crew now spends the first and last hour of the day shoveling snow and covering/uncovering everything on the build site, your estimate is out the window. Even ignoring that, it's not like building a house is a completely automated process. Even if you know exactly how long the concrete will take to dry there's a lot of people involved in the process of pouring it.