Fog Creek Software
Discussion Board

Should geeks skip college?

Do programmers need a CS degree to be effective? Or is it possible for a programmer to each himself everything he could learn in a university?

This topic first appeared on Slashdot a few years ago -- -- back when everyone was employed and overpaid. I would like to see it revisted now that the Great Internet Boom is over.


Sunday, November 18, 2001

If the person in question wants to get a nice-paying job, it would be very foolish to decline college if there's a choice.  But in terms of really understanding programming, nothing about getting a job... there is no single path.

My personal story is that I skipped college after my first year and went straight to work for the physics department.  Afterwards I got my education working in the biz.  It has been three years after I left college now, and while I have quite a good education in the ways of programming, it is extremely difficult to do this now, without being wealthy.

Programming is not "knowing a language."  I had to do double-work, learning data structures, algorithms, patterns, mathematics, etc.  I am still at work shoring up enormous holes, but at least I am at the level where I now see how each new thing I learn can simplify what I do by orders of (well, binary) magnitude. 

People will say that no one really uses algorithms anymore, and maybe only 1% of your thoughts concern them.  But that is a very useful 1%.  Maybe I am going overboard in these claims, since freshly-minted CS students have no guarantee of skill.  But one simply can't just live life without going deeper into things.  If a geek is defined as someone with passion for tech, they should really understand what lies behind the tech, unafraid of feeling stupid upon having to learn things.

Roger Hobson
Sunday, November 18, 2001

Why? It is a great place to meet other geeks.

Many companies asked me to take a break from school during the dotbomb era. Oh you can make a lot of money by being a code slave at my But then I noticed the first set of people who were fired during the dotcom bust were the noncollege educated geeks. Sure Bill Gates and four other rich guys dropped out of school. But the odds are against you.

School is also a great place that forces you to learn things you might have never though useful. You might take a course in discrete math and study modular arithmetic and feel oh what a waste. Then you get a computer security job and you find that you can actually use this knowledge.

Why take the risk?

Mark Brown
Sunday, November 18, 2001

I'm in college now, and am extremely self taught. I taught my self C, Java, Perl (kinda). I taught myself, not without help from a course, C++. I'm currently a first-year student at a college.

You need to go to college :). I know a lot. But the more you know, the more you know you don't know. I mean, I know the language, sure, but actually understanding algorithms will never hurt. It may not help, but knowledge is NEVER harmful.

I'm taking a calculus course. Sure, I don't exactly know where I'll use it, but I know a math background is good, and I think it's really hard to learn a lot of this on your own. At least, your not going to be able to work and dedicate this amount of time to it.

And then there's another option: time to play! Ok, it sounds lame, but as I stated above, most of what I know is self taught, in my spare time. Now, if I were working full time, I would likely not have the time to learn that much.

Experiance is invaluble, and in college you can fail. It's allowed. I don't know how the 'real world' is, persay, but I imagine a client that's paying six figures for a project will let you try again next semester if you screw up.

And then maturity: I know extremely few truly mature 18 yr-olds. I wouldn't hire them, and chances are, I wouldnt hire me either. Not as I am now: I'm not good enough, and I've dedicated more time than the majority of people, even many geeks.

As a self-taught student who has considered what you asked, no I don't think I should skip it.

Mike Swieton
Monday, November 19, 2001

I shouldn't be saying this, but no...geeks should not skip college.  College is about learning how to learn.  It is not a trade school for programming.  The rounded education you get in college goes a long way to understanding the big picture of problems.  And in reality, programs are just problem solvers. 

I say I shouldn't be saying this because I went to very little college.  I started programming (ok, being paid for programming) at age sixteen.  I was working on SuperDOS systems (a multi-user CPM system).  I ended up dropping out of high school to program.  Even though I did get my GED and take a year and a half of college, I still feel like I missed out on the rounded knowledge.  To this day, some programming tasks that could be thought about with higher maths that I was never exposed to.  I wish I were and I wish I had the time to learn it now.

On the other hand, I have a very close friend who is a professor of CS at a major college in the south.  The tools they are using to teach programming is archaic.  I would stress using more 4GL's and C++ in college and <B>require</B> internships and coop programs.  Students coming out of college think they know everything they need to know, but until you've been in the trenches trying to release software to a schedule.  You are just averaging grade IMHO.

Shawn Wildermuth
Monday, November 19, 2001

