Tech Tuesday: Cain Edition

Michael Cain

Michael is a systems analyst, with a taste for obscure applied math. He's interested in energy supplies, the urban/rural divide, regional political differences in the US, and map-like things. Bicycling, and fencing (with swords, that is) act as stress relief.

Related Post Roulette

12 Responses

  1. Doctor Jay says:

    S02: The thing is, software turns out to be hard. There are tons of failed software projects in the private sector, too. It’s just that nobody hears about them. Software is slow and hence expensive, and can spend an eternity in “almost good enough”.Report

    • Oscar Gordon in reply to Doctor Jay says:

      All true, but man, government driven software products are really bad.

      Even the good stuff, like some of the research code that NASA and the various national labs produce, would never make it outside the lab without a lot of additional work (it’s good stuff because it was never meant to be used outside the lab it was created in). And IMHO the reason those products are a cut above is because they are research driven, and not driven by organizational needs.Report

      • Morat20 in reply to Oscar Gordon says:

        It’s a combination of lots of things. Near retirement managers and contracting boards that don’t trust anything but waterfall models. Plenty of “never fail” projects with incredibly strict requirements and QA suites required to pass code. A generalized “resetting” of the new hotness* (and thus abandonment, defending, or lowered funding) for projects after a year or three.

        As an example, since the Shuttle retired, NASA has been told the new goal is the Moon, Mars, the Moon again, Mars again, and possibly the Moon again. They’ve had alaunch vehicle get halfway developed them defunded, then a new one funded again, that didn’t have the same specs. Re-engineering, redesign, and such is expensive as hell. It plays hell with software development cycles when someone retasks your software 18 months in, then does it again two years later.

        I can speak from personal experience that said “funding priorities” led to the collapse of a large-scale, multi-year software project. It was cut because it was “over budget” and “over time” — things it was because Congress shifted priorities, causing the agency in question to change multiple, critical milestones mid-way through a development cycle. They tossed out 9 months of work, and wondered why the project was then 9 months behind. And cost, well, 9 months worth of work more.

        But having worked private sector — there’s a lot of abandoned, broken, or tossed aside projects there too — and for basically the same reasons.

        Effectively, if your company isn’t “software focused” — and government isn’t, fortune 500 companies aren’t, etc — then you’ll find upper management, the board, Congress, whatever — tends to make the same mistakes. Overly optimistic design goals, overly optimistic timelines, insistence on counter-productive design methods, habitually changing focus and funding levels, tossing out experienced coders in favor of cheaper ones, and basically dicking around with the job and then giving it up as a bad idea.

        If you’re designing a car and halfway through the process, as you’ve got fabbed prototypes out and in testing, and someone says “We changed our mind, we want a plane” then everyone understands “Okay, all that previous money? Wasted. We’re gonna have to start over”. They don’t seem to understand that about software. “Just program on some wings, it’ll be fine”.Report

    • Burt Likko in reply to Doctor Jay says:

      It was just this morning I listened to the Planet Money podcast about the ACH system, which is partially administered by a consortium of banks and partially administered by the Federal Reserve. It’s the reason that you can transfer money from bank to bank so easily and quickly.

      “Easily and quickly?” you say? “It takes three to five business days to make a transfer like that happen! That’s not ‘quickly’.” And you’re right. But what you don’t understand is that every bank processes those transfers in once-daily batches sent to the clearinghouse, maintained at an undisclosed location, where they are still using reel-to-reel magnetic tapes with each transaction coded in COBOL. 45 years ago, this was revolutionary and it seemed lightning-fast.

      From what I can gather, the system can’t be upgraded because no one knows COBOL anymore and no one dares eff around with the coding.Report

      • Oscar Gordon in reply to Burt Likko says:

        Plenty of folks know COBOL, it’s just that no one wants to pay them what they’d demand for their efforts.

        From what I can see, there are a lot of alternate money transfer system ups and running, the banking system may just be waiting for something to come along that they can use as a wholesale replacement.Report

      • When I was on the state legislature’s budget staff, so had license to poke my nose into things on at least a limited basis, when I encountered really old software systems, my first set of questions looked like: (1) Is the system well documented? (2) Are all of the external interfaces known and specified? (3) Is all the source code available? Stuff disappears over the years, and the more that’s missing the more difficult it is to replace (or modify) a system.

        I had to do lots of little talks/presentations about the back end of the state’s public assistance management system and the ongoing spending it required. One of the things I did often was to start down the list of interfaces that the system had to meet, and how often they changed: (a) it had Medicaid data, so had to be HIPAA compliant; (b) it had to receive all the data from the Social Security Administration (who seemed to delight in making arbitrary changes from time to time); (c) it had to request and receive all the IRS data; (d) it had to conform to the Dept of Ag’s real-time audit interface for food stamps (now SNAP); (e) the Centers for Medicare and Medicaid required yet another interface. At least we didn’t have to deal with the Dept of Labor and unemployment insurance on the same system; that had to run on its own dedicated stuff.Report

        • Morat20 in reply to Michael Cain says:

          When I was on the state legislature’s budget staff, so had license to poke my nose into things on at least a limited basis, when I encountered really old software systems, my first set of questions looked like: (1) Is the system well documented? (2) Are all of the external interfaces known and specified? (3) Is all the source code available? Stuff disappears over the years, and the more that’s missing the more difficult it is to replace (or modify) a system.

          I’d bet my bottom dollar that the answers were generally “There’s comments and a manual” and “Not really, maybe in the code” and “We have most of the source code, although the comments are kind of useless now that we look closely at it”. I mean, most of the code. A few dll sources are missing, but it’s probably easy to guess what sltFilt.dll does.

          The only ones with full requirements and documentation tend to be the over-engineered ones built using waterfall development. Most actual production code is a mess of poor variable names, random comments, hacky bug fixes, and only the most common requirements are known — with the other ones (often critical, core things) hidden away in the memories of someone who left the company 10 years ago, leaving only a sparse readme file and who constantly claimed the code was “self-documenting”*.

          (“What do you mean you don’t understand what *pLongFlagBug1995 is? It’s clear from the variable name? And obviously the function JumbInterHash2()’s purpose is clear from the name!)Report

  2. Michael Cain says:

    So, is everyone getting two copies of the EELT image? WordPress strikes again…Report

  3. Lyle says:

    this link to an MIT Technology review article suggests that it is possible as at least one company is planning to cell them: https://www.technologyreview.com/s/518516/an-inexpensive-fuel-cell-generator/ It runs on natural gas, propane or diesel. Note that because propane does not spoil like gasoline it is an ideal fuel to run generators, and you can get tanks that would let you run a long time. (might just upsize the propane tank one size to handle the new load.Report

  4. Oscar Gordon says:

    Morat20: If you’re designing a car and halfway through the process, as you’ve got fabbed prototypes out and in testing, and someone says “We changed our mind, we want a plane” then everyone understands “Okay, all that previous money? Wasted. We’re gonna have to start over”. They don’t seem to understand that about software. “Just program on some wings, it’ll be fine”.

    I can only guess it’s because people have been ‘building’ things from childhood. We get an inherent sense of how things are constructed, so you know you can’t make changes that would impact the foundational structure without changing the foundation. But for our parents, and even large swath of our generation, software is still seen as more of a creative endeavor, like writing a paper, or drawing a picture. Sure, there is some work in adding another paragraph or two, or adding something else to the image, but it’s not like you have to wipe out and redo whole sections.

    The don’t grok the structure that exists in the code. Our kids will probably be better at this.Report