Live data from Hacker News

Why does it take so long to build software? (2020)

simplethread.com

121–130 of 180 posts

Re: Why does it take so long to build software? (2020)

#121
What I find the most painful is that you can't rely on much to decrease accidental complexity.

A couple of years ago I settled on the JavaScript Dojo Framework. It was the most solid framework available, but then AngularJS came out, and it had some very compelling arguments on it's side.

So I moved over to AngularJS, being happy that there finally a good, modern solutions to many problems.

Then Angular 2 came. Then AngularJS 1.x stopped being updated. Angular 2 was nowhere near what I needed, so I had to find an alternative.

I switched to Vue, being really happy about it. Now I'm finding myself in the transition to Vue3, where frameworks like Quasar still need to get ported and it is unclear what will happen to all the code I already wrote.

Or Python2 vs Python3.

All this progress makes me feel burned out, barely having time to tackle the actual problem to be solved.

Re: Why does it take so long to build software? (2020)

#122
"splitting it up" is only accidental complexity if one splits things up in services. If one has a monolith I would argue that "splitting it up", in that case known as 'improving coherence' and 'reducing dependency' is much easier and falls under essential complexity.

Generally, I would say that tools are a very big part of it. One example. Why did we go from svn to git again? O yes, git can do so much more. But now you actually have to do all of these 'so much more' things. This gives you a very beautiful commit history if you do it well but is a very beautiful commit history really that important? You tell me.... maybe it is and maybe it isn't and maybe it depends on the nature of the project....

Re: Why does it take so long to build software? (2020)

#123

Earlier quoted context omitted.

I think focusing on this comparison to the real world assemblies and constructions doesn't yield much insight. The equivalent of a car being assembled is a compiler building an executable from source. You can consider factories to be just very, very long compiles, and forget about it. The question of why software takes a long time to build pertains to the coding phase, to which real life's analogue is drafting/design…

> The equivalent of a car being assembled is a compiler building an executable from source I disagree. The equivalent of a car being assembled is copying the binary executable from one storage medium to another; building an executable from source would be the equivalent of building the production process for a single car model, while coding is the equivalent of designing and testing that model.

This analogy is flawed, you can't capture insight from the flaws in it.

Re: Why does it take so long to build software? (2020)

#124

Software takes a long time to build because it's always new. That is, software is trivially copy-able, so there is no reason to spend effort duplicating any software that already exists. (Legal reasons and "not-invented-here" syndrome notwithstanding.) This is a huge different from how the "real" world works, where almost all of the work involved in building, say, a car, is actually just the work of assembling identi…

I think focusing on this comparison to the real world assemblies and constructions doesn't yield much insight. The equivalent of a car being assembled is a compiler building an executable from source. You can consider factories to be just very, very long compiles, and forget about it. The question of why software takes a long time to build pertains to the coding phase, to which real life's analogue is drafting/design…

I thought the original article was very poor. There's no real data, no references (except Fred Brooks), and the graphs are just nice shaded opinions based on nothing much.

It fails to ask why the complexity of tools and systems grows over time, and whether this is matched by improvements in UX.

It also fails to note that one of the goals of abstraction is to hide inherent complexity. And in fact this happens time and time again in engineering and product design - an insight that starts off requiring near-genius levels of original mathematical creativity is packaged into commodified tools that make it easy to do a certain job.

Sometimes the tools are aimed at engineers, and sometimes they're built for the public. But because no one expects to literally reinvent the wheel, they all package genius in their different ways.

Except software. In software teams keep working to reinvent wheels completely every few years. Some are arguably more refined than existing wheels. But they're all wheels.

They're not a new kind of thing - like an engine. Or wings.

So I agree. Software has mediocre lumpy wheels They're mostly back-references to existing software, and not so much attempts to commodify and simplify standard problems - like security, reliability, scalability, and UX.

There are packages for all of the above, but they're rarely clean and elegant - in the sense that someone has really understood the problem and designed a maximally effective but minimally complex automated solution.

