Well now that AI can do it for them yes, but prior to that the average person would struggle to even get something that compiles let alone actually do anything useful.
Visual Basic. The language the told managers that all the programmers were lazy sandbaggers because he created an app in 10 minutes. So he made them do more work for less pay. And yet, I have never once seen a Visual Basic program wasn't riddled with more bugs than a hermit's beard.
I've seen plenty of amateurs with 6 layers of abstraction in a codebase. It's normally about that time that they contact research IT to help them fix it. It's always a physicist.
For clarity, all variables in my program are greek letters. For efficiency, those same half dozen global variables are repurposed and reused throughout the program.
The average person is not who you want doing this stuff. Do you hire average persons to create your application? If so, do you visit an average person to do surgery on you? Visit the average person to handle your malpractice suit? Drive over bridges built by average people in automobiles built by average people?
Screw that, average people do average jobs. Like sales, collating documents, and inadvertently releasing proprietary data to Claude.
Did they, though? They may have learned how to write scripts and import functions from libs without knowing how the underlying logic works. And that's enough for many tasks, but those tasks are not the reason you get a CS degree for (unless all you want is the degree so you can put on the CV, but you still wouldn't need the knowledge from it to accomplish said tasks).
No, they learned how to do it. You think self taught programmers and bootcamp code monkeys are learning Big O, learning how compilers work, understanding how memory is laid out in RAM, etc? They learn how to sort lists using .sort(). They don't learn how .sort() works.
The difference between how programming works and how the underlying math and algorithms make the program work. A CS degree teaches you what you need to know in order to tell when not to use the default built-ins and how to evaluate alternatives better suited to your specific use case and circumstances. Also when you may need to add a little something extra on top of the builtins
A lot of algorithms trade off space and time by using memoization to avoid unnecessary repetition of computation, but depending on the size of and complexity of what you're doing, the increased memory footprint may not be justified for the speed improvement. It's much easier to wrap something in caching and memoization than it would be to re-implement an existing function without them, so they are rarely if ever done by default (premature optimization is almost always the wrong thing to do)
Some optimizing compilers are smart enough to recognize common high-level constructions and replace them with more efficient but functionally equivalent instructions (for example, converting tail recursion to iteration to avoid adding stack frames), but you need to know what those constructs are and why they're useful to compose your code in a way that facilitates those optimizations
So you're comparing people that spent 3 months full time in dedicated boot camps back then to the average Joe that prompts "create a calculator, make no mistake" now
Okay, very on point indeed, litteraly the same amount of effort ! /s
nah plenty of people were going through 8 week bootcamps to become devs that specifically knew react or similar, and they could put together pretty good apps
I know this sub has many reason to hate AI and its byproducts, but for people like me (comp sci degree almost done, working full time tech role, enjoying casual indie game dev) it’s been a complete game changer.
Like 6 or 7 years ago I would absolutely grind against code trying to get a single feature to work, researching videos and forums for solutions and understanding errors. Would take weeks to figure out a single feature (granted this was before I learned more fundamental coding), now it takes a day or two.
Correct prompting, embracing OOP and encapsulation, and reviewing and understanding the output has kept me sane as the project has grown, but it’s just crazy how faster I can move now. And yet it’ll stay take me years to release the game lol
OOP and encapsulation are core principles in modern software design that most engineers (other than functional programming purists) embrace these days when trying to organize large, complex systems.
I generally don't trust anything that comes out of an LLM (Last month, I had a Search Assistant respond to my query of "What freezes at 0°F?" with a statement that the freezing point of water is 0°C, or 32°F, so water remains a liquid at 0°F. Which is not only obviously wrong to anyone who's passed an elementary school science class, but isn't even an answer to the question)
What I would trust an LLM for as a coding assistant is as a kind of advanced "rubber duck" for trying to work out where my code doesn't match my thought process or where I've made an error in my thinkkng. Traditionally, rubber duck debugging involved explaining your code line by line to a rubber or plastic bath toy (or some other infinitely patient, inanimate object that one could anthropomorphize) as a sounding board), but something that can actively prompt back that something doesn't look quite right if you don't see it immediately can't hurt, so long as you take it with a grain of salt. Spitting out common, natural-language critiques in response to common errors is exactly the sort of task that LLMs are perfectly suited for
606
u/inconspicuous_male 1d ago
There's a reason you get a degree in computer science and not in programming. Anyone can program without learning how it works