Live data from Hacker News

Requirements volatility is the core problem of software engineering

stackoverflow.blog

91–100 of 251 posts

Re: Requirements volatility is the core problem of software engineering

#91

It’s not a problem of software engineering, it’s a property of software engineering.

Yes, it's indeed a property, not a problem. The problem is the accidental complexity which has the tendency to increase and requires constant effort/energy from us to keep it low.

Re: Requirements volatility is the core problem of software engineering

#92
post #72
post #45

I often hear people say that software engineering is a joke compared to civil engineering or other kinds. But they forget that when a civil engineer designs a bridge he doesn't start with: "We don't know exactly what weight it should support yet, but just start building the bridge already". And he doesn't finish with a: "Ah, turns out we wanted a tunnel instead of a bridge, can we change that next sprint?".

> I often hear people say that software engineering is a joke compared to civil engineering ... I think your example points out exactly why some think software engineering is a joke: they rush ass first to implement something (and they implement the wrong thing) instead of sitting down and figuring out the actual requirements first like any real engineering job would have you do. And it looks like everyone is pushing…

Manager and Director are the people who are pushing "agile". They want quick results, and SE can only do what they want. You simply really can't "gather" requirement and finish a feature and do proper testing in a 2-week sprint.

I do agree there are a lot of bad practices in SE as well, but let's not blame everything on them.

Re: Requirements volatility is the core problem of software engineering

#93
post #72

Earlier quoted context omitted.

> I often hear people say that software engineering is a joke compared to civil engineering ... I think your example points out exactly why some think software engineering is a joke: they rush ass first to implement something (and they implement the wrong thing) instead of sitting down and figuring out the actual requirements first like any real engineering job would have you do. And it looks like everyone is pushing…

Manager and Director are the people who are pushing "agile". They want quick results, and SE can only do what they want. You simply really can't "gather" requirement and finish a feature and do proper testing in a 2-week sprint. I do agree there are a lot of bad practices in SE as well, but let's not blame everything on them.

Yeah I'm not really blaming individual software engineers (I'm in the same boat, fighting a slow trickle of feature after feature without really being given a chance to step back and consider the overall design & its future evolution), but the industry as a whole. As I said in another comment in this thread, all too often SEs are just tasked with cooking sh*t to vague spec (as laid out by sales & other non-engineers) instead of being active at the earlier stages where engineering should already begin.

It's like sales people together with the customer decided the shape and colour of the bridge, as well as the number of pillars it has, and how many lanes it has, and what material it's made of -- here's the stack of things you build with -- and what other fancy features it has, and now finally we can call the engineer so they can hop on a bulldozer and start engineering with their hammer for the next two weeks and show the result so we can adjust the shape if it's not as pretty as we imagined. Actual engineering didn't happen.

Re: Requirements volatility is the core problem of software engineering

#94
post #45

I often hear people say that software engineering is a joke compared to civil engineering or other kinds. But they forget that when a civil engineer designs a bridge he doesn't start with: "We don't know exactly what weight it should support yet, but just start building the bridge already". And he doesn't finish with a: "Ah, turns out we wanted a tunnel instead of a bridge, can we change that next sprint?".

The first step in civil engineering is getting data including hydraulic, geo, and traffic data. Deciding between a bridge and a culvert is part of the design process.

It's not that software engineering is a joke it's that you don't understand the difference between computer work and moving earth/pouring ckncrete. Of course people are going to plan the project differently in civil engineering. The consequences to building any part of a bridge wrong are pretty dire and redoing work costs much more than it did initially.

Maybe don't try to draw parallels with other forms of engineering just because it has the same name in university. The practical differences are large.

Re: Requirements volatility is the core problem of software engineering

#95
By now, I'm rather convinced that the "core problem" of software engineering is that it's too easy. Yes, despite the myriad failures in delivery, once you actually get some working software onto the market, its value immediately multiplies as a sole function of your marketing (and, incidentally, I think this is one of the reasons why US based companies are more successful than e.g. European ones: they can start out with a big single market). And even when you're not profitable, VC money is being pumped into the most ridiculous of companies right now.