Worse, there are no processes for efficiently abstracting a domain. And that's what's missing.

Re: Why does it take so long to build software? (2020)

#125
post #26

Expectations != Requirements

Which points straight to the problem: the tools for expectation management, requirements gathering and design validation are severely lacking.

Applications should be built on fast iterations with the user present, until each detail is perfect and the full workflow is validated to be as useful as expected. Only then should engineering issues be addressed, to make the tool robust and fast.

Re: Why does it take so long to build software? (2020)

#126
I think there is a cost disease in software where baseline requirements only increase depending on the maturity of a company. Accessibility, localization, scalability, permissioning, observability and alerting, reliable deploy and testing pipeline... all these things are table stakes for a new project at the company I work at, represent A LOT of complexity, yet an application delivered without them might have a nearly identical user experience...

That’s not even to mention the added burdens on the planning side of things, e.g. getting infosec and legal and compliance to sign off before breaking ground, gathering requirements from 10 different teams across the world, appeasing more stakeholders, etc.

The difference just in table stakes between a young startup and a mature company can easily account for an order of magnitude difference in effort required to deliver a feature, and it shouldn’t be surprising.

Edit: and this is why I weep when I see mature companies under-investing in developer tooling.

Re: Why does it take so long to build software? (2020)

#127
post #32

Aren't most developers in the world paid a salary or day rate and thus are paid for their time? What incentive is there for them to "hurry up" rather than sandbag?

Plus they usually get no financial compensation for the extra work of making things work well. There's a minimum quality level required to not get fired, and I wouldn't be surprised if that's exactly what most employees deliver.

Of course, why go through the troubles of putting in the extra hours, if there is no financial compensation or appreciation?

Personally, I would just optimize stuff or propose new features for a product if I would learn something/gain experience out of it.

Re: Why does it take so long to build software? (2020)

#129

Some interesting thoughts in here. I guess the main thing is that there is basically infinite demand for more things in software. You can take almost any feature from any product and come up with new things you would like it to do that would take entire teams of developers to work on. Software will never get quicker to develop because we will always request the absolute maximum amount of features that the market can…

I mean.... isn't this true for hardware too? Razors today looks very different from the ones when it was invented. Same goes for vacuum cleaners, cars, tools for construction/manual task, the list goes on. The only notable difference is that each iteration of hardware have a vividly clear version start/end date compared to the rolling versioning of software. First vacuum cleaner was invented 1908...

Everything is improving I guess but there is very little relative investment in razors. They look different but arguably function worse than the original style double edge.

Vacuum cleaners have had a bit of innovation but no one is really desperate for a better vacuum cleaner unlike software. Also many of these hardware items have basically reached close to their peak form. You can't really make a radically better bicycle because we have already reached almost the best design.

With a team and a few years you can usually obliterate the leading software product in most areas and with a large team you could completely revolutionize it since there is so much easy target improvements to be had.

Re: Why does it take so long to build software? (2020)

#130

The pace of change is too quick and the permutations of how to do X are necessarily too numerous. As far as I know there is no “standards body” that governs these things across organisations. Ie: if you’re developing a web app that needs to poll other systems for data every X minutes there should be a standard that governs the best way of doing this in the major 5 languages. Taking into account SRE principles like lo…

What is the value of the current pace of change though? We are using billions of developer hours every year to keep up with all the changes, where is it going, why do we need to spend so much time changing things? Changing things doesn't just force people to rewrite, even worse it forces people to relearn instead of achieving mastery.

How many percent of developers understand how everything in their stack works to such a degree that they'd be surprised if there are any problems when they test things? Basically nobody, yet it isn't really an unachievable goal. Why can't a web developer reach that point after 5 years of full time? Simple, it is all the damn changes to everything that happens constantly. It is so bad that most seems to think it is impossible to master anything in software engineering, yet if you just pin down the versions of all your dependencies and work like that for a few years everything will be crystal clear, that is how the human brain works.

Post reply on HN