this post was submitted on 18 Feb 2024
30 points (76.8% liked)
Programming
17507 readers
9 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
As a professional C# developer since 2012, I’d say a programmer needs four kinds of knowledge. As an organizational user of Github Copilot for a couple months, I’d say AI tools can help with one, maybe two of those.
Understanding language and syntax, so you can communicate the ideas in your head to the machine accurately: AI is fairly good at this, will certainly get a lot better.
Understanding algorithms and data structures, well enough to compare and contrast, and choose the most appropriate ones for each circumstance: AI can randomly select something, unless it’s a frequently solved problem. I don’t expect this to get better except for the most repetitive of coding tasks.
Understanding your execution environment and adapting your solutions to use it well: I don’t see the current generation of AI tools ever approaching this. I don’t think they have context for how a piece of code is used, when trying to learn from it. One size fits all is not a great approach.
Understanding your customer’s needs and specific problems, and creating products, not code. Problem domains and solutions are a business’s entire reason for existence. This is all kept confidential (and outside the reach of an AI training data set) for competitive reasons. As a human employee, you get to peek behind the curtain and learn these things yourself.
I'll add that one of the biggest hurdles/flaws to the fundamental architecture of the design of AI is their inability to reapply a specific use case in a slightly different scenario.
This was a flaw that came out of self driving development and, as far as I understand, plays a major role in why the hype on it died off really fast. Adding more to the model can't fix that flaw.
Well, look at 99% of business software. It's always the same.
"Tech" in the sense of FAANG and so on isn't that large of an employer worldwide and even within them, a significant portion is regular old business software. Billing hours in AWS and billing phone calls isn't that different.
I'd argue, if an AI could create a form and transform that data into a given schema to push somewhere, 20% of all developers will need a new job.
And those jobs are critical to the process of making new developers.
An important part of my education - the part that grad school can’t teach you, you have to learn it on the job - was being new and terrible, grinding on a simple problem and feeling like a waste of money. Any of the experienced guys sitting behind me could have done this thing in a few hours but I’ve been working on it for a week. “What’s the point? Any minute now they’re going to tap me on the shoulder and tell me I’m done, it’s time to go find another job.”
But that never happened.
Those early problems weren’t fun. At home I would have never chosen to work on them. I’d leave them for someone else. “But now that I’m collecting a paycheck for it, this isn’t up to me. I have to work on it. I can’t give up. I can ask for help, but I need to show my peers that I belong. I can solve difficult problems. I can persevere.”
As a mediocre professional developer, I had to struggle to learn that. I wasn’t getting far on my own, without mentorship and motivation. Homework, pursuing degrees, wasn’t getting me there. (And even now, I seem to have about two weeks of attention span, for projects at home.)
Those jobs, or better, this kind of task, won't go away. It will just become different.
Think about how completely different our modern development looks compared to, say, the 80s. Nobody writes assembly anymore, so nobody learns the basics! Nobody reads the manual anymore, instead we use autocomplete and Google. Remembering the arcane runes of C used to be exactly the kind of "hazing grunt work" you're talking about. That skill used to be valuable, but who of us can honestly say to remember more than a handful of nontrivial method signatures?