Since I've been looking for employment for about 6 months, touting the Masters Degree in CS that I'll be getting in a couple of weeks, I can assure you that having a degree does NOT mean you will have a job. 

It seems this little beast called the economy can have a rather important affect as well.  When all the dot-commers bought (or rather lost) the farm, all their groups of coders suddenly were looking for employment, and the market was flooded. 

Now I have another important reason (besides those listed above) for staying in college.  It gives you something to during the recession.

Bill Dunsford
Monday, November 19, 2001

I am a self taught programmer, but it took college to understand see the little aha moments.    I remember spending too many CS courses bored, answering questions I thought were obvious.  The thing I learned in college was that:

I don't know everything, and that even the most basic course will teach you something.

I now code for an insurance company and in my free time I keep learning by coding what I love.  I have learned things doing both and that is the best thing anyone can do IMHO.

Andrew Brown
Monday, November 19, 2001

I think Geeks should defintely go to college. I went back after ten years working in the computer industry, I found most of my first year boring, apart from the Discrete Mathematics which was both tough and extremely relevant. The second year was getting better, but the star was the third year when I chose to do Formal Specification using Z and the Theory of Relational Databases. These last two were extremely mathematics heavy, but at the end of it I felt I understood something much deeper than the superficial arguments about languages and design techniques. I also got to realise that Ted Codd is an immensly intelligent man.

The only downside from my three years was a distaste for programs or designs that are not rigourous. I hate it when I see bad code or hear someone say "But it works", I just want to scream !

Back onto topic, your time at college will not be wasted, but choose the technically heavy stuff, its where the interesting morsels of knowledge are to be found.


Jonathan Naylor
Monday, November 19, 2001

No way.
There's no good developer without good theoretical base.
I'm finishing my first degree in Computer Science and can't imagine
myself becoming a geek without changing the way my head thinks - thank's
to the lectures, classes and home exercises we've passed through.
No Java or Perl book will ever explain me the Automata or Graphs theory and
that's only the basic things in the science, I think.
Someone having the built-in developing abilities may be good
with the code without any formal education. But he ain't going to be
the best in software engineering.

Considering myself a geek I'm planning the second degree next year.

Goldin Evgeny
Monday, November 19, 2001

For sure!
Colleges are for loosers. Just check these messages - "I'm a self-taught geek and I know this and that and colledge is good for me". From the first sentence you can smell the looser - if you know what I mean.
I spent 9 years in school - I've got a little bit above MS in Physics. And now I'm looking on those dusty volumes on quantum mechanics and thinking about wasted time.
Repeat after me - schools are for dummies. Do geeks read Dummy books ? Then they are not geeks.
It's not how much you know - it's how much of that knowledge you can use. A person called 'geek' is the one who already knows a big deal about technology. Use that knowledge, if you're a real geek.
The trouble is that people who called themselves 'geeks' usually mean something else - long line of 'geek code' or
'ability to whistle 1200 baud' or 'having a nose ring'.
For those people colledge is good place to be but not for education purposes - kind of reservation. If we get enough of them for sampling we can do a good study on abnormal behavior.
For normal people who can read and listen there is no need in colledge degree. Any Edison around here ? Faraday ?

vlad im ir
Tuesday, November 20, 2001

I don't mind too much you calling people losers, but I disagree that living an academic life is useless.  Just make sure to have lived life in total, otherwise you'll end up a pissed-off postgrad.

To look at it in unemotional terms, college is a place where intellectual property is less expensive.  Sure, you probably make less money there, but you get the huge libraries, pirated software and fast connection speeds.  The rest of us have to be content with O'Reilly type books unless we have easy access to a good university library.

forgotten gentleman
Tuesday, November 20, 2001

I did Maths (quantum mechanics, etc) at college/university, which I haven't used since.

A company (Nortel) hired me when I graduated, and let me begin to learn programming on their dime.

Therefore it is possible to be 'a geek' without having studied CS at college.

I pretty sure though that my having *a* degree was instrumental in persuading HR that I was worth hiring in the first place; and, that was many years ago (today, employers may or may not be happy to see e.g. Maths instead of a more specific CS); and I also believe that to be a good 'geek' you do need to practice a lot, full-time, whether as a professional or as a student.

Christopher Wells
Tuesday, November 20, 2001

Is college *necessary*?  Of course not.  It's certainly possible to teach yourself everything you need to know.  Abraham Lincoln had almost no schooling.  Bill Gates dropped out of college.

