Avoid Comp Sci

Well, I got a severe kicking on comp.lang.* a while ago with this idea, I'll be interested to see how it goes on Wiki...

From InexperienceGeneratesFailure:

In my experience in the UK commercial software industry, most of the best software developers have not had a background in "computer science", or "programming". They have been, variously: mathematicians, physicists, electrical engineers, philosophers. I've heard that musicians and zoologists also do very well. There are, of course, exceptions. You may know some

-- KeithBraithwaite

I second most of that. (Pity - I'll have to kick you about something else.I'm sure it will only be a matter of time) My first boss avoided comp scis at all cost. I have modified that to ... "if we can't find someone more open-minded". There are, of course, exceptions as you say.

-- RichardDrake

That's an interesting corroboration, and a wise caveat. The folks on comp.lang.* thought I was a lone maniac, I think.

Unfortunately, I'll add a third to this. I used to work on a programming team made up entirely of a bunch of students. At least half of the decent programmers that I worked with and talked to over the years were in EE, not CS. It actually got to be a bit of a rivalry for us. A couple of the EE guys actively tried to convince CS people to switch over to EE.. saying that the CS curriculum was useless and that at least you'd learn something useful in EE (HowMuchDoYouLearnInSchool). Sadly, he was partly right, in some of the high level EE classes, they were writing useful signal processing programs.. I ended up doing similar things for really high level Music classes.

-- GeorgeGruschow


An analogy: Over the past few years there has been a fad for "high-tech" buildings, especially amongst a coterie of British architects: Foster, Grimshaw, and the like. These buildings typically have a lot of plate glass and uneven surfaces high up. Cleaning and maintaining them is a challenge. There's a big shortage of steeplejacks in the UK since the heavy industries demolished their chimneys a few decades back.

It has proved far, far, easier to hire mountaineers and potholers who have experience of climbing over and through tricky structures and train them to maintain buildings than to train builders to climb.

I submit that the skills taught in ComputerScience courses are more akin to the building maintenance skills than the climbing.


I'm ambivalent about this one. ComputerScience has a lot to offer. When I'm explaining things to people I've (at various times) used CS-like terms like BigOhNotation and NpHard problems, terms from SoftwareEngineering, and terms from compiler construction (like Parser, Lexxer, etc). Had I not had my CS background (I actually graduated with 2 degrees in ComputerEngineering, not CS, so yes, I'm qualified to install a modem :)) I wouldn't have had those referents. (And by the way, I used all of those in describing how and why to apply DesignPatterns).

On the other hand, I've seen people with Graduate degrees in CS really screw up projects because their minds aren't open enough to encompass the reality of what they're building, and the environment in which they are building it.

I think that you shouldn't try to AvoidCompSci, just avoid ClosedMindedPeople?.

KyleBrown

One's not as easy to test as the other at interview stage ... -- Anonymous

I learned about big O notation in the math department. NP-hard problems should also be covered in the math department. Parsers and Lexxers wouldn't be covered by a math department most likely, but many CS programs also fail to teach it.


That's just sheer laziness. [How many times have you tried to read through 50 resumes trying to decide who to interview, then gone into a two interview process including aptitude test(s)? SimplestThing sometimes applies here too.] I think that the main problem that the computer scientists to whom this thread applies (which is not all, and probably not even the majority, but is none-the-less a large number) have in this regard is that they fall in love with the solution, completely forgetting the problem from which it sprang. The solution becomes its own be all and end all. Unfortunately, this doesn't really do the customer a whole hell of a lot of good if it should happen not to meet his requirements.

A better test I think would be to find people who listen to what you say and ask questions to help determine what you mean. Avoid those who don't listen attentively or act based upon what they think you mean without verifying their understanding or become annoyed when you try to correct their misunderstanding of what you say.

Yes, I'm a computer science graduate, but I'd been working full time as a programmer for more than two years when I started and for more than ten years when I graduated - the computer science background just gave me a big bucket 'o tools that I could apply to my already messed up work habits. -- DonaldMcLean


"When you have a hammer, every problem starts to look like a nail!"


If I need a new accounting application I think I'd rather hire an accountant than a computer scientist. If I want an operating system designed, I think I'll hire a computer scientist...

That sounds pretty reasonable. My recruitment comments above were indeed to do mainly with building business applications. There is an interesting anecdote even so from the Unix kernel writing days of Unisoft (in the 80s) that I heard from the CEO there. They'd lost the whole team of experienced kernel 'gnomes', as they were called, in one raid from another company. A young guy who had no previous kernel implementation experience stepped in - and did a much better job! Don't know if he was a comp sci or not. But there's a lot of false mystique in most areas of software somehow. -- RichardDrake

My recruitment comments above were indeed to do mainly with building business applications.

