[HN Gopher] "I hate almost all software" - Ryan Dahl (2011)
       ___________________________________________________________________
        
       "I hate almost all software" - Ryan Dahl (2011)
        
       Author : avinassh
       Score  : 62 points
       Date   : 2021-08-14 15:54 UTC (7 hours ago)
        
 (HTM) web link (tinyclouds.org)
 (TXT) w3m dump (tinyclouds.org)
        
       | slmjkdbtl wrote:
       | My solution to this problem (for personal goals not collective)
       | is spend time and build tools, abstractions and interfaces that
       | make myself happy, to a point where when I'm building actual
       | content I only interface with interfaces designed by myself.
        
       | nine_zeros wrote:
       | This is me. I've gone all the way from low level C programming to
       | frontend. There is so much arcane information to keep in mind to
       | keep yourself productive. And today's companies require you to
       | handle politics as well, under the guise of ownership.
       | 
       | Amazingly, software engineers just refuse to standardize and move
       | ahead. Instead, reinventing the wheel is far too common.
       | Reinvention is necessary but sometimes, good enough is good
       | enough. Most engineering disciplines work on the standardization
       | principle, which improves productivity and predictability.
       | 
       | That said, companies and customers don't care about the
       | underlying software, so I'm not going to waste my time on arcane
       | knowledge either.
        
       | [deleted]
        
       | diskzero wrote:
       | Comments from a previous appearance here:
       | https://news.ycombinator.com/item?id=3055154
        
       | brazzy wrote:
       | > The amount of complexity I'm willing to tolerate is
       | proportional to the size of the problem being solved.
       | 
       | First, most of the time you don't even _understand_ the problem
       | well enough to know its size.
       | 
       | And second, complexity quite naturally increases with (at least)
       | the square of the problem size because not only are there more
       | things, each of them can potentially interact with every single
       | other one. With great skill and effort you can reduce that
       | exponent below 2, but actually reaching 1 is pretty much
       | impossible.
       | 
       | Thus software is going to remain intolerable to Ryan for the
       | foreseeable future.
        
         | djrobstep wrote:
         | This argument always strikes me as a cop out. Software is bad
         | due to historical accidents, cultural factors, and short term
         | economic incentives, not irreducible mathematical complexity.
        
           | bluepizza wrote:
           | Not quite sure. Nobody says that rocket science is
           | unnecessarily complex, and that it should be solved with
           | simple math.
           | 
           | I am waiting for the application of the proposed solutions
           | for software complexity. I have been for a long time. Nobody
           | really came up with anything, even though many have
           | complained about it.
        
           | PaulHoule wrote:
           | There's a deep principle, I think, that required backwards
           | compatibility eliminates the possibility of needed reform.
           | 
           | One could imagine a "bloat free" OS that eliminates the
           | overhead of the paging MMU and has rationalized APIs and does
           | everything differently.
           | 
           | But you need a userspace and you're going to want to run
           | (say) vi as a text editor and you need a shell so you get zsh
           | to run, and you want "grep" and "awk", etc.
           | 
           | So you have to emulate the old API and in the process of
           | doing that all the old bloat goes back in...
        
           | tenaciousDaniel wrote:
           | My interpretation of the above comment isn't that software
           | will always be "bad", more that software will never be
           | perfect. If software _were_ perfect, then it would scale 1:1
           | with the complexity of the problem at hand (no matter how you
           | define it). No human is perfect; humans write software;
           | therefore software will be imperfect.
        
         | slmjkdbtl wrote:
         | This notion confuses me, what is the "size" of a problem, is it
         | not exactly the complexity? Or do they mean the importance of
         | the problem in the application context.
        
       | robertlagrant wrote:
       | > The only thing that matters in software is the experience of
       | the user.
       | 
       | I'm sure the users of Horizon had a great experience with it
       | while they figured out who to fire. Those who were unjustly let
       | go may have also wanted to matter to the software creators!
        
       | PaulHoule wrote:
       | It's a mistake to have nostalgia for UNIX. There are many things
       | it didn't do right and has never done right.
       | 
       | For instance signals don't make sense for many of the things
       | they're used for.
       | 
       | I was highly satisfied with X Windows in 1993 compared to Windows
       | 3.1 but it seems Windows has gotten better over time but the
       | Linux desktop has gone in reverse and I can date it to the
       | introduction of KDE and the very idea that Linux has to have a
       | "Desktop Environment" as opposed to just "X Windows". (The very
       | idea that you should allocate enough space for what you're going
       | to draw in the space seems absolutely foreign to everybody
       | involved.)
        
       | salawat wrote:
       | Oh my God. I've become this guy.
       | 
       | I simply do not give a shit about whatever the latest opinionated
       | framework/tech of the week is. All I've gotten to is the point
       | where what I really care about is "Can I fit all the necessary
       | bits and bobs in my head?" The rest is just branding, mind share,
       | and the cult of complexity.
       | 
       | Example: Yarn I finally figured out why I hate it. It tries to
       | "help" you optimize your runtime namespace via hoisting. Causing
       | higher level builds to create a distinctly different runtime
       | footprint via hoisting than running each of the lower level
       | builds individually.
       | 
       | What. The. Heck. Who wants to inflict that on a user? I don't use
       | a computer to do things in ways where I have to go through the
       | torment of cataloging every bad assumption at every level. I'll
       | take more pessimum, but easier track the reality of over more
       | optimum, yet opaque any day.
        
         | saurik wrote:
         | What we need to figure out how to do is to inoculate new
         | developers against ever caring about the latest "opinionated
         | framework/tech of the week" in the first place :(.
        
           | beckman466 wrote:
           | > What we need to figure out how to do is to inoculate new
           | developers against ever caring about the latest "opinionated
           | framework/tech of the week"
           | 
           | Capital dictates what tech is popular, not actual popularity
           | or effectiveness. So abolishing Silicon Valley and the global
           | north IP regime is the only strategy that cuts at the root of
           | this problem.
        
             | sudosysgen wrote:
             | Ultimately, yes, but good luck ending IP imperialism. It
             | would force the global north to actually build what it's
             | consuming instead of extracting rents from intellectual
             | property. That won't happen.
        
           | danellis wrote:
           | Not making a thousand new "Top 10 Frameworks to Learn in
           | 2021" videos every week would be a good start.
        
           | andrekandre wrote:
           | probably there are two or three aspects
           | 
           | 1. most of these things are the "new old thing", and more
           | experience/education/history would dampen enthusiasm for
           | these re-hashes of old ideas
           | 
           | 2. alot of people/tech is on a revenue treadmill (especially
           | consultants and companies that want to market the new
           | hotness) so we get bombarded with reinventions of the "flat
           | tire"... its like junkfoods with new packaging NEW FLAVOUR!
           | we keep falling for it...
           | 
           | 3. our jobs as coders can be boring and we look for new toys
           | for stimulation and make things interesting again... if only
           | for a little while...
        
         | WorldPeas wrote:
         | same here. if only someone would create a computer from the
         | bottom up rather than accept our current state of immense
         | hubris
        
           | ironmagma wrote:
           | The problem there is that reinventing decades-old technology
           | while believing one can simply shrug off uncounted millions
           | of hours of technical problems and troubleshooting by doing
           | so is in fact extreme hubris. Keeping the existing stack is
           | much more humble.
        
         | ironmagma wrote:
         | FWIW, the new (2+) Yarn does not use hoisting, and you can
         | disable it on Yarn v1 as well via nohoist:
         | https://classic.yarnpkg.com/blog/2018/02/15/nohoist/
        
       | jimbob45 wrote:
       | I get where he's coming from. I'm guessing everyone here has had
       | a script they wrote for five people balloon into a multi-team
       | project. People wonder why you, the original author, were so lazy
       | with your architecture even though you thought it wasn't going to
       | survive more than a week.
       | 
       | The problem is that people aren't willing to start over and
       | rewrite software so you end up trying to bolt on features to an
       | architecture that can't handle them and the complexity becomes
       | _necessary_ for the software to function. C++ is the poster child
       | for this, where the syntax for pure virtual functions is asinine
       | but necessary because there was no other good way to do it at the
       | time. If they had just rewritten C++ (and called it, I dunno, D
       | for example) then they would avoid the complexity entirely.
       | 
       | I respect Ryan but he comes across as someone ignorant of the
       | realities of real-world SWE.
        
         | sseagull wrote:
         | > The problem is that people aren't willing to start over and
         | rewrite software
         | 
         | If I had to continuously re-write projects in new languages, I
         | would never get anything done. There are a lot of projects that
         | we all depend on that are pretty much one-person projects, and
         | not everyone has time to learn a new language + ecosystem, then
         | re-write, introduce new bugs, fix those, etc.
         | 
         | Then of course, the rewrite doesn't always have exactly the
         | same interface (API or user interface). So now you foist your
         | new preference on everyone else. Many of them will stay on the
         | old version, thus fragmenting everything even further. Look how
         | long python 2 to 3 took (and is still not 100% complete).
         | 
         | I come from scientific computing, and I have a rant bubbling up
         | about how modern software development is being pushed into
         | science, and probably slowing it down as a result.
         | 
         | I should make a blog post about it, but I guess I would need to
         | make a blog first :)
        
       | causality0 wrote:
       | Remember back when websites were organized according to a
       | hierarchy and if you wanted to find, say, all the reviews of MP3
       | players you just clicked on the MP3 player section and saw them
       | all? Now you have to punch terms into a search box and sort
       | through a massive unorganized list of results, only some of which
       | are relevant. If you missed something you'll never know about it.
        
       | [deleted]
        
       | bern4444 wrote:
       | I had a fun conversation with my brother the other day. He was
       | working on an R script (given to him by his lab) to perform some
       | data collection. The script was no longer usable and he had to
       | rewrite some parts. He was annoyed.
       | 
       | Most of the time, software is written until it works just well
       | enough to be just reliable enough to deliver value. And then
       | abandoned. Engineers move on to solving the next problem using
       | that previous bit. We only go back and edit that previous bit
       | once we get to a point that the new thing becomes limited by that
       | previous bit. That is to say, once we encounter a fundamental
       | issue of the old bit.
       | 
       | We can't write 'perfect' code today to build on in the future. We
       | have no way of knowing what will be built on top until it's
       | built! At which point we discover the fatal flaws. And then go
       | back and rewrite. Or design a new language/framework/tool etc
       | that avoids those issues. So of course this is the pattern.
       | 
       | Separately, engineer's have become end consumers for software.
       | And that software is produced by other engineers, who, are also
       | using software.
       | 
       | End consumers may not care about how software is made (though
       | some certainly do, especially once they notice bugs, degraded
       | performance etc caused by technology decisions etc - see
       | 1Password's plan to switch to Electron).
       | 
       | But what's the alternative? How could we otherwise avoid this and
       | all the other problems Ryan points out. What is the alternative?
       | Endless rewrites of existing layers with no progress made?
       | 
       | Editor configurations, file structure, variable names etc don't
       | affect end users. But they help engineers who help end users.
       | 
       | Lots of progress is made to 'simplify' processes. But of course,
       | those simplifications create their own new things that have to be
       | learned, along with their own issues. And those new things are
       | usually built on those old bits.
       | 
       | It's easy to download a docker image today and with a single
       | command spin up a React project, running its own databases, and
       | express server and not have to worry about configuring paths,
       | installing dependencies (the right way), configuring ports etc.
       | 
       | But now we have to know about Docker. And Docker itself is built
       | on those old bits.
       | 
       | If there's a better solution (besides the pedantic write perfect
       | code) I don't see it. But I'm all ears.
        
         | 6510 wrote:
         | > We can't write 'perfect' code today to build on in the
         | future. We have no way of knowing what will be built on top
         | until it's built!
         | 
         | We have a very good idea what will be built on top compared
         | with the idea we had 20, 40, 60 years ago.
         | 
         | At some point we will just have to start from scratch..
         | again... and again. The frequency will decline tho.
        
       | mathgladiator wrote:
       | There is one more level where you hate everything, but then
       | embrace loving the people that make shit.
       | 
       | I bought a new truck, and after putting 100 miles on it the
       | transmission started acting strange. I take it in, and they don't
       | know what is wrong with it. So, they are going to replace the
       | entire transmission next week.
       | 
       | Now, I could say "oh, why did I buy that brand" or be like "lolz,
       | these people are n00bs". Instead, I realize that they are making
       | something at a massive scale and bad things will happen, so I'll
       | accept the inconvenience and move on with my life. Shit happens,
       | and that's life.
       | 
       | I've hated software for a long time because I value precision and
       | reliability, but these are exceptionally hard to scale
       | organizationally. Suppose you fix reliability today, well
       | tomorrow's feature could just fuck it up.
       | 
       | Now, I still hate software, but I come at with a mindset that
       | software is an artifact of a culture which requires nurturing and
       | love.
        
         | runawaybottle wrote:
         | The melancholy is like that of living in a burgeoning third
         | world city. It's like, if we just focus on this and that, roads
         | and water, keep corruption down, we'd have one of the best
         | cities in the world - as good any other. Our people are good,
         | but sometimes they can't make sense of traffic laws and crime.
         | 
         | It's the only city I know, and I often wonder if we just took
         | care of it, where we'd be.
        
       ___________________________________________________________________
       (page generated 2021-08-14 23:00 UTC)