However, not everyone is Abraham Lincoln or Bill Gates, and, even if everyone were (it'd get kinda confusing, though <grin>), college would still be very *useful*.

Some education is necessary.  There are certain things you simply need to know to be able to function in life, in a job, etc.  You don't need to get it from school, but school has proved to be a very effective means.  On the other hand, some education isn't necessary; you can live without it.

But the question is, should you?  You can live a fine life without ever seeing a painting by Monet, Rembrandt, Van Gogh, or Picasso.  You can live a fine life without reading a single word of Chaucer, Shakespeare, Twain, or Joyce.  You can also live a fine life without taking a class in philosophy, or in history, or in computer science.  You can fall in love, have a family, and even hold down a good job.

So you just have to ask yourself if a fine life is enough for you.

Matt Blum
Tuesday, November 20, 2001

I don't think the question was "is it possible for geeks to live without a college".
Of course, it is. It's not even required to finish a high-scholl for living.
But. If we're talking about good software engineers - there should be no doubt,
I think. Someone above told about studying physics or something like that ?
Buddy, did you try to study a computer science instead ? I also did 3 courses in
physics and they were almost useless for me, so what ? College education for
software developers isn't about some boring chemistry or literature, it's about
getting a theoretical knowledge in *Computer Science* you'll probably not going
to get anywhere else. Sure, "I can learn from books" - do you ? Let me see you studying
alone (again) Graphs or Automata theory ! How will you know you have to study what
is DFA and NFA ? Even after I knew I *have* to know this - the process wasn't much
entertaining, coding is more fun, but .. I have to know that.
Geeks, what do you know after "studying from books" ? Hacking Linux ? Coding Perl ?
Threading with Java ? Querying a DBMS ? But may be you have to study a
"Programming Languages" course to understand the beauty of Perl, "Concurrent and
Distributed Programming" for studying about clock vectors and distributed
garbage collectors, "The Theory Of Data Bases" for knowing that SQL isn't the
only and comfortable language for making a queries .. I may be wrong, but still,
I think that nothing can replace a formal education.

Evgeny Goldin
Tuesday, November 20, 2001

> Buddy, did you try to study a computer science instead?

So far as I know, in those days there were no undergraduate computer science courses at university; few personal computers; so, it was usual to learn 'on the job' (only a company could afford to own and let you access a computer).

> Sure, "I can learn from books" - do you?


> Let me see you studying alone (again) Graphs or Automata theory!


> How will you know you have to study what is DFA and NFA?

By whether I can do my job without? By whether peers tell me I need it?

> Geeks, what do you know after "studying from books"?

If you read enough, it's a good start. You need practice too. Also there is stuff such as team-work, working on large projects, etc., that perhaps you don't learn at college.

> I think that nothing can replace a formal education.

For any kind of experience, it's hard to find an exact substitute . <g>

Christopher Wells
Tuesday, November 20, 2001

I have met people with honest-to-god bachelor's degrees in CS, who wrote one line of code per minute with Notepad, insisted on documenting the hell out of everything while simultaneously producing crappy documentation, who couldn't touch-type, who had no problem with using the mouse to do all their tasks, and ultimately produced bug-ridden code.

I also once had the dubious pleasure of talking to a fresh-faced kid, new to college, but obviously not new to coding, who insisted he had a polynomial-time solution to the traveling salesman problem.  Numerous other self-styled hackers were feature creatures, or considered a CLI with scripting ability to be the perfect interface for business wanks.

If you ask me, you need both a college education, and the otaku gene.  (That's the gene you see in people who were had computers as parents and grok the whole coding thing.)

Paul Brinkley
Tuesday, November 20, 2001

Geeks need to know what is DFA because one day they'll read "perlfaq", "perlre" or any other regular expression tutorial and won't have a clue what those FAs are about .. Geeks need to know Graphs theory because one day they'll have to build a dumb graph and find, say, minimal spanning tree in order to optimize the "Travelling Salesman  Person" problem solution .. I can continue.

Sure, there are college graduates I was shooting if I could - we had one such with 87 average grade producing awful code and doing every mistake he could.

Right, to be the good and the best you gotta have the buil-in developing tallents *and* the formal education. Experience is everything, always !
But. You want move too far wearing only it, I think.

Evgeny Goldin
Tuesday, November 20, 2001

Oh .. We don't learn in college what the team work is, what the real-world development is and what the actual fun in hacking is. Of course !
But that's not the point of education - you get those things sitting in your chair/office/cube from 8:00 up to 17:00/23:00.
As I said, experience is everything and that's exactly the second half geek should carry in his hands. I'll never going to give up about the first one

Evgeny Goldin
Tuesday, November 20, 2001

Sorry, it had to be "won't" instead of "want" (last sentence in my posting above)

Goldin Evgeny
Tuesday, November 20, 2001

Hello, Its first time I am writing here. (kinda tense ;-) )

Question is : Should geeks skip college ?

I think it should be left to geek to decide upon.


I don't think one should skip college whether geek or not.
I mean, college is for you to learn things other than those regular expressions. Its finally upto you whether you want to learn it or not.

If I talk about me, I have done graduation from electronics engineering but my passion is for computers only. In my college, I had CS students who didnt know how to use that Format Painter in Word. They studied full course on Perl/CGI but doesn't know where to start when writing their web application.

One can learn without going to college too, but what I believe is that College builds you as a person. College helped me improve my communication. It taught me how to impress professor by solving the problem the way not mentioned in the book. It helps you build YOU, and not your 'geekness' .

Bottom line : Do not skip college unless you have no choice left, IMHO.


Wednesday, November 21, 2001

"Pissed-off postgrad ?" - haven't heard that name before. Sounds good, lean and mean.
I expected more - I guess "colleges for losers" was not a very good flamebait.
My statement "Only the knowledge you can use does count" was only confirmed by proponents of college education.
You may know DFA, NFA, Cell Automata, Turing Machine and all that stuff but do you really use at your job ? I took some CS classes and know something (we were prepared to build custom ADC boards for fetch real life data) but this knowledge has almost no value for me now.
Heck, I can built tube amplifier - so what , brag about it in the bar and somebody send you a drink. That's all.
All I use now I learned from book, other people and job traininng. And let me assure you CS is nothing in compare to what I studied in college.
I treat training classes as extra vacation time.

Let's put it other way :
SysAdmin is a good job for a geek - is there any CS classes that teach system administration ?
Not MCSE crap, I'm talking about real systems.
And I haven't started yet on quality of college education.
As a summary (for MBA graded people):
Geeks should go to college only if they cannot find spawning opportunities elsewhere.
Or to set up a hacking/worm/virus farm - security of servers on campus is a laugh.
Otherwise :
The less you know the better you sleep.

piss'd off postgrad Vlad im ir
Wednesday, November 21, 2001

Oh, Vlad, if "sysadmin" is a good job for you - that's where I start understanding you.
When I was talking about software development I meant developing much more serious things
(then baby-sitting a PCs farm) where you DO use your theoretical knowledge. Look at Google - do you think they've built it without using Graphs, Automatas, Turing machines theories and bunch of other theorems and algorithms ? One big NO, I bet there is a group of core academic staff sitting there.

Goldin Evgeny
Wednesday, November 21, 2001

I think the *real* purpose of programming is to do something in the actual world and the computer is merely an adaptable tool, needing to be "shaped" by the programmer. 

I did electrical engineering, and I have used about 1/10000 of what I was taught.  BUT the degree did give me a wide background of math, physics, civil & mechanical as well as electrical engineering, to understand how to program for real-world problems, and how to think about math problems in business.  So the esoteric math and physics, and heat-engines was not a waste - there isn't really another way to to get that kind of knowledge.

I taught myself to program, trying to solve problems in engineering that I had -  making things work - not the abstract theory of algorithms.  If I had learned CS, I probably would have used 1/10000 of that too, and would know very little about the other practical things in the world.  I'm a bad programmer but a good application developer.

An IBM programmer told me that they looked for OTHER degrees than CS because they made more *useful* programmers.

I know a geek who did nothing except program from age 14.  He now has a wonderful job at SCO writing bits for UNIX.  He is in the right place, but how many geeks are needed for this sort of thing compared to how many business-programmers are needed?

Dermot G. C. Herron
Wednesday, November 21, 2001

This is not exactly a "me too" comment, but I do agree that programmers shouldn't necessarily be hardcore CS-only types.  I'm noticing a trend towards domain-specific programming.  Apparently we had built a good deal of infrastructure over these decades, and now using that infrastructure for those domains is becoming increasingly useful.

Pure CS teams will need to be combined with people who can straddle the target domain and CS, translating between the two at the level either requires.

forgotten gentleman
Thursday, November 22, 2001

Google and Turing machines?


Now I've heard everything.

Leonardo Herrera
Thursday, November 22, 2001

> Google and Turing machines ?
Of course, not - they read the book "Step by step - how to build the most successfull and powerfull search engines ever", because who needs those lame algorithms ?

Evgeny Goldin
Thursday, November 22, 2001

Hmm .. I've just thought: so geeks suppose they can study anything they want "from books". And this should probably include writing compilers, inventing new programming languages and technologies, developing network protocols from the scratch, etc, etc .. ?
Sure, not everyone of us will ever do this sort of things, but some people certainly will, right ? Besides, geeks, did you ever think that *someone* is writing those books ?

Don't talk to me about coding viruses and hacking university servers - those loosy actions are definitely not easy but are also not a challenge at all for intelligent developers.
For this, right, you don't even have to visit your high-school, English is more then enough.

Evgeny Goldin
Thursday, November 22, 2001

Well, I'm writing too much, but .. couldn't forget someone calling himself "hacker" (he was actually able to crack some web-servers) but asking me more-then-stupid questions about HTTP.
Just a piece of geek, really.

So, did we define who is "geek" ? Because the answer to the main topic definitely depends on it.

Evgeny Goldin
Thursday, November 22, 2001


I've helped to write 'a compiler'; *and* I've developed a 'network protocol' (though not from scratch: it runs on top of existing protocols such as Ethernet, UDP, IPX).

Think about it: this knowledge exists not only in books, but also in 'the Real World' (ie in the workplace). If there were any knowledge which existed *only* in College and not in the Real World, then ... [you'd have to go to College to learn it, but it wouldn't be that useful].

For some professions which are licensed (engineer, doctor) you *must* go to college as part of getting the license; programming is *not* one of those professions; you *can* get *this* experience in the Real World instead, *if* you find someone who is willing to employ you.

Furthermore, exployers will be hiring you based on your supposed ability to Get Things Done. Finishing a College degree is one way, but not the only way, to convince prospective employers that you can Get Things Done.

FYI and FWIW, my late boss *preferred* to hire programmers who were "self-taught" than people who were "spoon-fed" at a College CS course (he assumed they were *more* motivated, *and* better learners).

{Incidentally, I think I just found a bug in this newsgroup thing: if I start to reply to a thread, and then you start to reply to the same thread, and then I post my reply, and then you post your reply, then I think that your reply may be lost.}

Christopher Wells
Thursday, November 22, 2001

Some of you think that colledge is the only thing graduates learn. Like they give up about the expecrience and don't learn in the "real world" and "real teams". Surprise ! It's not like that at all - only after I started to work I began filling, understanding and appreciating my profession much deeper.

I know that things you get in your place you're not getting in classes, it's two separate worlds .. I already said that "real world experience" was never point of high education (and thank's for that, I had only 4 years of studies vs 20 years of "real world" to come). Some of your bosses  thinking of CS degree as a disadvantage after seeing bad graduates .. Hmm, there's nothing I can do here, let them stop using the car because some drivers get drunk and make accidents.

Self-educated geek writing a compiler or developing a new technology isn't impossible at all, but I strongly believe that only ~5% of very talented seld-educated can handle those problems. Why ? Take a look - Vladimir thinks that sysadmining is good enough for him, other self-educated engineer at our place didn't understand what I mean when I asked him to prove the correctness of his algorithm - he never did that ! That's I believe the usual level of self-educated - repeating stuff they saw in books, nothing creative or advanced. So, while some people can still be best in the field (and wipe me out) without getting a CS degree, IMHO, it's not the rule but only an exception. The same about shitty graduates I wish they were driving a bus instead of doing this work. If they stop their education after getting the degree - they definitely don't worth a lot.

And I'm not talking about being employed *in this topic*. The question (for me, at least) isn't about money or getting a job. It's about our profession and getting BOTH the best knowledge AND experience we can get in order to do it best.

Goldin Evgeny
Thursday, November 22, 2001

1) My first sentense in the previous topic had to be "Some of you think that colledge is the only place graduates learn"

2) "Getting things done" is good, but why don't you ask "how those things get done" ?
I can repeat the story about self-educated engineer who almost implemented some encoding algorithm without proving that correct de-coding process exists. He was also about getting the thing done.

