Hacker News new | past | comments | ask | show | jobs | submit login

We are special in that nobody wants to spend the time to spec software in detail up front and we usually make major changes to requirements in the middle of the process.

If we had something like a detailed blueprint before writing a line of code and the requirements were set in stone we could get a lot closer to other engineering disciplines in terms of predictability.

With the kinds of planning and estimating processes we do actually use you’re lucky to get within a factor of two of reality.




The way I've heard it phrased is "If the physical properties of concrete changed every two years, civil engineering would look a lot different." (forget the source)


I think we're outliers in a couple of ways. One is what you mention -- we're usually both the architects and the construction crews of our projects, and we do both parts at the same time.

But there's also a step back -- how long does it take you to fully design, but not program, a particular piece of software? If you give a general contractor a particular set of blueprints, he can tell you roughly how long it will take to build, both the ideal number (if there are no scheduling or shipping delays) and what it probably will end up being. But if you tell an architect you want a design for a particular size and purpose and style of building, she can also tell you roughly how long it will take to draw that up.

How long does it take to design a particular piece of software? What makes a design take a day or a month to iron out, well enough that you can get a correct estimate of the amount of time it will take to build it?

I don't think we're good at that, as a profession.


> I don't think we're good at that, as a profession.

We aren't. And, as an industry, we have managed to convince ourselves that's a good thing. Agile methodologies, after all, are an attempt at making such efforts unimportant.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: