Slashdot Log In
Bjarne Stroustrup On Educating Software Developers
Posted by
kdawson
on Tue Dec 09, 2008 06:46 PM
from the way-it-spozed-to-be dept.
from the way-it-spozed-to-be dept.
jammag writes "Bjarne Stroustrup, creator of C++ and a professor at Texas A&M, weighs in on the problems in today's CS programs. In particular, Java (there's too much of it), the quality of graduates (companies aren't happy), and the need to balance the theoretical and the practical (long overdue). Not pulling punches, Stroustrup even talks about high schools — 'High schools could teach students to work hard at something (just about anything), to search out information as needed, and learn to express their ideas in writing and orally.' He finishes by giving advice to working developers: 'Serious programming is a team sport, brush up on your social skills. The sloppy fat geek computer genius semi-buried in a pile of pizza boxes and cola cans is a mythical creature, best buried deep, never to be seen again.'" Read on for more choice quotes from the quotable professor.
I have even had questions from strangers in airplanes: "You're a professor? In software? Have you got any students? Here's my card."
The US industry could absorb more good developers than there are currently students enrolled in IT-related programs — but not all of those programs and all of those students would qualify as "good" in this context.
The companies are complaining because they are hurting. They can't produce quality products as cheaply, as reliably, and as quickly as they would like. They correctly see a shortage of good developers as a part of the problem. What they generally don't see is that inserting a good developer into a culture designed to constrain semi-skilled programmers from doing harm is pointless because the rules/culture will constrain the new developer from doing anything significantly new and better.
The contemporary Math, Physics, and Biology books I have seen are far, far more conceptually challenging than what we present to CS and engineering students in the area of programming.
I think the ultimate aim is to make programming more of an engineering discipline, more mathematical or scientific; "craft" and "art" are both needed, but there ought to be a scientifically based core on which people can base their craft and art. Software design and implementation is more than a craft; there is more math, science, and engineering to know and apply than is customary for fields we call "crafts." Incidentally, I find it appalling that you can become a programmer with less training than it takes to become a plumber.
Related Stories
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
Mythical Creature... (Score:5, Funny)
Re:Mythical Creature... (Score:5, Funny)
[Citation needed]
Parent
Re:Mythical Creature... (Score:5, Funny)
I don't give a s**t about this newbie with his bloated language.
Dennis Ritchie.
Parent
A direct link... (Score:5, Informative)
..is here [earthweb.com].
Careful (Score:5, Funny)
The sloppy fat geek computer genius semi-buried in a pile of pizza boxes and cola cans is a mythical creature, best buried deep, never to be seen again
Be careful. They're easily frightened, but they'll soon be back, and in greater numbers.
Re:Careful (Score:5, Funny)
*Bjarne waves hand* These are not the programmers you're looking for.
Parent
Back To Reality (Score:5, Interesting)
This is all well and good, and there's no doubt that an engineering/logical approach is very important in programming, but there is something of an art about development as well. I can slog all day coding away, working from diagrams, notes and even flowcharts (though not formalized ones, I'll admit, like days gone by), but sometimes my best and most productive work are those creative flashes I get, when any kind of formal process is tossed out the door. Sure, I have to go back later and comment the code so that even I can understand it, but there will always be that creative aspect to programming, and that ain't necessarily bad.
Re:Back To Reality (Score:5, Insightful)
Parent
Re:Back To Reality (Score:5, Interesting)
Parent
The companies not happy with grads is pure BS. (Score:5, Insightful)
Unless you finish that sentence..
Companies are not happy with the fresh coders because the good ones wont accept the low salaries they offer.
Sorry but Programming is HARD. you gotta pay a lot for a good programmer. That will not change.
I am sick of corporations and companies making up this raging BS story about a lack of candidates. RAISE YOUR SALARIES AND THOSE CANDIDATES WILL APPEAR.
Re:The companies not happy with grads is pure BS. (Score:5, Insightful)
I've never known this to be the case. When I managed developers, I paid market rates which I am sure you would say are low. I never had a single offer turned down for salary considerations. I had a range of programmers from good to excellent. Expectation of higher salaries was not correlated with skills or performance at all.
You are right: programming _is_ hard. But salary is only useful as a motivator up to a point. Beyond that, what good programmers want is respect, appreciation, and freedom to do great things. They want to work on stuff that they feel good about. They also want to work with other smart people who they can learn from and build great stuff with. Those are decent starting points anyway.
So your general idea is right: that complaining companies are full of it, but I don't think it's because of money. It's because they have lousy uninspiring development environments.
Cheers.
Parent
He can wish.... (Score:5, Funny)
The sloppy fat geek computer genius semi-buried in a pile of pizza boxes and cola cans is a mythical creature, best buried deep, never to be seen again.
But RMS isn't going anywhere !
Lies!! (Score:5, Funny)
While probably safe for work, I don't actually want anyone to see this, but I found one! [king-mag.com]
Stroustrup on Java is like Bill Gates on Linux (Score:5, Insightful)
Bjarne Stroustrup, creator of C++ [...] weighs in on [...] Java (there's too much of it)
Oh, gee, now THAT is a surprise!
Is coding really a team sport? (Score:5, Interesting)
I know about extreme programming, and I've really enjoyed some team programming sessions, but when it comes down to it, I think one reason some people hold a much deeper level of knowledge than their peers is that they spend extreme amounts of time alone.
Some people:
--get really good at coding
--get really good at math
--get really good at video games
--read large numbers of books
and finally some people watch a lot of television
The people who read a lot of books sometimes gain a better understanding of other people, the people who watch a lot of TV have an increased repertoire of small talk, and in today's world, video games are increasingly a team sport. All of those things facilitate increased human contact.
People who are fascinated with math and coding tend to have fewer peers who can understand what they are doing. Is this a bad thing? I don't think so. Maybe I grew up as more of an introvert in some regards, but in other ways I'm socially adjusted. I guess the challenge is to guide young people to seek out their peers (those who are fascinated with the same things), and to make friends without making everything into a competition. It's hard for young nerdlings to recognize a peer intellect without wanting to prove themselves better. There is a place for ambition, but that instinct can be a hinderance.
My two cents,
-t.
Re:Is coding really a team sport? (Score:5, Insightful)
Coding can be a hobby, in which case sure, you can do it alone (though for significant project, it gets rough, with all of the cross cutting concerns... someone who's extremely good at algorythms may totally suck at designing a public API... fairly common in CS-heavy companies that do a lot of backend stuff).
I'm guessing though, they were referring to coding in the real world (for a living), in which case, for anything significant (no, the ecommerce website someone makes as a freelance isn't significant), you'll need to be a good teamplayer. People who are good at making functional GUIs often suck at backend programming, and vice sera. People good in architectures often miss the details. Computer scientists often cannot understand project managers and architects. Thus, it becomes a team sport (like you'd have goalers, offense, defense, etc). Being able to work as part of that team is almost as possible (sometimes moreso) than just being good at your specialty.
Parent
Re:Is coding really a team sport? (Score:5, Insightful)
The problem is, you're lumping all development into some generic activity called "coding." That ignores the simple fact that being an expert in C++ does not make you expert at UI design. Being an expert at UI design doesn't make you a SQL whiz. Being a SQL whiz does not make you an expert at designing flexible & scalable application systems with many moving parts.
See the pattern? To make any practically-useful system today, you MUST work with other people who are expert in areas you're very likely not an expert in. You can create the best data model in existence for your company's payroll system, but if you don't have a clear understanding of the business rules, a good architecture, and a solid UI (and I've seen very few people in software engineering who are experts at all of the pieces that go into creating a good piece of software), the resulting product will be an unusable piece of crap that doesn't meet requirements.
Stroustrop's point of the single genius programmer is valid. The model you describe supposes that a single person can possibly learn and be expert in all of the disparate knowledge areas that are required to make a working piece of software, and in any group, the people who are capable of that level of insight & knowledge will *always* be the statistical outliers. Instead of punishing the majority of people for not being born with genius-level intellect, teach them how to be good at their chosen area of expertise, and how to relate to the people they have to work with to get things done. You don't have to engage in XP or some other "pair programming" methodology to realize value from being able to communicate clearly and work with your architect, QA / Reliability engineers, your customers, your project manager, and other developers who are working on separate subsystems.
Parent
Ha! (Score:5, Funny)
As a pizza delivery driver, I have to take exception to this. I see all kinds of folks but one guy in particular stands out. He always orders at least a large pizza and two lasagnas, usually with 2 or 3 2L bottles of pop and a couple (or three!) slices of cheesecake.
He weighs a good 400lbs, has 3 monitors and a laptop on the go at all times (one monitor for CSI or whatever show, one for a terminal, one for IM), with WoW on the go on the laptop. His desk has a path cleared to it amongst piles and piles of garbage - empty pizza boxes, empty takeout containers, half-eaten food..
Such a sight to behold.
So no, they're not extinct.
Conflicting goals (Score:5, Insightful)
I think the ultimate aim is to make programming more of an engineering discipline, more mathematical or scientific; "craft" and "art" are both needed, but there ought to be a scientifically based core on which people can base their craft and art.
We all know that we get to choose two of the three, problem is companies want all three without any consessions.
Also, imposing rigor on software design increases time and in certain situations cost, while increasing reliability. While we are definitely heading in the right direction as a field; there is a long way to go before we ever get to any kind of discipline that is both as rigorous as other science or engineering disciplines and usable on the scale that people currently expect software to be at. Real customers by and large can't (although some cases won't) pay for rigorous development. Hell, the mentality has been creeping into consumer electronics as long as I've been alive. The current market drives us towards fast and cheap and only towards reliable if the customer is pissed.
PHBs take note, please? (Score:5, Insightful)
What they generally don't see is that inserting a good developer into a culture designed to constrain semi-skilled programmers from doing harm is pointless because the rules/culture will constrain the new developer from doing anything significantly new and better.
I almost stood up and cheered when I read this, until I realized that nobody who can change things is reading, and besides I would have disturbed the other cubicle rats.
Re:Good point (Score:5, Funny)
Parent
Re:Choice quote (Score:5, Funny)
Parent
Re:Better English education as well. (Score:5, Funny)
/pedant
Quotes is a verb. I'm sure you meant to say "Read on for more choice quotations from the quotable professor."
/unpedant
Quote is also a noun. I'm sure you meant to say, "Read on for more choice quotes from the professor."
/gollum
Quoteses is also a plural noun. We're sure hobbitses meant to say, "Rrread... ON! for more choice quoteses... fromtheprofessor. My precious."
Parent
Re:He sure thinks a lot of himself (Score:5, Insightful)
Most of these topics can easily be researched and learned without a university.
Yes, they can be researched - but, let's face it: most people either think it's beyond them, think they'll never need to know it, or are just too lazy. The ones who would research it themselves are likely to be the ones who are good anyway.
Parent
Re:If they can't get a smart and social employee.. (Score:5, Funny)
My production would definitely be down if I had a cheerleader.
They have a pill for that now.
Parent