Killers usually get their things done - why won't we hire them instead ?

Goldin Evgeny
Thursday, November 22, 2001

Be you geek or not, college should not be looked at as only an academic experience.  Sure you can learn a lot about mathematical theory and algorithims and all that cool stuff.  But what you also learn are organization skills, time management, dealing with teams, dealing with bosses (professors), presentation skills, meeting deadlines, diversity, etc.  I would much rather get my feet wet in university and make some mistakes before I am in a boardroom trying to sell a C-level on the merits of some particular technology with aother  deliverable due yesterday.  As well, it is a time to discover yourself, interact with other people, pursue interests, and find yourself as a person.  If you just want to learn code, buy a book, build yourself an application you like, and do it again.  I don't look back on my years at college and regret chasing girls, playing intramurals, meeting kids from around the world, hanging with friends, sleeping in, eating dorm food, and smuggling beer into room.  Now I wake up at 6:00, write business requirements, meet stakeholders, read 50+ emails a days, go home at 7:00, and dream about living in the dorms again......

Jason Wilmot
Friday, November 23, 2001


> Self-educated geek writing a compiler or developing a new technology isn't impossible at all [...]

Compiler techniques, with standard tools, are freely available..

> ~5% of very talented

That would include me: your mileage may vary.

> other self-educated engineer at our place didn't understand what I mean when I asked him to prove the correctness of his algorithm - he never did that !

