News for hackers. Stuff that matters.
Re:Software Complexity Is Killing Us by ravenstine on Monday January 29, 2018 @05:20PM (#16261162)
I disagree. Users, in reality, don't care about all the crap that stakeholders and some developers care about. They don't care about Material design, fancy animations, beautiful buttons, "elegant" code,a ton of niche features, mobile apps(no I'm not kidding), your annoying push notifications, your fancy menu bars that you also fix to the top of the screen for whatever reason, your autoplay videos, your little "delightful" asides that interrupt the content, etc. They want something that works without much effort or worry that the software will fail, and that doesn't necessarily have to do with how fancy or feature rich an app is.

Craigslist and the Quartz app are just a few examples of what I'm talking about. Nobody except maybe some stakeholders ever asked for those things to be more fancy than they are. They are simple and they work. The end.

Unfortunately, we are in an era where everyone wants to be like Google, or at least thinks they need to. I do not believe that the rest of the world would be worse off if they stopped spending time making "production ready" software that visually competes with the Big 5.

Software becomes complex because we allow it to become complex. Just because you can add another feature doesn't mean that you now have more value for a finite amount of pay for X developer time. Companies seem often blind to continual costs for support that go up every time each time the solution is to add a new feature or software package for a small segment of the customer base or the company itself.

Whomever is in charge should acquiesce less often. But everyone wants to be a wizard.

Re:Software Complexity Is Killing Us by TheCoelacanth on Monday January 29, 2018 @09:05PM (#16262346)
> They don't care about Material design, fancy animations, beautiful buttons

If they don't care about those things, they aren't doing a very good job of voting with their wallets. It's much easier to sell a product that is pretty.

> "elegant" code

That isn't for users' benefit. The people paying to maintain the software do care how much it costs to maintain the software. Elegant code is an attempt to make it cheaper to maintain.

> a ton of niche features

People buying software do care about that, and they are often a distinct group from users.

> mobile apps, your annoying push notifications, your fancy menu bars that you also fix to the top of the screen for whatever reason, your autoplay videos, your little "delightful" asides that interrupt the content

None of those are for users' benefit. Those are for the benefit of customers (advertisers).

So perhaps saying that users expect more isn't telling the whole story. However stakeholders certainly expect more.

Re:Software Complexity Is Killing Us by TeMPOraL on Tuesday January 30, 2018 @02:24AM (#16263514)
> they aren't doing a very good job of voting with their wallets

I'm tired of repeating this, but here it is:

Voting with your wallet. Is. Bullshit. Consumers don't pick from the space of all possible products, they choose from what's available on the market. Especially in software, it's producers who collectively determine trends. If they all fall into a fad, customers have no way of saying no.

Re:Software Complexity Is Killing Us by geodel on Tuesday January 30, 2018 @10:01AM (#16265778)
Exactly right. Just like producers have decided that all upcoming editors, chat apps etc have to use Electron. They all talk as "Overwhelmingly users have spoken that they want bloated, slow text editors with million plugins for next gen development."

IMO they are exactly like military-industrial complex where increasingly complicated software will need newer and complicated hardware because "customers demanding it".

Re:Software Complexity Is Killing Us by golergka on Tuesday January 30, 2018 @03:43AM (#16263817)
Your argument would be true if on any given software market there would be around 3 or 4 developers and products.

This is very far from current state of affairs, where for almost every possible kind of software there are a lot of different developers with vastly different products, different designs and ideologies. They may not be as well-known, but they exist in their niche, and you can definitely vote with your wallet for one that looks to your liking.

Extreme example - mobile todo app. I think that one in ten professional developers released one to app store just as part of his portfolio. And users still choose apps with mainstream design, look and feel. If that's not voting with their wallets, what is?

Re:Software Complexity Is Killing Us by blunte on Monday January 29, 2018 @08:31PM (#16262206)
Sorry, stuck in my own perspective. My clients are typically within a company. It is internal corporate expectations that are out of line with reality. External users, in my limited experience, are much more flexible and un-demanding.
Re:Software Complexity Is Killing Us by blunte on Monday January 29, 2018 @05:24PM (#16261183)
I think either you are not understanding me, or I'm completely misunderstanding you. What you're saying seems orthogonal to my arguments...
Re:Software Complexity Is Killing Us by ravenstine on Monday January 29, 2018 @05:48PM (#16261319)
I'm disagreeing with your point that users are expecting more of software. Their expectations have changed in some ways, but not really in any that makes software significantly more complex.

To shorten my last post, it's poor development practices and a lack of foresight from upper management that makes software too complicated. You could make an interface that looks like it's from the mid 2000's(garbage by today's standards) and people would still use it if it works well and is reliable.

Look at HN. Do we need more from it than it already provides? If it was up to the average upper management, the backend would need constant retooling for every feature request from different departments, 12 forms of analytics, newsletter signup forms in between posts, job alerts, a mobile app with a nag message on mobile pages, single sign on from Facebook and Google, share buttons, a waffle iron, etc. None of which the actual users and even the developers ever wanted.

EDIT: Some people might point to Slack as an exception to my argument. Indeed, Slack looked very nice compared to the competition when it first came out. But what made it a killer app was that it took the best of the IRC experience and made it a universal experience between devices and browsers. Plus it can use a company's SSO. When it first came out, it was also not very complicated. I remember when it didn't have reactions or threads, but it was a breath of fresh air after having come from using things like HipChat and Gchat, both of which were pretty dreadful.

Re:Software Complexity Is Killing Us by enobrev on Monday January 29, 2018 @11:47PM (#16262958)
If HN was so perfect of an experience, then I and many others wouldn't use an app to consume and interact with it. I come here for the conversation and curation, but the UX on mobile is awful. It's far too easy to make mistakes. I can't even upvote properly without a very high probability of down-voting instead (at least we can cancel the down votes now). Just because You don't care about the design doesn't mean the design isn't useful or even necessary for an application's success.

I agree with your point about nagging, popups, and analytics, but I don't think the existence of those annoyances are an argument against the OP.

Re:Software Complexity Is Killing Us by jdmichal on Monday January 29, 2018 @06:23PM (#16261528)
I think users are expecting more, but not necessarily in the ways you are imagining. It's about how much of the process users expect to be automated vs how much needs intervention. I'll redirect to my other comment:

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

"Software is really about codifying process -- pun completely intended. What happens is some slick new software comes along that implements that happy 80% path on the process, and does it quickly and efficiently. Then business complains about the 20% falling into the gap, and starts adding features to reduce that, thereby slowing down the processing. This keeps going, until someone has an idea and implements slick new software that implements that happy 80% path on the process, and does it quickly and efficiently..."

Re:Software Complexity Is Killing Us by ZenoArrow on Monday January 29, 2018 @07:15PM (#16261827)
> "I think users are expecting more, but not necessarily in the ways you are imagining. It's about how much of the process users expect to be automated vs how much needs intervention."

To a limited extent, yes, but if we're being honest here, the main "additional demands" that most users have for most new pieces of software are "simpler" and "prettier", neither of which automatically requires additional complexity under the hood.

Re:Software Complexity Is Killing Us by PeterisP on Monday January 29, 2018 @08:09PM (#16262106)
"Simpler" from the user's perspective does require additional complexity under the hood.

It means that the "simpler" software has to be aware of all kinds of edge cases and solve them automagically, because the user expects a larger degree of automation. Software seems "simpler" to the user because it's working on a higher level of abstraction (and levels of abstraction tend to be "leaky") and by reducing the domain of details that the user needs to be aware of. In order to do that properly, the "simpler" software now needs code to take care of all those details as they are effectively removed from the user's awareness, while the earlier software could leave some of those edge cases up to the user.

Re:Software Complexity Is Killing Us by ZenoArrow on Tuesday January 30, 2018 @02:32AM (#16263547)
> ""Simpler" from the user's perspective does require additional complexity under the hood."

No, it doesn't, or at least it doesn't if you write the application in a language that is expressive enough to cater for the edge cases without bloating the code base.

Consider a language like Red, which allows you to write GUI applications in a few lines of code. Must be a large runtime behind the scenes enabling this, right? It's clear that this is not the case as the runtime, compiler and libraries fit within 2MB. How is it possible for Red to achieve so much with so little? I'll leave that for you to discover for yourself.

Re:Software Complexity Is Killing Us by jdmichal on Tuesday January 30, 2018 @10:27AM (#16266014)
The answer can't always be "a sufficiently-expressive language", same as the answer can't always be "a sufficiently-smart compiler". It looks like Red is a minimal programming language, with a purpose-built DSL ("dialect") for UI programming, which handles the "standardized" part. The final result of this line of thought would seem to be that everyone should use Lisp with layers of DSLs for whatever their target functionality is. Which works great, as long as those DSLs are complete, standardized, and mostly not leaky. In the spirit of your comment, I'll let you discover for yourself why that doesn't seem to happen.

EDIT: As an aside, the Java 1.1 JVM was only about 15MB.

Re:Software Complexity Is Killing Us by ZenoArrow on Tuesday January 30, 2018 @01:48PM (#16267810)
> "Which works great, as long as those DSLs are complete, standardized, and mostly not leaky. In the spirit of your comment, I'll let you discover for yourself why that doesn't seem to happen."

Two reasons:

1. Computing is a relatively young field, and not all of the best practices have made it to the mainstream.

2. The quickest way to develop is to bolt additional code onto the side of a project rather than considering how the overall requirements for the software application may be better served by designing reusable helper functions and refactoring.

Also, I think you've dismissed Red a little too quickly. The GUI DSL is not the only factor that keeps the codebase compact. I'm using the word "compact" rather than "small" as I recognise that Red is still in its infancy, but with the word "compact" I'm trying to emphasise that Red does a lot with not a lot of code.

> "EDIT: As an aside, the Java 1.1 JVM was only about 15MB."

How big was the JCL (Java Class Library) at the same time? Also, 15MB for a VM on its own is not that impressive. Even Oracle have managed to make small (feature complete) VMs, for example:

https://blog.plan99.net/graal-truffle-134d8f28fb69

"The resulting runtimes have peak performance competitive with the best hand-tuned language-specific compilers on the market. For example, the TruffleJS engine which implements JavaScript is competitive with V8 in benchmarks."

"To give a feel for how easy it is to write these engines, TruffleJS is only about 80,000 lines of code compared to about 1.7 million for V8."

http://nirvdrum.com/2017/02/15/truffleruby-on-the-substrate-...

"The Substrate VM addresses those deficiencies by producing a static binary of a Truffle language runtime. It performs an extensive static analysis of the runtime, noting which classes and methods are used and stripping away the ones that are not. The AOT compiler then performs some up-front optimizations such as trivial method inlining and constructs the metadata necessary for Graal to perform its runtime optimizations. The final output is a version of the Truffle language interpreter fully compiled to native machine code; i.e., there is no Java bytecode anywhere. As an added benefit, the binary size is considerably smaller than the JVM’s because all the unused classes and methods are excluded."

Re:Software Complexity Is Killing Us by jdmichal on Tuesday January 30, 2018 @04:12PM (#16269067)
> How big was the JCL (Java Class Library) at the same time?

The quoted number was for the entire JRE installer:

http://www.oracle.com/technetwork/java/javasebusiness/downlo...

Re:Software Complexity Is Killing Us by eropple on Monday January 29, 2018 @07:39PM (#16261951)
Faster very frequently is one of those demands, though--be it lower latency, quicker response to failure, whatever. And "fast" is hard, and "fast" very frequently does require the development of tools, and tooling, that understands and respects that need. Which is a big reason why, when I need a user interface, I write code in React: because I'm not waiting on page blanks or writing my own partial page composition stuff. And it's why I mostly use k8s and containers when working on devops-related tooling and architecture: because it's faster and better at reacting to failure cases than something I can build myself. (This wasn't always the case, but it's gotten there now.)

Users also, for the most part, demand more correct. Not always, and not in all applications, but the tolerance for jank is going down over time. And this is a big reason why I use React and Redux: because React maps better to my understanding of how code works (namely, that extracting state to the imperative outer shell of the functional core leads to generally more correct and maintainable code) and Redux maps better to my understanding of how data works (namely, that specific and replayable transforms create manageable state). It's also a reason why I use containers: to turn the runtime environment into an "API" that is evaluated and tested in isolation from the "API consumer" that lives in the container.

We are progressively moving towards software with these demands, too, and tools are evolving to respond to them. The panic around complexity is, IME, hyperbolic; a failure to choose tools with wisdom is endemic, it's not new.

Re:Software Complexity Is Killing Us by collyw on Tuesday January 30, 2018 @04:11AM (#16263925)
The previous 3 places I have worked it has been a constant battle to get re-factoring done so that system is more maintainable. Some crappy feature was always considered more important (metrics showed a year later that the "important" features hadn't brought in any more revenue).
Re:Software Complexity Is Killing Us by Diederich on Monday January 29, 2018 @08:41PM (#16262235)
Compare the web browser you probably used to type your reply into to earlier generations of 'interface with people on the Internet' software. It does so much more.

I run Linux as my desktop, and I've been using Linux on a daily basis since the mid 90s. The amount of work that it does for its user now compared to then isn't even comparable.

How fast did this page download? Pretty fast probably. That speed happens, in no small part, because of enormously complex software running many devices between your computer and the source. Yes, hardware has gotten a lot faster, but software has gotten enormously more complex to not only keep up with the hardware, but also add and facilitate huge optimizations on top of that.

I agree that there the amount of 'useless' or low quality software is also staggering. That doesn't really surprise me, it is what it is.

And I also agree that there is a huge amount of synthetic, un-needed and artificial complexity around these days, with more being made all the time.

But I think those categories come pretty naturally, by default, from the total mass of software being created.

I guess there's a good chance that the percentage of 'good' vs. 'bad' software has always been roughly the same.

Re:Software Complexity Is Killing Us by digi_owl on Monday January 29, 2018 @10:01PM (#16262574)
> I run Linux as my desktop, and I've been using Linux on a daily basis since the mid 90s. The amount of work that it does for its user now compared to then isn't even comparable.

And here i sit, yelling at the screen any time any of those automagical daemons and signal buses break.

Because they make fixing the problem once and for all a royal pain!

And i moved away from Windows to get away from that crap.

It used to be we had software A read or write a file (optionally one in /dev), and output some results. Maybe those results were piped to another program that drew something within X11.

But now there is daemon A talking to daemon B over signal bus C, that again talk to program D over either bus C or E, or maybe even Z, that then many go on to draw something (likely just an eternally spinning widget because something got lost in the game of telephone).

Re:Software Complexity Is Killing Us by sedachv on Tuesday January 30, 2018 @02:09AM (#16263443)
> And i moved away from Windows to get away from that crap.

This is the dilemma of The Linux Desktop (pick Ubuntu, GNOME, systemd, or all of them). Things like internationalization, plug and play, network configuration, are all important to provide. Trying to provide them to the demographic of people that use Microsoft Windows ends up with solutions that resemble those of Microsoft Windows. Meanwhile power users and developers get alienated and end up implementing those things in a far more efficient and efficient to use way. Running Emacs as my X11 window manager gives me far better internationalization capabilities than GNOME. xmodmap is a better way to configure the keyboard than the GUI tools in GNOME and LXDE (no more worries about losing configuration on updates, for one). Linux web browser video playback and font antialiasing has been such a great feature that I now do half of my browsing with w3m (through emacs-w3m) with the X11 misc-fixed fonts. It is faster to connect to wireless networks using OpenBSD's ifconfig than it is to use nm-applet. The list just goes on - who even needs desktop notifications? Do all projects that try to be "user friendly," like GNOME and Ubuntu and systemd, end up being power user unfriendly?

Re:Software Complexity Is Killing Us by Diederich on Tuesday January 30, 2018 @10:48AM (#16266193)
> Do all projects that try to be "user friendly," ... end up being power user unfriendly?

Interesting question. Can you think of any examples of projects that started (roughly speaking) simple, power-user friendly but not end-user friendly that grew to become complex, power AND end-user friendly?

Re:Software Complexity Is Killing Us by lmm on Tuesday January 30, 2018 @06:38AM (#16264489)
> what made it a killer app was that it took the best of the IRC experience and made it a universal experience between devices and browsers

A post ago you were saying users didn't care about mobile apps.

> Plus it can use a company's SSO

So can IRC, so can HipChat, that wasn't the issue.

> When it first came out, it was also not very complicated. I remember when it didn't have reactions or threads, but it was a breath of fresh air after having come from using things like HipChat and Gchat, both of which were pretty dreadful.

They were dreadful in the UX department. Slack and HipChat in particular are indistinguishable at the feature level.

Re:Software Complexity Is Killing Us by watwut on Tuesday January 30, 2018 @01:42AM (#16263345)
> They don't care about Material design, fancy animations, beautiful buttons ...

Majority of those are not complex technically. While they require a lot of graphic design time, they are not that difficult to code. Software is not complex because of top bar or material design or autoplay video.