
Bjarne Stroustrup on Educating Software Developers - pchristensen
http://itmanagement.earthweb.com/features/print.php/3789981
======
pchristensen
"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."

Wow. I was a little anti-Bjarne because I'm no big fan of C++, but this is
gold.

~~~
thomasmallen
> as cheaply

In other words, talent costs money. Companies expect the good developers to
come out of the woodwork for a 35-40k junior dev position and wonder why they
come up with dregs.

But I agree. In the one year I spent at a university I ran into many CS
majors. Most were in it for the money.

Now these students were only taught in Java as far as I could tell, yet they
seemed to have no interest in the language. I'd ask questions about Java web
technologies that I'd only heard of (being more of PHP guy) like Struts and
what not, drawing blank stares. I'd ask all sorts of things that I'd heard
about the language, hoping they'd relate some experiences in regards to what
I'd heard, that the code was rigid, verbose, etc. I was especially interested
in what they knew about OOP which at the time I was teaching myself. More
blank stares.

Didn't take much more digging to discover that they were pursuing the degree
for the money and nothing more. I thought that it was very sad that I, a
History major at the time, had more passion for computer science than most
CompSci majors I met.

~~~
pchristensen
_Companies expect the good developers to come out of the woodwork for a 35-40k
junior dev position and wonder why they come up with dregs_

It's not that they expect good devs at that price, it's that they _can't tell
who the good devs are_. For grads, all they have to go off of are grades and
maybe an intership. Otherwise, it's just a resume. Without an effective way to
recognize good devs and with no portfolios, it's just a crapshoot. It's the
same information asymmetry that makes it hard to buy a good used car. As pg
(?) said, the only way to recognize a good dev is to work with them for a
while, and most companies and job seekers are unwilling to do that.

------
nradov
A major part of the problem is that many schools are still trying to cram
everything into a BS Computer Science degree. Both the students and industry
would be better off if schools offered alternatives such as a BS Software
Engineering and/or BA Software Development, which would focus more on
construction and somewhat less on theory. Some schools are doing that, but not
enough.

~~~
nradov
By the way, Richard Gabriel (one of the early Lisp experts) had some good
ideas for an alternative academic program.
<http://www.dreamsongs.com/MFASoftware.html>

------
mtoledo
So, is it just me, or he complains that students are pointed in the wrong
direction and therefore don't write "real/maintainable" programs, instead
focusing on more CS (algorithms, data structure) - but when talking about
java, he says the education needs to focus more on algorithms, data
structure.. ?

When talking about magic constants on students' code: "I have seen the result
of that attitude in new graduate students: It is rare that anyone thinks about
the structure of their code or the implications for scaling and maintenance –
those are not academic subjects. Students are taught good practical and
essential topics, such as algorithms, data structures, machine architecture,
programming languages, and “systems,” but only rarely do they “connect the
dots” to see how it all fits together in a maintainable program. "

When talking about the use of java in universities: "Education should prepare
people to face new challenges; that’s what makes education different from
training. In computing, that means knowing your basic algorithms, data
structures, system issues, etc., and the languages needed to apply that
knowledge."

To me this is like a "everything is a priority" problem. Students should learn
all of the CS stuff, and also all of the "realworld" stuff.

~~~
pchristensen
His emphasis is on problem solving. That's his complaint about having students
use Java libraries to build stuff - they don't learn how to solve problems.
You need algorithms, data structures and theory since it's the language of
solving problems, but you also need practice, feedback, and mentoring to get
good at programming. He objects to those academics who think programming isn't
an essential activity.

------
uuilly
Count me among those who who thinks the CS vs. Software engineering debate is
silly.

I never understood how you could teach CS theory w/o a lot of programming and
I have no idea how you'd teach programming w/o the theory. If you can't figure
out the big-O complexity of an algorithm you're useless and if you can't
implement it you're useless.

I also think that engineering degrees should not be crammed into 4 years. Just
to get the basics requires way more credits than a normal BA. Perhaps a BS
should be viewed as something between a BA and an MS and 5 years should be
standard.

~~~
gaius
Because most people working in software development aren't doing anything
remotely algorithmic. The vast majority of corporate/commercial software does
two things: it gets input from somewhere, either a user or another program,
and writes it to a database. It gets records from the database and formats a
report for a user or sends it to another program. And that's it. That's all
most websites do too. If it's XML then the programmer doesn't even need to
know parsing. You can - and many people do - work in software and be good at
your job, without _any_ theoretical underpinnings at all.

That's not to say that that's a good thing, mind, it's neither good nor bad,
but it's a fact that maybe 1 in 10 people employed in the software industry
will need to know big-O, perhaps even less than that.

~~~
azanar
_That's not to say that that's a good thing, mind, it's neither good nor bad,
but it's a fact that maybe 1 in 10 people employed in the software industry
will need to know big-O, perhaps even less than that._

I don't think the ratio is that high, simply because most people who do
software development aren't in the software development industry. They are
members of an IT team in an organization who profits come from the sales of
things other than software. Although the organization they are at might
benefit from software that solves real technical problems relating to their
product line, most of the time, they _are_ just writing ETL programs that
require little more than getting table names right. Of the people who work at
companies that see software development as one of their core disciplines, I
imagine the problems are sufficiently hard to make some knowledge of theory
useful.

------
mechanical_fish
_Had I been given such books as a 1st year student, I would have changed
fields. Those books were trying to spoon feed the students. Good students need
to be challenged! 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._

Let me testify from personal experience that Bjarne is on to something here.

------
dhotson
Bjarne has obviously never heard of the "School of Hard Knocks".

