• panda_abyss@lemmy.ca
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 months ago

    I’ve been working at a small company where I own a lot of the code base.

    I got my boss to accept slower initial work that was more systemically designed, and now I can complete projects that would have taken weeks in a few days.

    The level of consistency and quality you get by building a proper foundation and doing things right has an insane payoff. And users notice too when they’re using products that work consistently and with low resources.

    • Log in | Sign up@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      2 months ago

      (I write only internal tools and I’m a team of one. We have a whole department of people working on public and customer focused stuff.)

      My boss let me spend three months with absolutely no changes to functionality or UI, just to build a better, more configurable back end with a brand new config UI, partly due to necessity (a server constraint changed), otherwise I don’t think it would have ever got off the ground as a project. No changes to master for three months, which was absolutely unheard of.

      At times it was a bit demoralising to do so much work for so long with nothing to show for it, but I knew the new back end would bring useful extras and faster, robust changes.

      The backend config ui is still in its infancy, but my boss is sooo pleased with its effect. He is used to a turnaround for simple changes of between 1 and 10 days for the last few years (the lifetime of the project), but now he’s getting used to a reply saying I’ve pushed to live between 1 and 10 minutes.

      Brand new features still take time, but now that we really understand what it needs to do after the first few years, it was enormously helpful to structure the whole thing to be much more organised around real world demands and make it considerably more automatic.

      Feels food. Feels really good.

    • Telorand@reddthat.com
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 months ago

      This is one of the things that frustrates me about my current boss. He keeps talking about some future project that uses a new codebase we’re currently writing, at which point we’ll “clean it up and see what works and what doesn’t.” Meanwhile, he complains about my code and how it’s “too Pythonic,” what with my docstrings, functions for code reuse, and type hints.

      So I secretly maintain a second codebase with better documentation and optimization.

  • IrateAnteater@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 months ago

    I think a substantial part of the problem is the employee turnover rates in the industry. It seems to be just accepted that everyone is going to jump to another company every couple years (usually due to companies not giving adequate raises). This leads to a situation where, consciously or subconsciously, noone really gives a shit about the product. Everyone does their job (and only their job, not a hint of anything extra), but they’re not going to take on major long term projects, because they’re already one foot out the door, looking for the next job. Shitty middle management of course drastically exacerbates the issue.

    I think that’s why there’s a lot of open source software that’s better than the corporate stuff. Half the time it’s just one person working on it, but they actually give a shit.

    • JustEnoughDucks@feddit.nl
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 months ago

      True, but this is a reaction to companies discarding their employees at the drop of a hat, and only for “increasing YoY profit”.

      It is a defense mechanism that has now become cultural in a huge amount of countries.

  • chunes@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 months ago

    Software has a serious “one more lane will fix traffic” problem.

    Don’t give programmers better hardware or else they will write worse software. End of.

    • BillBurBaggins@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      And you can’t even zoom into the images on mobile. Maybe it’s harder than they think if they can’t even pick their blogging site without bugs

    • squaresinger@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      They mainly show what’s possible if you

      • don’t have a deadline
      • don’t have business constantly pivoting what the project should be like, often last minute
      • don’t have to pass security testing
      • don’t have customers who constantly demand something else
      • don’t have constantly shifting priorities
      • don’t have tight budget restrictions where you have to be accountable to business for every single hour of work
      • don’t have to maintain the project for 15-20 years
      • don’t have a large project scope at all
      • don’t have a few dozen people working on it, spread over multiple teams or even multiple clusters
      • don’t have non-technical staff dictating technical implementations
      • don’t have to chase the buzzword of the day (e.g. Blockchain or AI)
      • don’t have to work on some useless project that mostly exists for political reasons
      • can work on the product as long as you want, when you want and do whatever you want while working at it

      Comparing hobby work that people do for fun with professional software and pinning the whole difference on skill is missing the point.

      The same developer might produce an amazing 64k demo in their spare time while building mass-produced garbage-level software at work. Because at work you aren’t doing what you want (or even what you can) but what you are ordered to.

      In most setups, if you deliver something that wasn’t asked for (even if it might be better) will land you in trouble if you do it repeatedly.


      In my spare time I made the Fairberry smartphone keyboard attachment and now I am working on the PEPit physiotherapy game console, so that chronically ill kids can have fun while doing their mindnumbingly monotonous daily physiotherapy routine.

      These are projects that dozens of people are using in their daily life.

      In my day job I am a glorified code monkey keeping the backend service for some customer loyalty app running. Hardly impressive.


      If an app is buggy, it’s almost always bad management decisions, not low developer skill.

  • squaresinger@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    2 months ago

    The article is very much off point.

    • Software quality wasn’t great in 2018 and then suddenly declined. Software quality has been as shit as legally possible since the dawn of (programming) time.
    • The software crisis has never ended. It has only been increasing in severity.
    • Ever since we have been trying to squeeze more programming performance out of software developers at the cost of performance.

    The main issue is the software crisis: Hardware performance follows moore’s law, developer performance is mostly constant.

    If the memory of your computer is counted in bytes without a SI-prefix and your CPU has maybe a dozen or two instructions, then it’s possible for a single human being to comprehend everything the computer is doing and to program it very close to optimally.

    The same is not possible if your computer has subsystems upon subsystems and even the keyboard controller has more power and complexity than the whole apollo programs combined.

    So to program exponentially more complex systems we would need exponentially more software developer budget. But since it’s really hard to scale software developers exponentially, we’ve been trying to use abstraction layers to hide complexity, to share and re-use work (no need for everyone to re-invent the templating engine) and to have clear boundries that allow for better cooperation.

    That was the case way before electron already. Compiled languages started the trend, languages like Java or C# deepened it, and using modern middleware and frameworks just increased it.

    OOP complains about the chain “React → Electron → Chromium → Docker → Kubernetes → VM → managed DB → API gateways”. But he doesn’t even consider that even if you run “straight on bare metal” there’s a whole stack of abstractions in between your code and the execution. Every major component inside a PC nowadays runs its own separate dedicated OS that neither the end user nor the developer of ordinary software ever sees.

    But the main issue always reverts back to the software crisis. If we had infinite developer resources we could write optimal software. But we don’t so we can’t and thus we put in abstraction layers to improve ease of use for the developers, because otherwise we would never ship anything.

    If you want to complain, complain to the mangers who don’t allocate enough resources and to the investors who don’t want to dump millions into the development of simple programs. And to the customers who aren’t ok with simple things but who want modern cutting edge everything in their programs.

    In the end it’s sadly really the case: Memory and performance gets cheaper in an exponential fashion, while developers are still mere humans and their performance stays largely constant.

    So which of these two values SHOULD we optimize for?


    The real problem in regards to software quality is not abstraction layers but “business agile” (as in “business doesn’t need to make any long term plans but can cancel or change anything at any time”) and lack of QA budget.