

Where Are the Software Engineers of Tomorrow? - yesraaj
http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html
Where Are the Software Engineers of Tomorrow?
======
ealar
This guy suffers from the "schools are job training" mentality that I've
noticed has grown in popularity recently. He expects students from the
university to be able to work on his development environment without
significant retraining, when he is not using the development environment that
the universities are teaching.

The fault here is in the business owner expecting freshman grads to be skilled
in highly specialized software development specific to their business. The
schools are pumping out students who are perfectly good programmers, and if he
actually trained them to use his tools, they would be good programmers for his
environment.

Edit: To be clear, if the were a university teaching only Java to the
students, it would be a bad university. Such a university doesn't exist. If he
wants formal methods, he needs to higher Masters students or higher -- or
optionally donate a few $$ to a CS department in exchange for adding the
course to ugrad.

Edit 2: I'm going to stop editing this now.

------
tjic
> worrisome trends in CS education ... Mathematics requirements in CS programs
> are shrinking.

Speaking as someone who had to take several attempts at differential equations
to pass it, and has (a) had a very solid career since graduation; (b) has
never used even integration or differentiation a single time since graduation,
let alone numeric methods, etc., I call BS.

Tons of math is useful for about 1% of programmers.

For the rest of us, it's just a form of hazing, like intern doctors being
forced to work 48 hr shifts.

~~~
jmtulloss
Differential equations is probably not the form of mathematics he was
referring to.

Algorithms, linear algebra, basic logic and discrete math are all used
commonly in many CS jobs, especially by those who have a deep understanding of
the systems they're working on.

------
randrews
This guy has written several articles in recent memory complaining about
nobody teaching/using Ada any more.

He runs a company that sells Ada dev tools, so I would take what he says with
a grain of salt.

~~~
three14
I took his (Dewar's) programming languages class in the master's program at
NYU, and he certainly knows other languages well. He does have an Ada bias,
but he had quite an uphill battle getting the _master's_ students to write
simple Ada programs during the part of the semester devoted to Ada. His basic
complaint isn't about Ada specifically, and was well supported by his actual
students' performance in Ada and Lisp, if I recall correctly.

------
biohacker42
As a long time C++ programmer, I'm not sure C++ matters for the reasons given.
C matters, Lips matters, Smalltalk matters, C++ only matters in the if you can
grok this you can grok anything way.

Also I strongly suspect the number of good software engineers is pretty much
fixed, and no amount of fudging with this or that will change it.

Now the number of bad or at best average engineers, I suspect that is very
responsive to all kinds of things.

------
gills
Answer: they are working on other projects. The ones that have already left
the stone age, and choose tools on merit rather than fear, dogma, and "that's
the way we always did it".

Disclaimer: ex-defense programmer. Java. C++. <shudder>

------
brianto2010
Wait, I'm confused.

> " _Over the last few years we have noticed worrisome trends in CS education.
> The following represents a summary of those trends:...the development of
> programming skills in several languages is giving way to cookbook approaches
> using large libraries and special-purpose packages._ "

I agree with the "several languages" part, but why is using a large library a
worrisome trend? Is it really that bad?

Using a library doesn't seem like a bad idea to me. Programmers often advocate
code reuse and using a library is an example of code reuse. If you need to
sort data, use a provided sorting algorithm or one written by someone smarter
rather than writing it yourself. If a problem is solved, don't solve it again,
right?

Does it have to do with understanding the solution to the problem?

~~~
josh_nyc
I think they are referring to the fact that students new to programming learn
to "always" rely on stringing together pre-existing libraries (namely in Java)
rather than gaining experience by creating some functionality, algorithms,
etc. from scratch.

FWIW, I took a class taught by Shonberg (about OOP) when I attended NYU.
Ironically NYU CS majors are required to take several classes that use Java,
so I guess he wasn't able to convince the administration of his views.
However, I learned a tremendous amount from the algorithms and OS courses
there, and there were some great classes still using C and C++.

------
medearis
I particularly agree with this point -- "students need to be exposed to the
tools to construct large-scale reliable programs..." The individual technical
component is only half the story. Real "software engineering" involves
developing software which can be understood by others, expanded and scaled,
which I have found to be just as hard as nitty-gritty pointer math.

------
geebee
It all seems like a pretty fair assessment of what a programmer ought to know
in terms of programming languages. We can all find things to disagree about in
the details, but this seems very close to Eric Raymond's "how to become a
hacker" essay. Python, C/C++, Java, Perl, and LISP. Maybe you'd want to switch
out Perl for Ruby, and not bother with Ada, or add Haskell...

The thing that gets to me is that we fret so much about the curriculum. We all
know the list, we either choose or don't choose to engage with it. I don't
think this can be pushed into someone's head anyway.

------
wslh
For a quick answer, go to
<http://www.sce.carleton.ca/dept/departmentNews/ranking.pdf> instead of this
link. It has a ranking of software engineering scientists based on publication
metrics. Obviously it isn't the only metric to trust but there is enough
information for further research.

------
Tichy
Don't tell me what to do.

------
kvh
disagree completely. ada???

~~~
andr
i guess it matters if you are writing a fighter jet OS.

~~~
spoiledtechie
I work on the Fighter OS's and believe you me. They are complicated ada code.

EDIT: Tho, I do work on C# and C++ and the Mil is moving away from C# because
it basically has a garbage collector....

~~~
andr
Didn't they know C# has a garbage collector before they started using it?

~~~
spoiledtechie
They do and thats why they don't use C# for action oriented missions or
mission critical apps.

------
daniel-cussen
They're getting beat up in gym class.

~~~
daniel-cussen
I'm not being sarcastic. I was a nerd activist for a while and there really is
nothing that protects them from this.