Mine, too. Further, I'd suggest that, by volume, business applications are almost the only kind of software there is. -- KeithBraithwaite

Well, volume isn't the only measure... Where would all these business applications be if there weren't people who understood how to build a task scheduler or a compiler optimizer? There's a fair bit of computer science in the latest Java VMs.

That's true. There's a lot of comp. sci in compilers, too (I know because I had to teach myself a lot of it in my first software job). But, in the years since I, errr, parted company, shall we say, with that employer and moved into more mainstream development the need for formal computer science in my work has dropped away almost to nil.

On the other hand, I spend a good bit of spare time learning FunctionalProgramming and LambdaCalculus and such. I see this analogous to, say, a cabinet maker learning how to maintain their tools, and going on to learn how, say, a chisel or saw is made. -- KB

Also, don't forget that EmbeddedSystems make up over 98% of microprocessor sales by volume. Embedded work is more typically done by EEs.


There's a fair bit of computer science in a Java VM.

I doubt that, unless you count a "fair bit" what I learnt in Compilers 301. I don't, maybe because I'm steeped in papers from SIGPLAN right now. The Java VM was consciously created to be uncomplicated to implement. I bring this up to only demonstrate that you can create Java with only a very basic understanding of computer science. Ok, they got what they deserved technically, but Java is worth billions. -- SunirShah

Bear in mind that there's not the JVM any more (the original of the statement above is amended to reflect that). Unless your Compilers 301 course was a lot longer, in depth and focussed on the practicalities of the matter than is likely, it probably didn't cover many of the things that make HotSpotVm and its peers, for example, worth the effort. Notice that there's big differences between learning enough about compilers and interpreters to understand what a JVM does (or how it does it) and being able to implement one at all and being able to implement one that's small and fast enough to be worth having in some particular market. That last criterion is largely economic, and therefore is more to do with engineering than science, but the way to meet it is though this thing called comp. sci.

True, SelfLanguage is amazing. -- ss


I wouldn't avoid hiring someone with a comp sci degree, but I'd try to find out what other knowledge, interests, and talents they have. The most important attribute for a professional programmer is the ability to understand what the customer really wants/needs. It is true that CS people can sometimes focus too much on "elegant solutions" rather than meeting those needs, but there are also plenty of CS grads who don't have their heads in the clouds. An interviewee who tells me about their experience setting up a computer network for their local school or church, or one who tells me about work in robotics or signal processing, is going to stand out a lot more than one who tells me about their senior thesis covering compiler optimizations or advanced OO design theory. -- KrisJohnson


I would agree that there are people who are from different background doing well in software. That could be because of fast moving technologies. Regardless of the background, people have to learn new software and languages to stay afloat. So it keeps everyone in the same knowledge level. But personally I have found that thorough knowledge of the basic concept and philosophy comes through specialization. So in a sense comp.science have some advantage over others. Although this also could be achieved through reading books, how many people read compiler design in their spare time! -- VhIndukumar


I wouldn't mind the ComputerScience courses in college if they taught ComputerScience. -- PhlIp


The only problem with ComputerScience is that it didn't divorce itself from mathematics. It conflated two radically different models of computation: LambdaCalculus and VonNeumannMachines? and called it all "computer science". We're still picking up the mess. In my view the UK folks are predominantly of the former, when the "one true way" has become the latter. See TypeTheory. --MarkJanssen

It is all ComputerScience. ComputerScience is, by definition, the mathematical study of all computation -- it doesn't matter how radically different the models of computation are, they all belong under the umbrella of ComputerScience. Nothing has been "conflated" and there's no "mess".

As for "the UK folks", I am a former full-time SoftwareEngineer and current full-time academic who still actively develops software and has worked in both North America and the UK, so I know from experience that the UK is not more or less "one true way" than anywhere else. If you have statistics or other verifiable evidence to the contrary, please present it.


I just don't get this at all. In CS we even studied (quite a lot) about non-Von Neumann machines, and whilst we were taught a little LambdaCalculus it was never presented as the only mathematical model of computation... In fact we were taught quite a lot of things that were mathematical, but not directly related to the Von Neumann model nor Lambda calculus. It seems weird to me to see everything only in terms of those two: a bit like seeing sports as being either cricket or rugby. In computability theory for example they presented (but not studied in depth I might add) maybe four or five different formal models of computation...

People seem to get really upset when I mention that it isn't strictly necessary to know much formal computer science at all to be a pretty good developer. Now I'm not saying that CS is useless, and I never said people should not learn CS - I just observe lots of people doing extremely well without it. Would they do better with more CS? I suspect they would do brilliantly with it - but strictly speaking, it is amazing how we'll they've done with practically no CS education.

Slightly related: WikiReadersBackground


EditText of this page (last edited September 30, 2013) or FindPage with title or text search