Let Go, Standard Library From Community

Dan murpsoft at hotmail.com
Mon Apr 23 12:32:25 PDT 2007


Jascha Wetzel <[firstname]@mainia.de> Wrote:

> > You really don't need a CS degree to do most IT jobs
> 
> 100% agreed

I agree too.  I'm not saying "anyone can do it"; I'm saying that a degree doesn't provide as much as it ought in this particular field.  I found my experience almost debilitating and I think there are a few reasons why:

1) By the time you're done 4th year, the exactly implementation you were taught starting 2nd year is already obsolete.

2) Professors were taught by their professors were taught by their professors.  The teacher typically has never been in the industry, and doesn't really understand programming beyond trivial examples on a theoretical capacity.  They're also typically still stuck in the same paradigms and with the same tools as their professor's professor (the 70's).

3) First year professors are really there to study a master's, not to teach.  They typically suck at teaching, not being able to frame the paradigm with the right analogies, but merely having acceptable technical knowledge.

> 
> i'll have to stand up for the CS majors here, though... ;)
> i think, these (fairly typical) statements about CS majors are highly
> dependent on the university. i attended exactly one lecture during 

For anyone interested, don't go to University of Calgary for CPSC.

the
> first semester of my CS major that was supposed to teach you something
> about programming. it was actually more an overview of programming
> paradigms and languages types. that's it. no more programming taught for
> the rest of the at least 4.5 years.
> therefore, argumenting that you can learn programming on your own and
> don't need to have a CS major doesn't make much sense to me, since you
> have to learn it on your own even if you do have a CS major.
> 
> what i've learned instead:
> - calculus (incl. numerical and differential)
> - mathematical logic, knowledge representation
> - designing, analysing and proving correctness of algorithms
> - loads of algorithms and data structures
> - linear algebra, 3d geometry (incl. curves and surfaces), rendering,
> lighting simulation
> - image analysis, compression, etc. (incl. fourier analysis, btw)
> - some machine vision, pattern recognition
> - language theory, compiler construction and optimization
> - processor and operating system concepts
> - analog and digital electronics basics
> 
> i don't regret having spent time with any of this.
> what i regret not having taken classes in is cryptography. i hope i'll
> find the time to make up for that...

I wanted to fill the gaps in my skillset, such as learning x86-64 assembler, networking and cryptography, and advanced data structures and algorithms (geodesics, graph theory, neural net algorithms, min-max trees etc.)  

No dice, but I've since learned a couple of those points.  
I also wanted a piece of paper.  No dice.

> >> Chris Nicholson-Sauls wrote:
> >>> I tend to tell people that all forms of art seemingly arise from some
> >>> form of science. Programming just happens to be an artform still

It really is a trivial science, if you can see through it.  We've built such an abstraction over it that it's hard to see that underneath a kindergartener is learning to use all of the same concepts as a first year university student.

> >>> closely linked to its base science.  And our own Walter -- if I
> >>> recall right -- is a prime example of a major developer whose
> >>> background is in something else.  I'm pretty sure those airplanes
> >>> didn't require new compilers.
> >>
> >> My training is as a mechanical engineer, with an emphasis on jet
> >> engines. I was fortunate enough to attend a university (Caltech) that
> >> thoroughly believed that all their sci/eng majors should be well
> >> grounded in a broad range of fields, and as I've gotten older and
> >> wiser I see the value in it now.
> >>
> >> Caltech requires of all its graduates:
> >>
> >> o    3 years of calculus
> >> o    2 years physics
> >> o    1 year chemistry
> >>
> >> among other courses.
> > 
> > If all you know is CS, then I think you're restricting the kind of work
> > you can do.  It's not too tough to figure out how to be a competent
> > programmer coming from a hard science or engineering discipline.  But
> > going the other way is pretty much impossible.  My tack was to take a
> > lot of CS courses, because they were fun and relatively easy, but go
> > with EE as the major.  It was much more difficult, but I'm glad I did it
> > that way.  The decent grounding in calculus, linear algebra, Fourier
> > analysis etc that I got from that has allowed me to do things I never
> > would have been able to consider had I just gotten the CS education.

Good stuff.  We can't just "program", we need to have a field in which we are good at programming.  For me, I'm particularly good with regular expressions and data mining, and I like refactoring code.

> > 
> > I've heard that CS departments at schools these days are suffering from
> > a big drop in the number of majors.  But that seems to me to be as it
> > should be.  The IT boom brought on a lot of silliness.  You really don't
> > need a CS degree to do most IT jobs.  Yes, *everybody* needs to know how
> > work with computers these days to varying degrees.  Just like everyone
> > needs math to varying degrees.  But that doesn't mean there need to be a
> > lot of math majors, or CS majors.   Almost everyone takes a class or two
> > from the math department, but very few major in it.  Likewise, pretty
> > much everyone these days should have a class or two from the CS dept,
> > but we don't really need that many majors.
> > 
> > --bb

We actually do need those few people who are exceptional at CS.  Desperately.  A genius in CS who implements, say, bittorrent or linux or google.com can change how the world works and save us all billions and billions of dollars.

The unfortunate fact is, that unless you're in the top 1% at it, you really shouldn't call yourself a programmer; or rather it should be distinguished that you can hack your way into making a computer do something versus actually understanding the machine and breathing it.

Sincerely,
Dan



More information about the Digitalmars-d mailing list