interesting-people message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [interesting-people Home]


Subject: [IP] Re: U.S. colleges retool programming classes - Yahoo! News




Begin forwarded message:

From: John Kemp <john.kemp@mac.com>
Date: May 29, 2007 9:51:18 PM EDT
To: dave@farber.net
Subject: Re: [IP] Re: U.S. colleges retool programming classes - Yahoo! News

Why we need more CS students:

Who's going to design Emacs for computers without full keyboards?
Without understanding algorithms, how will the next Google (for example)
work at all?
Without a full understanding of (bio-?)chip design, how will you know to
design the next generation of electronics?
If you don't have a CS degree, how would you ever find out that LISP is
the one programming language no-one can live without?

Computer Science is about more than programming, or system
administration as we know it today.

A good CS degree teaches people the fundamentals they need to do
something new - it is both a lesson in history, and a blueprint for the
future. It advances the knowledge in that area.

I agree that many people don't need a degree to work in the tech
industry. But that doesn't mean we don't need students enrolled in good
CS degrees. Innovation is what will suffer.

Regards,

- John

David Farber wrote:


Begin forwarded message:

From: Zach White <zwhite@darkstar.frop.org>
Date: May 29, 2007 1:40:36 PM EDT
To: David Farber <dave@farber.net>
Subject: Re: [IP] U.S. colleges retool programming classes - Yahoo! News

Dave,

For IP, if you wish.

There's one question I have for everyone on this list: Why do we need
more CS students?


A bit of background for everyone before I jump into my question:

I'm currently 28 and have been working professionally in one tech job
or another for 10 years now. I've been interested in and learning about
technology since I was in grade school. Somehow my personal track kept
me away from programming and steered me towards a sysadmin career, but my
experience has put me into contact with many different programmers and
technical people. Today, in addition to my system administration work,
I also write web applications in php and python that are used in a number
of different organizations in the energy sector.

I have not attended college. I graduated from high school in 1998 and saw the writing on the wall. I moved immediately to Northern California and started working in the tech industry on the basis of my technical skill.
Had I gone to college I would have graduated just in time to hold a
degree that might get me a McJob (2002, just after the bubble burst.)


In my past I've worked for ISPs, local tech houses, software companies
and non-technical companies. There are a number of roles for which
companies indicate they want someone with an EE/CS or equivilent.
No matter what their actual dutites I've seen 4 basic archetypes:

The Genius; The genius was the smartest guy at the company. He knew how everything worked and was the guy that management went to when they had
something new to do.

The Programmer; The programmer was just that, the average, everyday
computer programmer.

The Admin; The senior system administrator, who made the decisions on
what their technical infrastructure looked like.

The Tech; The tech was generally a semi-skilled worker doing grunt work,
such as help desk, QA or system maintenance.


Let's take a look at The Genius first. The Genius is the guy that's been programming since he was 8. He started on a C64 or an Apple II with basic
and moved on from there. In high school he was reading Diijkstra and
Knuth. From there he either went on to the working world or he went on to
study EE and/or CS, often on a full scholarship.

These guys have universally put me to shame. I have tried to debate them
in my weaker moments and have always lost. I've talked to many of them
about their college experience and except for one guy all of them said
it was a waste of time. Of those that didn't attend college they have
universally said that they've never regretted not going.

The Programmer is by far the most common player. This is also the
player that is most likely to benefit from a CS degree. The problem?
They didn't learn anything useful.

I have had to educate programmers in basic skills they should have
picked up in CS 101. For example, not long after I joined a well-known
dot-com there was a vulnerability discovered in OpenSSL. Naturally I
upgraded it to avoid the exploit.

A couple weeks later our head programmer (who held a CS degree from
Caltech) came to talk to me about it. Apparently because I had installed both the shared and static versions of OpenSSL it was now being compiled
against the shared version. I spent an hour explaining the difference
between shared libraries and static libraries. He still wasn't convinced
it didn't matter. So I spent 30 minutes explaining to him (in step by
step detail) how to change '-lopenssl' to '/usr/local/lib/ openssl.a' and how it was no different than not having the shared library in the first
place.

The kicker? A couple hours later he came back with my boss and they asked
me to remove the shared library because they thought it was causing
problems. I did so and it didn't fix their problem. A month later I put
the shared library back and never heard another complaint.

For those of you unfamiliar with Unix the problem I just described is
a basic one. A programmer who doesn't know the difference between a
shared library and a static library is similar to a car designer who
can't tell you the difference between a carborator and fuel injection,
and has to ask the mechanic to explain the differences.

The Admins and The Techs are really in the same boat when it comes to
a CS degree. There's no reason for having them go through a CS program. If these jobs need any training after highschool it's best handled either
on-the-job or in some sort of vocational school. (Those have their
problems too, however. I will not hire an ITT grad, for example, as I've
never seen any worth their salt.)


This brings us around to my question; Why do we need more CS students?
Or, more correctly (if a bit harsh); Why are CS degrees so worthless?

The smartest guys, those who should be involved in getting their
doctorate, see it as a waste of time because they learned it all in high
school. There's nothing a CS degree will teach them they don't already
know.

The guys that would actually benefit from a CS degree aren't learning
anything either. Why? They're not being taught. Current CS degrees focus so much on algorithms and math that they see the basics as unimportant. They're teaching students to jump and do cartwheels but they don't teach
them how to walk.

There are a couple interview questions I ask every candidate that anyone with a CS degree should be able to answer in under a minute. Most (~60%)
of the candidates I've seen can't answer these questions.

The questions:

    Please write a program that prints out the numbers 1 through 10
    in the language of your choice.

    Please demonstrate a snippet of code in the language of your
    choice that will swap the value of two variables.

I'm not looking for specific answers here. I'm looking for whether they
can answer these very basic questions in under 5 minutes.

I've asked a number of candidates these questions. Those who did not
have a degree answered them every time, typically in under a minute.

It's only the people who have a CS degree that have ever failed these
questions. Some of those guys had more than 5 years working experience, too! To be fair, most of the guys that failed these questions were trying
to get their first job.

It still leaves me wondering: How did these guys gradutate with a CS
degree in the first place?

-Zach


-------------------------------------------



-------------------------------------------


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [interesting-people Home]


Powered by eList eXpress LLC