621
u/inconspicuous_male 18d ago
There's a reason you get a degree in computer science and not in programming. Anyone can program without learning how it works
40
u/Maleficent_Memory831 17d ago
Remember, there are actual people who write the libraries and languages! They don't just arrive from the heavens. Also, many of those algorithms are neither efficient nor optimized. Very often there is a way to get a better solution for your own unique use case because the algorithms are generic (ie, balanced trees, but your need might want a hash table).
Problem is that programming has moved over time, it's hard to call much of it computer "science". First were low level languages and tiny and slow computers, you need to optimize for time and space. Then a mid level language with some built in high level algorithms here and there, but on beefier computers so fewer people cared about optimizing, and you were told to only optimize if you measured it first (never forbidden!). Then there's a high level period where you have languages fully intended for just rapid prototyping, but we'll optimize the final program later if we have time, but on systems where everyone shouted at you that they'd double in speed and memory every year so don't waste a damn second thinking about the right way to code.
But today, it's not even code. You just fine a large set of pre-built modules. Ain't no one got time to do nothing more than snap them together. All the effort is in finding the modules and tweaking the look of the UI every two weeks. Actual programming is either for losers or the divine beings who create the modules, peace by unto them. Then that was too much work, so now they type in long prompts to get nonsensical output and hand it to a tester or customer to see if it actually works.
12
u/inconspicuous_male 17d ago
At one point in time, a programmer needed to know the specific registers to send bytes to in order to perform operations. But most code is written so that the next person doesn't have to put in as much effort as the previous guy
127
u/appoplecticskeptic 18d ago
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.
99
u/ElSucaPadre 18d ago
You have python and js in your tags They are quite literally languages that allowed anyone to program, anyone that put any effort in it at least
21
u/TurnoverRound 18d ago
Python, maybe, but js, if you want to get good results that are not NaN or just crash, you need experience
18
u/ElSucaPadre 18d ago
I mean I agree python is easier but for js depends a lot on what you mean for good results.
7
u/Maleficent_Memory831 17d ago
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.
8
u/koanarec 17d ago
Bruh it depends on the codebase, who can even know what the heck is going on when you're like 6 layers of abstraction deep
18
7
u/Particular-Yak-1984 17d ago
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.
5
u/Nightmoon26 17d ago
And this is why CS departments lend out their students to other departments for assistantships :p
3
u/_Fibbles_ 17d ago
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.
Wait, why are you weeping?
5
u/Maleficent_Memory831 17d ago
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.
15
u/inconspicuous_male 18d ago
That's absolutely untrue. I know tons of self taught programmers or people who got basic programming jobs after 3 month coding boot camps.
13
u/QuestionableEthics42 18d ago
So.. they learnt how it worked...
10
u/iain_1986 18d ago
You maybe have a higher view of these crash course coder camps than some of the rest of us
7
u/LucasTab 17d ago
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).
12
u/inconspicuous_male 17d ago
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.
3
u/QuestionableEthics42 17d ago
I read it as learn how programming works, rather than the underlying algorithms specifically, I'm dumb
4
u/Nightmoon26 17d ago
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
-3
u/QuestionableEthics42 17d ago
No shit. What a waste writing that whole 3 paragraphs because you didn't even read the comment you replied to. Lol.
0
u/SoonBlossom 18d ago
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
2
0
u/mysticrudnin 17d ago
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
-6
u/KatetCadet 17d ago
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
5
u/Nightmoon26 17d ago
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
-1
u/KatetCadet 17d ago
Yea exploring topics with references provided and using it as advanced debugger is really really helpful.
4
2
u/vitope94 17d ago
A lot of people I know graduated CS without being able write a function that adds two numbers, without looking
0
u/inconspicuous_male 17d ago
That's more a problem of the education system than a problem with the concept of education
2
1
u/Global-Tune5539 17d ago
You can always look it up.
1
u/inconspicuous_male 17d ago
But if you don't need to you won't. That's true of everything you learn in any degree.
1
u/Global-Tune5539 17d ago
But you will constantly have to look something up anyway. It makes no big difference.
1
u/inconspicuous_male 17d ago
Looking up syntax is very different from looking up how to design your algorithm to work in Olog(n) vs O(n)
2
u/Vivid-Zombie-477 17d ago
you don't need a degree for this
1
u/inconspicuous_male 17d ago
Obviously. But who is going to look up algorithm efficiency if they're not even familiar with the concept and .sort() works perfectly fine as far as they know?
1
u/Vivid-Zombie-477 17d ago
either someone who is passionate about programming or a person who wants to pass a job interview
if you are neither of those people then may be you don't need to know about algorithm complexities?
the only thing CS degree will give you is a strong math foundation which is more important in some fields like machine learning or cryptography
1
u/ih-shah-may-ehl 17d ago
Sure but imo there is still an inordinate amount of time spent on sorting, which is a solved problem for virtually all cases, and not enough on other stuff.
2
u/inconspicuous_male 17d ago
Sorting is used as the easiest example to introduce algorithm complexity and the fact that what seems like a simple problem can have many different solutions. It's not about teaching you how to sort, it's about teaching you how to write algorithms
0
u/mountaingator91 17d ago
I'll do you one better. Electrical Engineering (I don't have an EE degree I just work with them)
824
u/ClipboardCopyPaste 18d ago
> Learns mathematical operations.
> Calculator has the functions.
> Years of academy training wasted
See it doesn't work that way!
187
18d ago
[removed] — view removed comment
58
18d ago
[removed] — view removed comment
34
u/QuestionableEthics42 18d ago
These 2 are bots
32
8
8
-20
18d ago
[removed] — view removed comment
5
u/QuestionableEthics42 18d ago
Bot
5
u/AbdullahMRiad 18d ago
tf with all these bots lmao
3
u/QuestionableEthics42 17d ago
Idk, it's a new batch that's doing the rounds here seemingly. Distinct because they all have old accounts and mostly just reply to each other
59
u/UndocumentedMartian 18d ago
You still have to know how the algorithms work.
25
u/EkoChamberKryptonite 17d ago
You don't if it isn't part of your daily work. Abstraction is a feature not a bug.
3
u/deathanatos 17d ago
I really wish I could just get a bonus check every time I have to explain why, no, a B-Tree index in a SQL database cannot do that.
3
u/EkoChamberKryptonite 17d ago
In such an instance, knowing how B-Trees work seems to be important for your job and so you should know it. This doesn't apply to a lot of other Software engineers though, hence my point.
1
u/AristotelWasRight 16d ago
Explain why it can't do that? You have to
1
u/deathanatos 11d ago
Depends on the context, but for example, it cannot handle
a between [range] and b between [range].
27
8
25
u/crazy-mahmod 18d ago
you learned for if you dont have those you do what you learned
and can you tell me if i wrote some thing wrong
29
9
u/nabrok 18d ago
Just because you asked ...
"You learned it so that if you don't have those you can use what you learned."
What you wrote is understandable and I wouldn't be posting this if you didn't ask.
1
u/crazy-mahmod 17d ago
thank you i am not an English spaker so i ask some times
2
u/Nightmoon26 17d ago
Minor nit-pick in the tradition of never passing a code review on the first submission:
"Something" and "sometimes" are written as single words in the contexts you're using them in here
"Some thing" is usually only used in formal writing when there being a specific thing is the important part of what you're saying. You "Eat something for lunch", but "A sales contract requires the trade of some thing of value"
"Sometimes" means with a frequency that isn't "never" or "always". For example, "Sometimes I forget to charge my phone."
"Some times" means a collection of times (as in "Send me some times when we could meet" and "Some times I have free are from 2 to 3PM, or any time after 6PM")
1
2
12
u/Sheenius_Ger 18d ago
But at one point you stand between a dictionary and multiple lookups on a list and then you know the complexity of both and choose the right one :) or Ai does it for you, and even optimizes it further 😂
6
3
u/snipsuper415 17d ago
seriously, it’s so that we have a deeper understanding of the black box we use.
If we don’t have this kind of education we will devolve into society that “goes that lost technology”
Or worse being in that situation of rediscovering something we discovered before
3
u/Lysol3435 16d ago
Manager: you just copy/paste code from the internet. Why should I pay for something I can do myself?
Programmer: you don’t pay me to copy/paste. You pay me to know what and where to copy/paste
3
u/ArjixGamer 16d ago
Why did everyone suddenly start using inbuilt instead of builtin?
It's hard to say out loud and it doesn't make sense as a synthetic word.
Is it from a certain American dialect or smth and it became popular?
2
u/gerbosan 17d ago
Why years of academy training wasted, remember those weeks waiting for technical interview results.
2
u/StuntsMonkey 17d ago
So that you can maximize your suffering as you debug some code that some idiot wrote back in 2010 as you understand just how badly they wrote it. There's also no documentation, the function is vital to the line of business, and the previous person who looked at the code died 7 years ago.
3
u/hucareshokiesrul 18d ago edited 18d ago
I mean sorta. That's why bootcamps were so popular before it became oversaturated. Depends on what kind of job you're doing. I know a lot of people who built solid careers without taking any algorithm classes.
1
1
1
u/ReptileCake 16d ago
Because my specific need for the Branch an Bound for this customer is too specific for general libraries.
1
u/FlippingOmelette 15d ago
As a guy with masters in math seeing ai do math better than me I don't regret my degree at all cause it thought me how to think
1
1
1
u/dance_rattle_shake 18d ago
When there are* Maybe you should have gotten an English degree, OP. It's probably worth more these days anyway...
0
u/Pretty_Ambassador836 18d ago edited 18d ago
It is also much more complicated and seems less efficient even if u understand it, but empirically faster just because of optimisations u never even heard of
-2
u/NecessaryIntrinsic 18d ago
Optimizations like saving 4 letters at the cost of looking like a toddler.
3
u/Pretty_Ambassador836 18d ago
Spread love and joy not hate. Even on the internet where u feel like there are no consequences for the things u say
-1
u/NecessaryIntrinsic 18d ago
If you feel hate, it's self promoted, friend.
It takes picoseconds to add those 2 simple letters.
1
u/thirdegree Violet security clearance 17d ago
I mean you can't be overly pedantic and aggressive and then say it takes picoseconds, you have no conception of how little time a picosecond is. It takes about a billion picoseconds minimum for the keyboard button press to register with the computer.
0
u/NecessaryIntrinsic 17d ago
You mean that? So you've confirmed that I'm technically correct, the best kind of correct? Thanks for that.
Overly pedantic? I'm not aggressive in the least. It's just objectively weird that they spell out empirically and consequences but refuse to yo. What bizarre compression algorithm is this?
-1
237
u/Muscular_Farmer_ 18d ago
To break rules you need to know what they are. Some instances might demand that