I think that in the real world, perhaps unlike some people in academia, you are working on a team. At school perhaps you're trying to get ahead, to win that scholarship, to be better than, to know more than, other people; at work OTOH you're wrestling with the work (and not, ideally, with other people) you should expect different people to know different things, each person has strengths and weaknesses, different abilities that you work with -- and success is something that you may try to achieve together. So for example if an algorithm needs proving, and if you can prove it and he can't, then perhaps either you can prove it or you can explain to him how to do it (or tell him which book to read). Any person who's unwilling to learn new things is, well, handicapped in this profession.

Imagine you're Chief Programmer in a place, and your boss gives you 4 projects, 3 years worth of work, to do in 9 months: then, you might be grateful to have other people working with you, and work with them according to their abilities and yours: grateful for anyone who's better than useless in fact, even if they're not your clone, and even if your differing abilities mean that you partition the job instead of sharing it.

Especially when you have been working somewhere for a while and a newly-hired person hasn't, it's impossible for them to know all that you know (so you have to get used to sharing what you know). From my point of view, a good thing about someone who knows as much as me is that they can do my job, so I'm available for something else ... but always (while the company is successful) there is work for me to do too.

> (and wipe me out)

Again, this is no competition: I've been working for nearly 20 years.

> The same about shitty graduates I wish they were driving a bus instead of doing this work.

