*Spin-off* Coding Education & Practise

Well, I know a lot of grads that don't know much about how compilers work and they've successfully written many different applications ... Maybe we're disagreeing on the semantics of "cannot." If we're talking game code, then I don't have experience to say anything about that, but there are a lot of programs that can be written without having to worry about what the compiler is doing.

How did they graduate without at least writing a basic compiler?
 
How did they graduate without at least writing a basic compiler?

I'm sure they did. I did. But the complexity of the compiler I built is far far lower than the compilers being used for the x86 architecture. And there's a difference between taking one course in compilers and actually remembering everything and putting it to use in school and afterward. I know I don't remember everything about my compiler course.
 
If we're talking game code, then I don't have experience to say anything about that, but there are a lot of programs that can be written without having to worry about what the compiler is doing.
As long as this program is used by you and your two friends - yeah. Without deeper knowledge about lang/compiler any medium to large scale application is doomed to expose many bugs caused by the lack of knowledge in appropriate areas. Sure, in some cases this is not an issue - some applications are less critical than others, but that doesn't make them written properly.
 
As long as this program is used by you and your two friends - yeah. Without deeper knowledge about lang/compiler any medium to large scale application is doomed to expose many bugs caused by the lack of knowledge in appropriate areas. Sure, in some cases this is not an issue - some applications are less critical than others, but that doesn't make them written properly.

There's some disconnect here. It's clear that anyone can write code; maybe it's not good code, but it's not any less 'code'. This makes psorcerer's second point patently false. The rest is arguing about what is proper code and isn't, and this isn't the first place to argue that, nor will it be the last. And it's nominally on-topic, but right now we're on the 'students should learn x'-type arguments. There's all sorts of opinions. The software engineers think that UML and patterns are the most important thing, the algorithm afficionados would like you to focus on discrete math and as many algorithm courses possible, etc. etc.

A good school has to cover all of these things, but in a four(or five)-year course I don't know if you can do more than give kids an introduction to most of these topics, with maybe a minor focus in one or two fields. It's really up to the kids to take the course's bibliography, supposing the bibliography is good, and to follow up on their own. Very few courses that I've seen are meant to thoroughly cover a subject matter, especially in undergrad.
 
obonicus said:
Very few courses that I've seen are meant to thoroughly cover a subject matter, especially in undergrad.
That's what started this whole argument. I was talking about foundations(using the word as well IIRC) all along, people just decided to interpret it in their way and run with it.
Eg. as mentioned by psorcerer, specific language syntaxes are largely irrelevant, anyone can pick those up quickly given the proper foundations, and if you can't pick up a new syntax quickly you're fundamentally limited in your career choices to begin with.
It's too bad Intentional Programming never made it out of academia, maybe people wouldn't put so much emphasis on the language syntax anymore if it did.

Scott_Arm said:
but there are a lot of programs that can be written without having to worry about what the compiler is doing
This is going down the road of really retarded arguments if you start applying it to other fields. Eg. you can treat a lot of diseases without having to worry how a human body works, but I doubt anyone will say that qualifies you to work in medicine.
Algorithms are only part of programming, and besides, algorithm design is still heavily influenced by basic underlying knowledge of math, comp. arch., language theory etc.
 
Last edited by a moderator:
This is going down the road of really retarded arguments if you start applying it to other fields. Eg. you can treat a lot of diseases without having to worry how a human body works, but I doubt anyone will say that qualifies you to work in medicine.
Algorithms are only part of programming, and besides, algorithm design is still heavily influenced by basic underlying knowledge of math, comp. arch., language theory etc.

All fields are not created equal and in the example above I'd say there are useful places in medicine (first aid) for people with only rudimentary knowledge of how the human body works. Of course that person could not be a doctor, but cleaning and bandaging wounds might be fine.

Programming is broad. I think there's a lot of room for people of varying skill level. You don't want a person that doesn't understand compilers to work on your kernel, but writing some web or productivity apps might be fine. That's all I'm saying.
 
That's what started this whole argument. I was talking about foundations(using the word as well IIRC) all along, people just decided to interpret it in their way and run with it.

I know, and I don't disagree that language choice is irrelevant, I also agree that students shouldn't be deciding their courses except maybe very very late in their curriculum. I just think that right now we're disagreeing on what the foundations are. And I think every industry will have their own opinion of what skills are necessary for recent graduates, stuff they consider basic. I mean, there's stuff (almost) everyone will agree on, I mean beyond that.

This is going down the road of really retarded arguments if you start applying it to other fields. Eg. you can treat a lot of diseases without having to worry how a human body works, but I doubt anyone will say that qualifies you to work in medicine.

