[plt-scheme] CS Education Wishlist
On Sat, 16 Oct 2004 16:21:20 -0400, Matthias Felleisen
<matthias at ccs.neu.edu> wrote:
> What kind of training and can we (academia) help you if we failed you
> before?
In my experience (at a variety of companies):
1) More hackers (in the MIT sense), fewer copy-and-pasters.[a]
2) The ability to listen to users and solve the *right* problems.
3) Better project management skills.
HtDP does an impressive job with (1). But there's also a need for
people who can handle the non-technical aspects of developing
software.
It's amazing how few developers (and managers) actually solve the
correct problem. A good requirements process includes talking with
users, estimating the cost and benefits of individual features, and
deploying the software to the users early, so you can check your
assumptions against reality. The XP "Planning Game" is actually a
pretty good methodology for this, and you don't need to do the rest of
XP to use it:
http://c2.com/cgi/wiki?PlanningGame [b]
The essential idea: "Business" proposes features. "Development"
estimates how long the features will take. "Business" prioritizes
features. The Planning Game is basically a framework for thinking
about ROI, and it assigns responsibility to the correct parties:
developers do cost estimation, and businesspeople do value estimation.
If you do things the other way around, you're doomed. Of course,
there are many other good ways to plan projects, but students should
internalize at least one.
Similarly, I'd like to see more emphasis on project management and basic
software engineering. And I'm not talking about UML or CMM 5
here--I'd settle for people who score at least 6 out of 12 on the Joel
Test, left to their own devices:
http://www.joelonsoftware.com/articles/fog0000000043.html
Dartmouth (my alma mater) actually makes an effort here. In CS23,
they require students to spend half the course building real software,
in groups. By the end of CS23, most students can explain why
checking broken code into version control is a Bad Thing<tm>.
These skills aren't strictly computer science, per se. But they do
enable CS graduates to build bigger and better programs than they
could otherwise.
Anyway, that's my educational wishlist. YMMV. :-)
Cheers,
Eric
[a] Yeah, I know I recently argued that the majority of programmers in
the world will never advance far beyond copy-and-paste. But the
majority of programmers write Excel macros, Perl scripts, and
rudimentary database front ends. Anybody who takes a few CS courses
should know better.
[b] A more mature version of the Planning Game is available in Beck's
book, "Extreme Programming Explained", if anybody feels the urge to
explore.