So you have said; you have said this many, many times. One day, perhaps you will be responsible for choosing and/or hiring the people that you work with.

> It's about our profession and getting BOTH the best knowledge AND experience we can get in order to do it best.

I don't want to say CS at college is useless: I've never experienced it. I am only asserting that, from my own experience, it is (or, *WAS*) possible to do without, i.e. to find alternative vehicles of education. Nortel was a great first company to work for, because they knew what they were doing, had good managers and process, etc. Our small company OTOH would only hire 'senior' people because we didn't have resources or a mandate to train people.

Are you Russian? Most of my colleagues are ex-Soviet; great educations. One guy I like though, used to be a pediatrician/microbiologist, and taught himself programming as a second career: so there's another example of its being possible (though, your mileage *WILL* vary) to do fine without studying CS at college.

> Why don't you ask "how those things get done"

Because I know: things get done, by somebody doing them!

> Killers usually get their things done - why won't we hire them instead ?

Hire them for bug-hunting. <g>

Christopher Wells
Friday, November 23, 2001

Instead of software development geeks should focus more on lifestyle issues. Only when they have shed their "geekiness"  should they even consider college.
And, they should not be employed until they have had sex at least twice. Geeks were exceptable in the late seventies when it was still Ok to wear a Kaftan and bare feet to work. Otherwise, we're over them, and merely being a social misfit does not imply intelligence.

Tony McConnell
Saturday, November 24, 2001

I think 'geeks' should decide for themselves whether or not to go to college.


If I were able to change the software industry, I would change the software engineering profession in the following ways:

1.  Must have a B.S. in software engineering or computer science;
2.  Must spend 2 to 4 years as an apprentice working with someone with 15 years of experience doing maintanence on a large system;
3.  After being an apprentice spend 2 to 4 years doing integration & testing;
4.  Now a person is ready to do some design & coding work, again working with a mentor, for 2 years.  After this the person is ready to be a 'software engineer'.