Computer scientists aren't doctors, are they? You're comparing apples and oranges. Not knowing how a compiler works may mean you're not qualified for doing real-time bit-scrubbing, like engine design, but it doesn't mean you're not writing working programs. Other than those writing software for airliners or hospital equipment, no one's dying when software fails.
 
Programming is broad. I think there's a lot of room for people of varying skill level. You don't want a person that doesn't understand compilers to work on your kernel, but writing some web or productivity apps might be fine. That's all I'm saying.

It's not correct.
All the "low skill" things can and should be automated.
If you need actual person to write it manually, you're not efficient enough.
All the "web developers" will eventually die. There is a constant need for people with low skills in the "real" world, but in world of software you should be much more efficient with small group of skilled people.
 
I actually didn't mean to suggest web development was somehow lesser programming. The varying levels of skill were meant to be independent from that. At the same time, I think automation is definitely important for efficiency, but there should still be a lot of room in such a broad field for people with varied skill sets.
 
One has direct effect on the other.
There are people who can write code and there are ones who can not.
It doesn't matter how many excuses the latter ones have.

95% of people are dumb.

It always matters if you're dumb or smart. But for 95% of people being dumb is not an issue. Furthermore, being dumb is indeed normal.

If the above givens are true, thus the majority of developers are dumb, it would appear hardware makers have the task to either (a) fight up stream and educate or (b) develop platforms and practices that adapt to the inadequacies of these developers. Obviously the market has done this for a long time (large OOOe CPUs) and multicore, heterogenous cores, new memory models, etc throw a wrinkle into such. It may not be a happy thought that most people are dumb and refuse and/or are incapable of mastering the necessary skills for their field, yet the key is making them productive because they are what you have until a better solution comes about.
 
It's not correct.
All the "low skill" things can and should be automated.
If you need actual person to write it manually, you're not efficient enough.
All the "web developers" will eventually die. There is a constant need for people with low skills in the "real" world, but in world of software you should be much more efficient with small group of skilled people.
That's what we hope. But I think the average job interview will counter that hope.

Those skills don't fill most job descriptions, after all. They're only usable in long-term support, coding to the metal, or when the shit hits the fan.

If you got a C# course in university as your main, you're likely to write that webapp faster and neater than someone who got C++, compiler design and embedded.
 
If the above givens are true, thus the majority of developers are dumb, it would appear hardware makers have the task to either (a) fight up stream and educate or (b) develop platforms and practices that adapt to the inadequacies of these developers. Obviously the market has done this for a long time (large OOOe CPUs) and multicore, heterogenous cores, new memory models, etc throw a wrinkle into such. It may not be a happy thought that most people are dumb and refuse and/or are incapable of mastering the necessary skills for their field, yet the key is making them productive because they are what you have until a better solution comes about.

I think it's also an illusion.
Things only get more complicated. For example multithreaded programming needs much more advanced software development practices otherwise you get some very nasty bugs that just do not exist in single thread approach.
I think these are just rapid growth problems. The industry is growing so fast that even people who have no skills are useful. When it eventually stabilizes the need for dumb people doing repetitive work will be reduced.
There are a lot of signs for this, for example the whole slice of "web interface developers" is already dead. Interfaces are done by designer, an artist, everything else is automated.
 
That's what we hope. But I think the average job interview will counter that hope.

The "average job interview" shows that 90% of applicants can't write square equation solver. And cannot answer on: 2^8 = ?

Those skills don't fill most job descriptions, after all. They're only usable in long-term support, coding to the metal, or when the shit hits the fan.

If you got a C# course in university as your main, you're likely to write that webapp faster and neater than someone who got C++, compiler design and embedded.

This is just for now.
 
The "average job interview" shows that 90% of applicants can't write square equation solver. And cannot answer on: 2^8 = ?

This is just for now.

Can't answer 2^8? That's terrible. I have no idea how they would have graduated. Any of the programs in my town would cover binary math in a first semester course. Not to mention they should be able to do that math in high school, if not earlier. I haven't seen a single computer programming degree that didn't require assembly, C/C++ and a load of math courses, all of which would require a knowledge of basic math. I know to get a computer science degree in my town you have to do all kinds of calculus, algebra and discrete math as well.

Square equation meaning quadratic equation?
 
Last edited by a moderator:
Where is this statistic published and how was the research conducted?

I'm guessing personal experience and he probably has a good sample size. I've heard things from friends conducting interviews where they asked people to do something simple like reverse a linked list and they can't do it. I'm not sure how they could have graduated, but they do. That said, there are a still a lot of smart skilled people graduating.
 
I know to get a computer science degree in my town you have to do all kinds of calculus, algebra and discrete math as well.

It doesn't mean that people remember everything they were taught...

Square equation meaning quadratic equation?

Yep. As you've already guessed English is not my first language (even not a second).
 
Back
Top