View Single Post
Old 5th February 2008
Lives for gear

A little bit in defence of CS too. Whilst it is true that you can teach yourself to program a bit out of a book, and probably enough that you can do useful things, this is not the same as the background that you get out of a CS course. We pretty much figure that teaching you to program is done by the end of the first year of the degree. Indeed we never do much beyond the first semester.

One of the most important problems a manager of a software project has to deal with the is range of productivity between programmers. IBM did a study that determined that there was a 9 to 1 difference in productivity between the best and the worst programmers they had. I know virtuoso programmers who can produce staggering amounts of good code in very short order. And I have worked with dullards who seemed to be glacial in comparison.

Further, people who simply regard CS as programming are at risk of simply not even knowing what it is that they don't know about the course contents. Beyond learning to write code there is a good couple of years of theory, mathematics, engineering practice, and study of specific areas and paradigms that many people simply don't know exist. A well rounded and experienced CS major should be able to be highly productive in an environment that calls for much more direct theoretical and design capability than simply the need to write code. Sadly there are a lot of jobs that only require simple coding skills (I used to joking term these jobs as "cannon fodder" jobs.)

These ideals are the same in all cases: EE, CE, CS. What is important is to get the background in deep theory and mathematics well beyond what you might think the demands of your first job might be. It will be your ability to shine when the going is tough, and cookbook, cookie cutter style answers are not enough, that makes your career.