To many systems are being built by people with little or no true software engineering understanding.  As these systems become more complex and embedded into our lives, it is absolutely necessary that the software engineering community look at the level of professionalism that we have in our ranks. 

David Tannen
Wednesday, November 28, 2001

Re: Industry requirements for engineers:

Here is Joel's response about software certification, which is a similar idea:

Your idea is better in that you don't mention a certification board that chooses who gets to be an engineer.  However, there's also the fact that you lose a great deal of innovation and interest when you have so many laws.

You simply get bad, uncreative engineers, because all the really smart people are doing something else interesting.  Code's whole point is to be easy to manipulate.  Turing himself said that it should be pretty fun task.  Turning it into a fundamentally boring task destroys the whole point of innovation.

Let the markets decide.  If you want stable systems, pay for it.  We have civil engineers now, and still have to replace roads every 3 years.  Millenia ago in Rome, they built roads that still stood until the 1900's.

Roger Hobson
Wednesday, November 28, 2001

I think motivation and fun are key factors for learning and deep understanding. At university people are pushed into studying things they have no genuine interest in and focus on examination results instead of understanding. Students are expected to absorb far too much information without taking the time to look at the issues deeply.

Years of *following* an archaic education process often under duress leads to conformity, and a general lack of *creative* skills.  Innovation requires imagination, experimentation on top of a foundation of deep understanding. Getting things done requires a practical approach refined over years of experience. The education system does a poor job of producing what it takes.

What I've observed over the years is that the brilliant people have tended to be the self taught ones although these tend to be erratic. There are a few who went through university *and* had that creative spark of their own too. Those people are awesome but rare. 

Learning to work to deadlines and handle stress is good preparation to working in a business environment and the social angle to college is important in the maturing process. But unless your a genius your going to be technically years behind the a self motivated 'geek' IMHO.

The Internet makes most of the old system of education  redundant for many, although others may need to get pushed along because they lack sufficient motivation to learn for themselves.

People need to find what best fits their character, learning processes, and lifestyle. If that means going to college to see what it is like and then dropping out due to boredom then so be it.


Friday, November 30, 2001

I refuse to hire "programmers" who do not have a CS or Engineering degree.

I have had more problems with "self-taught" programmers than I want to remember.

Education teaches you that all those neato ideas you have were thought of long ago, and many others that you would have never imagined.  Too many times I've dealt with messes left because the designer didn't know that a better solution was even possible.

Multi-threading and concurrency problems would be one example.  Way too many times I've had to fix simple concurrency problems, because the programmer in question did not understand the issues, generally through lack of education.

My preference is an Engineering degree, as you learn how to analyze any problem.  But a team needs a mix.

Doug Hay
Wednesday, December 5, 2001

I don't have a degree of any kind, I have something called an HND, some theory but not much, it was mostly practical.

I do have over 20 years experience though and was originally taught by a guy that worked on a LEO in the 50's and later took Systems Programming with an Associate Student of Turing's.

Try not to think in categories.  Degrees in and of themselves mean very little you can discover whether someone has the right kind of attitudes to work, the right kind of knowledge background and the ability to shore up holes in their knowledge and catch up in a well constructed interview.

Simon Lucy
Wednesday, December 5, 2001

Good programmers should be able to analyse the education process using similar processes used in programming. Rigorous analysis suggests there are countless routes, methods, and structures to achieve a desired result.

If "self taught programmers" led to problems then I suggest those didn't study their subject very well. Why hire people who don't have the necessary skills? Remember, if you have the slightest doubt about their competence, you should say "NO HIRE!" 

In 25 years working as a technican, electronics engineer, and programmer I've come to the conclusion there is *no positive correlation* between a person's level of tertiary education and the quality of their work.

My personal theory is that too much mathematical training *deteriorates* an engineer's ability to creatively solve problems in practice. e.g. I've seen people working on pages and pages of equations for days to find the solution to a problem that could be done in 5 minutes empirically. How and why can this possibly happen?

FWIW I've designed everything from communication  systems to multiprocessor realtime microprocessors, written assemblers to database applications and never went past first year at university.

While friends went through torture to scrape through examinations (nobody did particularly well so they just normalized the marks to compensate) I was gaining a solid grounding in a *few* chosen areas of study and applying them in the real world which eventually snowballed.

Thursday, December 6, 2001

*  Recent Topics

*  Fog Creek Home