We have used too many levels of abstractions and now the future looks bleak (unixsheikh.com)
from agilob@programming.dev to programming@programming.dev on 23 Oct 2023 10:00
https://programming.dev/post/4795485

#programming

threaded - newest

root@socialmedia.fail on 24 Oct 2023 05:11 next collapse

The only problem that can’t be solved by adding a layer of abstraction - too many layers of abstraction.

MajorHavoc@lemmy.world on 24 Oct 2023 13:42 collapse

But maybe that is only because we haven’t tried an AbstractionAppletFactoryFactory pattern, though? /s

burnso@lemmy.world on 24 Oct 2023 06:49 next collapse

Then teach us. Advocate for us. Help us improve and understand.

A very large part of the problem is that the people who are knowledgeable are often the ones that bought into the whole lone wolf coder shtick.

Most junior people I work with are interested and want to learn, but between high demands, no time to do it and senior devs who focus only on their own problems - it’s very hard to know how to learn and improve.

We can and need to solve this but it requires that we work together and actually sit down to bridge the knowledge gap.

lysdexic@programming.dev on 24 Oct 2023 12:01 next collapse

A very large part of the problem is that the people who are knowledgeable are often the ones that bought into the whole lone wolf coder shtick.

I’d add that a large part of the problem is that we have people complaining about perceived problems without being able to present any kind of solution.

Redkey@programming.dev on 24 Oct 2023 14:07 collapse

I think a part of it is how we look for information in the first place. If you search/ask “How do I do (task) in (environment)?”, you’re going to find out about various libraries/frameworks/whatever that abstract everything away for you. But if you instead look for information on “How do I do (task)?”, you’ll probably get more generalized information that you can take and use to write your own stuff from scratch. Try only to look for help related to your specific environment/language when you have a specific implementation issue, like how to access a file or get user input.

We also need a willingness to learn how things actually work. I see quite a few folks who seem to be so worried that they’ll never be able to understand some task that they unwittingly spend almost as much or even more time and effort learning all the ins and outs of someone else’s codebase as a way to avoid what they see as the scarier unknown.

Fortunately, I’ve seen an increase in the last year or two of people deliberately giving answers or writing tutorials that are “no-/low-library”, for people who want to know what’s actually going on in their programs.

I would never say to avoid all libraries or frameworks, because many of them are well-written (small, modular, stable) and can save us a lot of boilerplate coding. But there are at least as many libraries which suffer from “kitchen-sinkism”, where the authors want so much for their library to become the pre-eminent choice that it becomes a bloated tangle, trying to be all things to all people. This can be compounded by less-experienced coders including multiple huge libraries in one program, using only a fraction of each library’s features without realizing that there’s almost complete overlap. The cherry on top is when the end developer uses one of these libraries to do just one or two small tasks that could’ve been done in less than a dozen lines of standard code, if only someone had told them how, instead of sending them off to install yet another library.

cabbage@programming.dev on 24 Oct 2023 07:43 next collapse

Interesting observation on the current trajectory of the software development environment

What do you think about the increased usage of AI to help developers code? I feel like AI is another step into the abstraction swamp

0xD@infosec.pub on 25 Oct 2023 11:39 collapse

This AI stuff is annoying me. I don’t work in development - I’m a pentester and recently had to work on some scripts with a colleague.

He is a few years my senior and basically completely relies on ChatGPT for simple string matching and splitting in bash. I could not believe my eyes. He got ChatGPT to spit out a command that didn’t work exactly as we needed it to because it was looking for the wrong string. It was a really simple fix but he again had to ask ChatGPT for how to fix it, until I was like “let me do it”.

It’s not that he’s dumb or anything, but I feel like he just grew completely lazy from that and doesn’t even want to think anymore. Later on he was troubleshooting the same script for a few hours until he noticed that ChatGPT output messed up the order of lines and tried to access a variable that was only declared in the next line.

I think ChatGPT and whatever else are really useful tools, but people tend to use them as shortcuts to learning instead of getting things done quicker. That is in everyone’s own responsibility - I just have the hunch that my job will get way more interesting with a new generation of incompetent developers 😁

MajorHavoc@lemmy.world on 24 Oct 2023 13:45 next collapse

A big percentage of so-called experts today only know how to configure some kind of hype-tool, but they understand nothing about how things work at the deeper level. This is a real challenge and a big problem for the future.

“Don’t worry about it. Large Language Models are going to fix it.” - Some CEO, probably.

