Hacker News new | ask | show | jobs
by valty 875 days ago
Everywhere you look people are complaining about _software complexity_. Why do things take so long to implement? Why are they so hard to change?

There is obviously a large problem with the way we do software engineering, and we are still figuring it out.

The longer you spend in software, you realize that the "accepted way to do things" changes all the time.

You just have to look at the things you couldn't imagine not using, and then ask "why" do we do things this way.

This will take you on a journey through computer history, and you will get a ton of "ahh that's why!" moments like you do when you they reveal the twist in a film or tv series - which gives you that dopamine hit to provide the re-kindling that you are looking for.

It will help you understand why things are the way they are from first principles which will help you "talk circles" around other people, and also see where the complexity creeps in.

You will realize that a lot of software people are just good at knowing how to use certain libraries, frameworks and technologies in a kind of cargo-cult way, which prevents them seeing more simple solutions.

3 comments

Plenty of people know how to deal with complexity. They are just over shadowed by all the many more that dont yet as they enter the industry and it takes 10x more effort to fix it than create it.
> There is obviously a large problem with the way we do software engineering, and we are still figuring it out.

> The longer you spend in software, you realize that the "accepted way to do things" changes all the time.

Why though?

We had it figured out reasonably well around 2010-215 in my opinion. Then we got more fads, NoSQL, frontend frameworks, cloud infrastucture, GraphQl in place of REST. These aren't required in the majority of places where I have seen them used, a standard old school lamp stack would do fine.

Everything is more complex, takes longer and solves imaginary problems that most companies don't actually have in my experience. Sure there are a few that will need that scale, but no one aims to keep things simple any more.

A lot of newer technologies solve problems that only very large companies face— mostly to do with scaling multiple systems and synchronising their state.

It’s in these companys’ best interest to recommend these technologies to all developers and companies, because it increases their pool of available hiring talent.

That’s how you get startups writing from the ground up, a micro-service backed SPA with layers of abstraction for the data to pass through; when honestly, a SSR monolith backed by MySQL would be better for them.

GraphQL is a great example. Try stepping through all the first and third party code involved in serving up a simple list of records from an SQL database. Mounds of useless abstraction and boilerplate. YAGNI. But the same could be said for SQL databases...
It's largely a wetware problem.

I am fascinated with extreme malpractice in the software field such as

https://en.wikipedia.org/wiki/British_Post_Office_scandal

or

https://en.wikipedia.org/wiki/Enshittification

which are mainly software development being eclipsed by business concerns but also everyday malpractice such as when you come across a registration form on the web that doesn't let you use certain characters such as quotes or words like "INSERT" or "DELETE" in your password. Last week there was this weird case,

https://news.ycombinator.com/item?id=39078372

because (1) they are not in control of quoting strings in their app because they aren't quoting systematically, (2) they are not in control of quoting strings in their app because their web application firewall quietly mutates form submissions according to arbitrary rules, and (3) are likely to be storing passwords in the databases in plain text, but in their case (4) they say they aren't storing passwords at all which makes me wonder why they ask for them, are they (5) passing the password on to some other application, making it a possible nexus to steal passwords? Bell Labs wrote on how to do it the (almost) right way but I bet people are still (6) hashing passwords without a salt, but at least I got the last laugh on folks who (7) thought "authentication is hard lets go shopping" cause their authentication-as-a-service vendor got bought and got shut down.

There are various selfish memes that take a good idea but become a substitute for critical thinking such as: test-driven development, agile, "learn a programming language", functional programming (e.g. use the real Y Combinator and you lose, sorry,) "OO Sux", etc.

There are also non-overlapping communities of practice such as

* Windows devs vs Linux devs * People who use stored procs in databases and those who don't, ...

which make it hard for the software developer community to rise up against ignorance and malice.