Live data from Hacker News

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

simplethread.com

91–100 of 180 posts

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

#91
Maybe because successful companies in tech got rich so quick that their leaders never learned how to code properly. None of the developers who work for big successful companies know how to code efficiently. Initially, they were hacking together all the code as quickly as possible (of course that didn't scale and had to be rewritten completely) and then they later got enough money to just brute-force development by throwing hundreds of developers at it.

Then they started pushing their naive ideas to everyone else (e.g. static typing, functional programming, 100% unit test coverage, Elixir...) and they put 0 focus on stuff that really matters such as keeping method parameters and return values as simple as possible, consuming events using for-await loops instead of event listener callbacks, naming variables well, separation of concerns, etc...

So now most of the industry knows two kinds of code: Dirty hacks or bureaucratic bloatware. Nobody knows how to code properly. There is nobody around to teach people the correct approach and there are a lot of people around to teach the incorrect approach.

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

#92
post #39

Because we don't dare making bold decisions like: * Throw out all MySQL/MariaDB installations and replaced them with PostgreSQL because it is objectively, provably better. * Stop writing build-systems in untyped languages, because they are less productive when used by a team.

>Throw out all MySQL/MariaDB that's reaching. there are many successful software build on top of mysql/mariadb. >replaced them with PostgreSQL because it is objectively, provably better "provably better"? that's not reasonable enough.

> that's reaching. there are many successful software build on top of mysql/mariadb.

That doesn't make them better or even good. There is also successful software built on CGI scripts, but I'm not going to go and say that Go/Node/C#/etc aren't provably better than that.

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

#93
I fundamentally disagree with the conclusions of this article.

It doesn't take long to "build software" - git was built in a weekend, Facebook a similar timeline. When the environment is right there's no upper bound on the pace of delivery, it's just that modern day dev is, in many places, less about quality of the output (in terms of product/market fit and user value, not code quality) and more about the satisfaction of ceremony. You couldn't product manage Google into existence, or any truly valuable piece of software, hardware, or any other innovation, but it's customary for organisations to create structures which feel grown-up in order to yield software.

The talents now required to enter the field are also different, which has naturally played a part in the perceived slow-down. Development is a new field, and research into what makes teams effective is limited - we're still using the ideas of industrial steel production to try and bolster the present manufacturing line. This means there are plenty of undesirable behaviours.

But ultimately, it's about what you're optimising for. If you hire outstanding people and give them an excellent brief, you can deliver incredible software at pace. Most modern companies don't optimise for this, it's more about satisfying sprawling teams, polishing egos, and chasing incremental gains. In that environment you can bet delivery is slow.

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

#94
post #13

Earlier quoted context omitted.

Have they released subsequent versions?

Git: 2 weeks by Linus Torvarlds, Javascript: 10 days (Brendan Eich?? not sure) Both have had iterations. Git, because the original command line was awful. JS had to be reimplemented with its weirdities, because websites were already relying on them (and this is why we get the WAT demo: https://www.destroyallsoftware.com/talks/wat ) I’d day, in 10 days, what you build is an excellent architecture for a project used ac…

Both of them achieved a minimum viable product stage at that point. Git is good today because of the many many additional time that were spent on it, and a programming language is not software in itself. I am fairly sure that we don’t use a thing from Eich’s implementation. And the building of V8 engine for example started in 2008! (And even the language had to go through multiple revisions to make it useable, which it became only recentishly)

Noone will write a VM with state-of-the-art GC, JIT compilation and the like in 2 weeks from scratch, and this is an example of a complex application.

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

#95

We are asking more and more of our software. Are we, though? This assumption merits deeper scrutiny. It's obviously true sometimes, but does it really generalise? In terms of functional requirements, we use lots of online software today that is far simpler than its traditional desktop equivalents in feature set. Many successful SaaS businesses are providing tools to help businesses organise that are often barely more…

I agree, feels like we've conditioned to accept software playing dumb and being unreliable. A couple decades ago, random glitches attracted much scrutiny, today we just take it for granted.

I kind of have the exact opposite in term of feelings.

Seeing Windows 95 or 98 going into a BSoD was far more common than today with Windows 10.

I also remember seeing Netscape crashing extremely frequently toward the end of the first browser war.

By comparison, today, a modern browser is doing a lot more things, but very rarely crashes in my experience.

Overall, in term of software quality, I think things have improved, specially thanks to:

* the maturing of tools like compilers, dependency managers, linters, unit tests frameworks, etc.

* the widespread adoption of development technics ensuring better quality (CI, unit tests, code coverage, automated integration tests, etc).

* the development of common building blocks such as libraries and frameworks, which enabled projects to not "re-invent the wheel" every time for low level stuff. These building blocks also being generally widely used, battle tested and more reliable than in house implementations.

* the development of OSS which drastically increase the accessibility of the previously mentioned building blocks to developers.

Both technically and methodologically, software development has seen tons of improvements since the late 90ies, early 2000.

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

#96

Earlier quoted context omitted.

I agree, feels like we've conditioned to accept software playing dumb and being unreliable. A couple decades ago, random glitches attracted much scrutiny, today we just take it for granted.

Is that really true? I remember routine blue screens and system hard-crashes a couple decades ago. They're not commonplace today. We're primed to remember the past rosily.

But that is because OSs are not rewritten from scratch every time, but rather iterated upon.

Just try to use facebook, messenger or countless other “apps”. They have so low quality that I don’t understand how can they even allow publishing those.. There are regular UI glitches, I frankly can’t believe the UI that the requested functionality went through and have to double check, and I even have to check if it didn’t issue commands I didn’t want to.

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

#98

My take is that programming languages have an inadequate ratio between abstract and concrete data flows. You are supposed to build code by stitching together commands for all the data handling functions required to handle each case in the data. Yet development environments make it really hard to actually _see_ what effect the functions are having on the data. You need to enter a special debug mode and place strategic…

I'm also surprised that no one's yet mentioned Bret Victor's work.

http://worrydream.com/LearnableProgramming/

His visual interactions for programming are a great advance in the state of the art for fast development, and they've greatly influenced recent advances in development environments - making everything more reactive, and with code and data more intertwined.

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

#99

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 phase. It is my impression that the drafting/design phase in "hard" industries can be just as messy and hard to schedule as software development is - we just don't pay attention, because for physical products, drafting/design is nearly free (capex & opex of the assembly phase dominates), whereas in software, the construction is nearly free (compiler time is too cheap to meter).

It's true that, on the surface, software is "always new". But after doing it for a while, I have this sinking feeling that a lot of it is old and repetitive work that we hadn't yet automated - there are deep similarities between pieces of code we're writing, but we don't have a language to fully capture them and abstract them away.

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

#100
Too long often means forgetting the iceberg principle [1] by Joel Spolsky. Business people only see the tip of the iceberg, the UI button, but don't see the huge chunk below water. This chunk is complex and not UI and takes time to develop or change.

[1] https://www.joelonsoftware.com/2002/02/13/the-iceberg-secret...

Post reply on HN