8 votes

Why are we so bad at software engineering?

7 comments

  1. [5]
    Micycle_the_Bichael
    Link
    This reminds me of a conversation I had a while ago with a very..... optimistic Machine Learning engineer. We got into a very heated argument because he believed that there is no reason that we...

    This reminds me of a conversation I had a while ago with a very..... optimistic Machine Learning engineer. We got into a very heated argument because he believed that there is no reason that we shouldn't be building software to replace Air Traffic Control employees at airports. His logic was that computers are much better at optimizing routes and at doing logic and calculations and, most importantly, aren't subject to fatigue like humans are. I was on the opposite side. I would never want to trust any software to make all decisions for ATC. Computers are great when there aren't many unknowns and the worst-case outcome for a bug is minimal. But, as the author mentioned, the big place where humans exceed computers is when things go off the rails. What happens when a pilot doesn't understand what the computer is telling him to do? What happens if you hit an edge case that the software wasn't built to handle? Who is responsible for keeping the software up-to-date as airports do construction, close/open gate, there are emergencies that need to be overridden. There are so many people who think tech is the solution to all problems. I, personally, fall pretty far on the other side of the spectrum: If the failure scenario is 'people could die', I want humans to be doing the actions, and computers feeding useful data to them to help make the correct decision.

    To put a little bit of a bow on my story: I think the correct solution to "ATC employees might make mistakes because they are constantly exhausted" is to properly staff airports, not to replace them with software.

    5 votes
    1. [4]
      unknown user
      Link Parent
      What do you think of self-driving cars?

      What do you think of self-driving cars?

      1. [3]
        Micycle_the_Bichael
        Link Parent
        I don't particularly like them in the world that they are going to exist in. I think there are a lot of questions about them that I haven't heard convincing answers for. I think that humanity has...

        I don't particularly like them in the world that they are going to exist in. I think there are a lot of questions about them that I haven't heard convincing answers for. I think that humanity has proven (as is the basis of this article discusses) that security will always be an afterthought. I think realistically the only way I personally can see autonomous vehicles succeeding is if every car is autonomous and creating its own version of a dynamic service mesh so all cars are making decisions knowing what other vehicles are going to do rather than each individual car making actions. I think that, while I personally hate them, drive assistance like anti-lock breaks and automatic parallel parking are fine. I think that there have been lots of things in tech that have made driving worse (navigation apps and Uber/Lyft being the biggest two), which again could be solved if these services were communicating and aware of each other but since profits don't benefit you to share data with competitors we won't ever see the ideal outcomes.

        Note: While I have said that basically creating a monopoly where all cars/users are aware of each other fixes the service problems, I still have moral issues with monopolies, which is why I am not a fan of the tech as a whole; because I can't see a way forward without (what I consider to be) unacceptable trade-offs.

        Source: Spent a summer developing for autonomous vehicles, still in conversations with some peers who are in the space.

        Edit: added a source.

        5 votes
        1. [2]
          unknown user
          Link Parent
          That's not a monopoly. I'd argue that it's the opposite of a monopoly, if done right: it's, to put it in the hip term, a federated network.

          While I have said that basically creating a monopoly where all cars/users are aware of each other fixes the service problems

          That's not a monopoly. I'd argue that it's the opposite of a monopoly, if done right: it's, to put it in the hip term, a federated network.

          3 votes
          1. Micycle_the_Bichael
            Link Parent
            You're right, monopoly isn't the right word. I think it would be a federated network no matter what. Then there is just the question of how that federated network is used by the companies, is it...

            You're right, monopoly isn't the right word. I think it would be a federated network no matter what. Then there is just the question of how that federated network is used by the companies, is it to benefit the consumer or themselves.

            2 votes
  2. mat
    Link
    Same old same old it's been in any sort of engineering forever: "Good, cheap, fast - choose two." Also, and entirely anecdotally, only about 20% of the programmers I've ever worked with are any...

    Same old same old it's been in any sort of engineering forever: "Good, cheap, fast - choose two."

    Also, and entirely anecdotally, only about 20% of the programmers I've ever worked with are any good, and only about 20% of the good ones are good enough that I can say "can you sort out X?" with no further oversight or guidance. I'm not sure where I fall in other people's assessments, although obviously I'd like to think the final group.

    But the point is that really good programmers are rare and unless you (a) get lucky or (b) spend enough to be sure, there's a decent chance you'll get someone a bit crap on your project. They'll probably make something which mostly does the job, and if you're lucky their mistakes won't have an impact other than maybe things running slower than they could be (easily solved with more hardware) but then sometimes the system will fuck up completely or leak private data or whatever.

    I suspect this is true in other engineering fields as well, but given the tendency of say, construction, to overbuild, it matters rather less. If your bridge is only 75% as well built as it could be, but the spec is for a bridge 50% stronger than it needs to be, nobody will notice and it doesn't matter.

    3 votes
  3. spit-evil-olive-tips
    Link
    (but we're really bad at it / not willing to spend enough time & money to do it correctly, when the consequences of failure actually matter)

    We’re decent at building software when the consequences of failure are unimportant

    (but we're really bad at it / not willing to spend enough time & money to do it correctly, when the consequences of failure actually matter)

    2 votes