I teach compilers, systems, etc. at a university. Innumerable times I have seen AI lead a poor student down a completely incorrect but plausible path that will still compile.
I'm adding `.noai` files to all the project going forward:
https://www.jetbrains.com/help/idea/disable-ai-assistant.htm...
AI may be somewhat useful for experienced devs but it is a catastrophe for inexperienced developers.
"That's OK, we only hire experienced developers."
Yes, and where do you suppose experienced developers come from?
Again and again in this AI arc I'm reminded of the magicians apprentice scene from fantasia.
> Yes, and where do you suppose experienced developers come from?
Strictly speaking, you don't even need university courses to get experienced devs.
There will always be individuals that enjoy coding and do so without any formal teaching. People like that will always be more effective at their job once employed, simply because they'll have just that much more experience from trying various stuff.
Not to discredit University degrees of course - the best devs will have gotten formal teaching and code in their free time.
> People like that will always be more effective at their job once employed
This is honestly not my experience with self taught programmers. They can produce excellent code in a vacuum but they often lack a ton of foundational stuff
In a past job, I had to untangle a massive nested loop structure written by a self taught dev, which did work but ran extremely slowly
He was very confused and asked me to explain why my code ran fast, his ran slow, because "it was the same number of loops"
I tried to explain Big O, linear versus exponential complexity, etc, but he really didn't get it
But the company was very impressed by him and considered him our "rockstar" because he produced high volumes of code very quickly
I was self taught before I studied, most of the "foundational" knowledge is very easy to acquire. I've mentored some self-taught juniors and they surprised me at how fast they picked up concepts like big O just by looking at a few examples.
Big O was just an anecdote for example
My point is you don't know what you don't know. There is really only so far you can get by just noodling around on your own, at some point we have to learn from more experienced people to get to the next level
School is a much more consistent path to gain that knowledge than just diving in
It's not the only path, but it turns out that people like consistency
I would like a book recommendation for the things I don’t know please (Sarcasm but seriously)…
A senior dev mentioned a “class invariant” the other day And I just had no idea what that was because I’ve never been exposed to it… So I suppose the question I have is what should I be exposed to in order to know that? What else is there that I need to learn about software engineering that I don’t know that is similarly going to be embarrassing on the job if I don’t know it? I’ve got books like cracking the coding interview and software engineering at Google… But I am missing a huge gap because I was unable to finish my masters and computer science :-(
I ran into that particular term oodles in Domain-Driven Design, Tackling Complexity at the Heart of Software by Eric Evans. Pretty dense, though. I’ve heard that more recent formulations of the subject are more approachable.
CLRS
(Serious comment! It's "the" algorithms book).
Tyvm for the serious comment, i_am_proteus! :-) The algorithms book By Steve S. (The Algorithm Design Manual)?
I've read that one, not an expert by any means, and I've got a 'decent' handle on data structues, but what about the software engineering basics one needs like OOP vs. Functional, SOLID, interfaces, class invariants, class design, etc.? Should I just pick up any CS 101 textbook? Or any good MIT open courseware classes that cover this type of stuff (preferably with video lectures... intro to algorithms is _amazing_ they have Eric's classes uploaded to YouTube, but finding good resources to level-up as a SWE has proved somewhat challenging)
^ serious comment as well... I find myself "swimming" when I hear certain terms used in the field and I am trying to catch up a bit (esp. as an SRE with self-taught SRE skills that is supposed to know this stuff)
Ah! Nvm, I see you mean https://github.com/walkccc/CLRS (didn't catch the acronym was the authors names smushed together at first)
> This website contains nearly complete solutions to the bible textbook - Introduction to Algorithms Third Edition, published by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.
> most of the "foundational" knowledge is very easy to acquire
But you have to know this knowledge exists in the first place. That's part of the appeal of university teaching: it makes you aware of many different paradigms. So the day you stumble on one of them you know where to look for a solution. And usually you learn how to read (and not to fear) reading scientific papers which can be useful. And statistics.
It doesn't seem to matter if someone went to university. I have had to unpick crap code from uni grads and self taught. Experience may be the only true reliable tell, and I don't mean jobs held I mean world experience on projects.
There are also different types of self taught, and different types of uni grad. You have people who love code, have a passion for learning, and that's driven them to gain a lot of experience. Then you have those who needed to make a living, and haven't really stretched beyond their wheelhouse so lack a lot of diverse experience. Both are totally fine and capable of some work, but you would have better luck with novel work from an experienced passionate coder. Uni trained or not.
> but you would have better luck with novel work from an experienced passionate coder. Uni trained or not.
I have not learned CS at university (maths & stats graduate who shifted to programming, because I can't help myself loving it). I work with engineers with CS degrees from pretty good universities. At the risk of sounding arrogant, I write better code then a lot of them (and some of them write code that it so clean and tight that I wish I could match it). Purely based on my fairly considerable experience, there is basically little correlation between degree and quality of code. There is non-trivial correlation between raw intelligence and the output. And there is a massive correlation between how much one cares about the quality of the work and the output.
s/self taught/degreed/g and it's still true. It's a skill issue no matter the pedigree.
I literally said as much?
> Not to discredit University degrees of course - the best devs will have gotten formal teaching and code in their free time.
The disagreement is over the highlighted line:
>People like that will always be more effective at their job once employed
My experience is that "self taught" people are passionate about solving the parts they consider fun but do not have the breadth to be as effective as most people who have formal training but less passion. The previous poster also called out real issues with this kind of developer (not understanding time complexity or how to fix things) that I have repeatedly seen in practice.
But the sentence is about people coding in their free time vs not doing so... If you take an issue with that, you argue that self taught people that don't code in their free time are better at coding the the people that do - or people with formal training that don't code in their free time being better at it vs people that have formal training and do...
I just pointed out that removing classes entirely would still get you experiences people. Even if they'd likely be better if they code and get formal training. I stated that very plainly
> I stated that very plainly
You actually didn't state it very plainly at all. Your initial post is contradictory, look at these two statements side by side
> There will always be individuals that enjoy coding and do so without any formal teaching. People like that will always be more effective at their job once employed
> the best devs will have gotten formal teaching and code in their free time
People who enjoy coding without formal training -> more effective
People who enjoy coding and have formal training -> best devs
Anyways I get what you were trying to say, now. You just did not do a very good job of saying it imo. Sorry for the misunderstanding
I read this one:
> There will always be individuals that enjoy coding and do so without any formal teaching. People like that will always be more effective at their job once employed
As "people who enjoy coding and didn't need formal training to get started". It includes both people who have and don't have formal training.
Both statements together are (enthusiasm + formal) > (enthusiasm without formal) > (formal without enthusiasm).
Sure that's a valid interpretation but it wasn't how I read it
> Both statements together are (enthusiasm + formal) > (enthusiasm without formal) > (formal without enthusiasm).
I don't think the last category (formal education without enthusiasm) really exists, I think it is a bit of a strawman being held up by people who are *~passionate~*
I suspect that without any enthusiasm, people will not make it through any kind of formal education program, in reality
Uh, almost nobody I've worked with to date codes in their free time with any kind of regularity.
If you've never encountered the average 9-5 dev that just does the least amount of effort they can get away with, then I have to apploud the HR departments of the companies you've worked for. Whatever they're doing, they're doing splendid work.
And almost all of my coworkers are university grads that do literally the same you've used as an example for non formally taught people: they write abysmally performing code because they often have an unreasonable fixation on practices like inversion of control (as a random example).
As a particularly hilarious example I've had to explain to such a developer that an includes check on a large list in a dynamic language such as JS performs abysmally
Many of these people have a normal life outside of work and different hobbies or a social life. Many of them had been glued to their screens and keyboards too but evolved into a different stage in their lives. Former passions could turn into a discipline. I personally am not on my computer outside of 9-5 because thats already enough. I admit that don’t have the same passion I had in my 20s and yet Im effective in doing my work and am quite fulfilled.
this time I agree that my wording was unclear.
While you definitely loose acuity once you stop exploring new concepts in your free time, the amount of knowledge gained after you've already spend 10-20 yrs coding drops off a cliff, making this time investment in your free time progressively less essential.
My pint was that most of my coworkers never went through an enthusiastic phase in which they coded in their free time. Neither pre university nor during or after. And it's very easy noticeable that they're not particularly good at coding either.
Personally, I think it's just that people that are good at coding inevitably become enthusiastic enough to do it in their free time, at least for a few years. Hence the inverse is true: people that didn't go through such a phase (which most of my coworkers are)... Aren't very good at it. Wherever they went to university and got a degree or not.
> an includes check on a large list in a dynamic language such as JS performs abysmally
Does it perform any better in statically compiled languages?
Depends on the implementation. E.g. Javas HashSets include has the same performance profile as a Map lookup. Its still not particularly performant with large datasets, but significantly less abysmal then a regular JS .includes().
I just didn't want to explore the example to such a depth, as it felt irrelevant to me at the time of writing.
GP didn't mention university degrees.
You get experienced devs from inexperienced devs that get experience.
[edit: added "degrees" as intended. University was mentioned as the context of their observation]
The first sentence contextualized the comment to university degrees as far as I'm concerned. I'm not sure how you could interpret it any other way, but maybe you can enlighten me.
I read it as this is the context from which I make the following observation. It's not excluding degrees but certainly not requiring them.
> There will always be individuals that enjoy coding and do so without any formal teaching.
We're talking about the industry responsible for ALL the growth of the largest economy in the history of the world. It's not the 1970s anymore. You can't just count on weirdos in basements to build an industry.
I'm so glad I learned to program so I could either be called a basement dweller or a tech bro
> There will always be individuals that enjoy coding and do so without any formal teaching.
That's not the kind of experience companies look for though. Do you have a degree? How much time have you spent working for other companies? That's all that matters to them.
> Yes, and where do you suppose experienced developers come from?
Almost every time I hear this argument, I realize that people are not actually complaining about AI, but about how modern capitalism is going to use AI.
Don't get me wrong, it will take huge social upheaval to replace the current economic system.
But at least it's an honest assessment -- criticizing the humans that are using AI to replace workers, instead of criticizing AI itself -- even if you fear biting the hands that feed you.
> criticizing the humans that are using AI to replace workers, instead of criticizing AI itself
I think you misunderstand OP's point. An employer saying "we only hire experienced developers [therefore worries about inexperienced developers being misled by AI are unlikely to manifest]" doesn't seem to realize that the AI is what makes inexperienced developers. In particular, using the AI to learn the craft will not allow prospective developers to learn the fundamentals that will help them understand when the AI is being unhelpful.
It's not so much to do with roles currently being performed by humans instead being performed by AI. It's that the experienced humans (engineers, doctors, lawyers, researchers, etc.) who can benefit the most from AI will eventually retire and the inexperienced humans who don't benefit much from AI will be shit outta luck because the adults in the room didn't think they'd need an actual education.
Actually, there are two main problems with AI:
1. How it's gonna be used and how it'll be a detriment to quality and knowledge.
2. How AI models are trained with a great disregard to consent, ethics, and licenses.
The technology itself, the idea, what it can do is not the problem, but how it's made and how it's gonna be used will be a great problem going forward, and none of the suppliers tell that it should be used in moderation and will be harmful in the long run. Plus the same producers are ready to crush/distort anything to get their way.... smells very similar to tobacco/soda industry. Both created faux-research institutes to further their causes.
I would say the huge environmental cost is a third problem.
Data centers account for like 2% of global energy demand now. I’m not sure if we can really say that AI, which represents a fraction of that, constitutes a huge environmental problem.
An nVIDIA H200 uses around 2.3x more power (700W) when compared to a Xeon 6748P (300W). You generally put 8 of these cards into a single server, which adds up to 5.6KW, just for GPUs. With losses and other support equipment, that server uses ~6.1KW at full load. Which is around 8.5x more when compared to a CPU only server (assuming 700W or so at full load).
Considering HPC is half CPU and half GPU (more like 66% CPU and 33% GPU but I'm being charitable here), I expect an average power draw of 3.6KW in a cluster. Moreover, most of these clusters run targeted jobs. Prototyping/trial runs use much limited resources.
On the other hand, AI farms use all these GPUs at full power almost 24/7, both for training new models and inference. Before you asking, if you have a GPU farm which you do training, having inference focused cards doesn't make sense, because you can divide nVIDIA cards with MIG, so you can put aside some training cards, divide these cards to 6-7 and run inference on them, resulting ~45 virtual cards for inference per server, again at ~6.1KW load.
So, yes, AI's power load profile is different.
Data centres in general are an issue that contribute to climbing emissions, two percent globally is not trivial .. and it's "additional" over demand of a decade and more ago past, another sign we are globally increasing demand.
Emissions aside, locally many data centres (and associated bit mining and AI clusters) are a significant local issue due to local demand on local water and local energy supplies.
> How AI models are trained with a great disregard to consent, ethics, and licenses.
You must be joking. Consumer models' primary source of training data seems to be the legal preambles from BDSM manuals.
> Almost every time I hear this argument, I realize that people are not actually complaining about AI, but about how modern capitalism is going to use AI.
This was pretty consistently my and many others viewpoint since 2023. We were assured many times over that this time it would be different. I found this unconvincing.
> I realize that people are not actually complaining about AI, but about how modern capitalism is going to use AI.
Something very similar can be said about the issue of guns in America. We live in a profoundly sick society where the airwaves fill our ears with fear, envy and hatred. The easy availability of guns might not have been a problem if it didn't intersect with a zero-sum economy.
Couple that with the unavailability of community and social supports and you have a a recipe for disaster.