Edit: This is the bit that so few people outside the profession understand: I’m not being paid to write it, I’m being paid to try to understand it enough to change it safely.

Most of the time I don’t understand it well quite enough*, and chaos ensues. I would worry more about that, except that it turns out my paycheck clears either way, most of the time.

  • Disclaimer: I’m a genius, but I wasn’t there when their special snowflake software was written.
benjhm@sopuli.xyz on 24 Oct 2023 17:17 next collapse

I develop an interactive climate / future scenario model, now in scala, earlier in java, almost no dependencies. No visualisation frameworks - the diverse plots hand coded in scala (transpiles using scala.js, makes SVGs on demand). The science code from demography through economy emissions, bioegeochemistry, to climate - just scala, no interface to other languages / models, no “solver” tool. Data input just text files -easy to check. Some modules over 20 years old (except converted java -> scala), still work reliably. It’s efficient as all client-side, no IO/net between adjustments and results. Seems no big institute would employ me for such model dev because my experience doesn’t tick the boxes of all the current fashionable frameworks. But at least I can share a way to explore the future for ourselves … and yes it’s bleak but not so dire as many people here seem to assume, we still have choices.

UFODivebomb@programming.dev on 24 Oct 2023 20:35 collapse

One choice I think you’ve nicely demonstrated: the choice of a solid base and not choosing to add dependencies.

Choosing not to do something can be hard.

Also double points for having a sustainable software project that helps with environmental sustainability. Really walking the walk haha

0xD@infosec.pub on 25 Oct 2023 11:30 next collapse

More like sprinting the sprint!

benjhm@sopuli.xyz on 03 Dec 2023 22:20 collapse

Hi, thanks for the encouragement, delayed response due focusing on the code, and a related conference, and now trying to keep up with the COP. As it happens, the “ratchet” system of pledges created in Paris (COP21) is an iterative algorithm - start with wild guesses and gradually improve them by feedback - this made sense given the weaknesses of diplomacy, but it’s hard to summarise this mess with neat code in a compact model.

mrkite@programming.dev on 24 Oct 2023 21:39 next collapse

I’m off two minds. On the one side, there is far too much reliance on black box libraries to do trivial things.

On the other, this complaint is decades old. Back in the late 80s there was a software developer for the apple iigs called FTA, which stood for Free Tools Association. They claimed that the tools in the os were too slow and you should code to the raw hardware.

TCB13@lemmy.world on 25 Oct 2023 09:51 next collapse

Totally agree with the article.

Nowadays those companies are all about re-creating and reconfiguring the way people develop software so everyone will be hostage of their platforms. We see this in everything now Docker/DockerHub/Kubernetes and GitHub actions were the first sign of this cancer.

We now have a generation of developers that doesn’t understand the basic of their tech stack, about networking, about DNS, about how to deploy a simple thing into a server that doesn’t use some Docker BS or isn’t a 3rd party cloud xyz deploy-from-github service.

The “experts” who work in consulting companies are part of this as they usually don’t even know how to do things without the property solutions. Let me give you an example, once I had to work with E&Y, one of those big consulting companies, and I realized some awkward things while having conversations with both low level employees and partners / middle management, they weren’t aware that there are alternatives most of the time. A manager of a digital transformation and cloud solutions team that started his career E&Y, wasn’t aware that there was open-source alternatives to Google Workplace and Microsoft 365 for e-mail. I probed a TON around that and the guy, a software engineer with an university degree, didn’t even know that was Postfix was and the history of email.

apd@programming.dev on 25 Oct 2023 16:56 collapse

Postfix wasn’t in my university degree, nor do I think it should be. It’s useful to know about SMTP but it’s like saying you need to know the history of brick manufacturing to be a material engineer.

TCB13@lemmy.world on 25 Oct 2023 19:22 collapse

Yeah sure, unless you’re propagating lies and shitting on everything and everyone that doesn’t fit/is your run of the mill proprietary solution that might give a bunch of $$ to your company at the expense of the customer ability to have a future.

Administrator@lemm.ee on 27 Oct 2023 18:31 collapse

This article really hit the spot. On the other hand, nowadays development is accessible to everyone and it’s really easy to learn development because of the ever growing amount of tools and frameworks. As a result, anybody can become a developer, maybe with superficial knowledge, but if you can make something work, you might be good enough for a company to hire you. However, as a software engineer, I am disappointed of this trend