Of course, when faced with this kind of situation, why bother getting things right and professionalising? I've seen big companies with the most insane development cultures where things would constantly break, and yet it didn't really have any big negative impact on profits. Maybe the well will dry up at some point, but so far it doesn't look like it.

Re: Requirements volatility is the core problem of software engineering

#96

Earlier quoted context omitted.

It can be in some circumstances.. I think that the engineering mindset (adherence to the scientific method, evidence based decisions, planning for the future etc..) is one that is definitely shared by both groups at least. But you can absolutely get away with building software without proper engineering standards. It's not so easy to build bridges that way.

You have cowboy builders in the "engineering" area too. For some reason in software we seem to be more accepting of it.

For most non-engineers (either kind), engineering is just a means to an end, i.e. don't care about the finer details as long as it works.

When software goes wrong, the effects are more often than not, intangible. When mechanical engineering or electrical engineering goes wrong, people can die.

Software can obviously kill people too, it just happens less. Then industry practices revert to the mean due to cost cutting.

Re: Requirements volatility is the core problem of software engineering

#97

Earlier quoted context omitted.

I often hear people use that logic as a reason why software doesn't qualify as engineering

Do you share the opinion that software doesn’t qualify as engineering? I’ve always thought it is a little bit of a stretch.

May be software programmers work is more similar to how mathematicians work, rather than of engineers, though with a more imperative, procedural bent.

Re: Requirements volatility is the core problem of software engineering

#98
post #72
post #45

I often hear people say that software engineering is a joke compared to civil engineering or other kinds. But they forget that when a civil engineer designs a bridge he doesn't start with: "We don't know exactly what weight it should support yet, but just start building the bridge already". And he doesn't finish with a: "Ah, turns out we wanted a tunnel instead of a bridge, can we change that next sprint?".

> I often hear people say that software engineering is a joke compared to civil engineering ... I think your example points out exactly why some think software engineering is a joke: they rush ass first to implement something (and they implement the wrong thing) instead of sitting down and figuring out the actual requirements first like any real engineering job would have you do. And it looks like everyone is pushing…

Thats because we have tried it the other way. Its called waterfall. The problem is, the process is too slow in such a fast moving industry. If you are building a bridge, you dont have the problem of being half way done and all your customers say, "nah, nvm there is tunnel that just went up, that can kind of solve my needs. I will use that one instead."

Re: Requirements volatility is the core problem of software engineering

#99
post #72
post #45

I often hear people say that software engineering is a joke compared to civil engineering or other kinds. But they forget that when a civil engineer designs a bridge he doesn't start with: "We don't know exactly what weight it should support yet, but just start building the bridge already". And he doesn't finish with a: "Ah, turns out we wanted a tunnel instead of a bridge, can we change that next sprint?".

> I often hear people say that software engineering is a joke compared to civil engineering ... I think your example points out exactly why some think software engineering is a joke: they rush ass first to implement something (and they implement the wrong thing) instead of sitting down and figuring out the actual requirements first like any real engineering job would have you do. And it looks like everyone is pushing…

People built a lot of ugly, useless, dangerous bridges before it was possible to plan and build a good one reliably. Even then, bridges still open with huge flaws. I think software engineering will get there eventually. Someone has to beat their head against the unknown a few times to map out its form.

Re: Requirements volatility is the core problem of software engineering

#100

Earlier quoted context omitted.

Engineering means using math to model your solution so the first time you build something it works to spec. Or at least it's close enough to only require minor changes, not a fresh redesign. It's essentially applied physics. Software is more like nailing things together in the hope they might work. ML has some modelling, and formal methods are available for mission critical projects. But the rest is mostly nail guns…

* "Engineering is the use of scientific principles to design and build machines, structures, and other items" * Mathematics isn't only about calculation and applied physics. When you write a simple algorithm and convince yourself with a logical argument about its correctness, time complexity, etc. that is math too. You also do calculations when you design various systems (latency, throughput, etc.) * I know a dozen m…

Even most mechanical/civil engineers use very simplified models than is used by physicists. Engineers usually use Newtonian mechanics in its elementary formulation, and is not usual for them to be familiar with Lagrangian/Hamilton/Variational formulations.
Post reply on HN