It is my belief that being a good programer is largelly... orthogonal ;--) to what your major was in college. Some CS majors will never be good coders and some autodidacts are really, really good. The fact that the vast majority of people do not major in CS ensures that the proportion of autodidacts amongst good coders will always remain quite high.

More over, as CS is still a young science, a curious mind can easily make up for years training in college through reading and onvolvement in the programing community.

So yes, I think taht for the elite coders a degree is not really useful, and autodidacts can do very well without it.

That said... I still think that a CS degree helps "regular folks". It forces students to know about subjects even though they might not have invested in reading about them if they were not directly relevant to their everyday work. It teaches (or it should teach!) good habits (specify and design before coding, test your code, use a configuration control system...). All things that a real good autodidact would do, but that your average non-CS major turned programer might not.

So yes, a good autodidact is just as good as a good CS graduate, but a bad-to-average autodidact will probably be much worse than a bad-to-average CS graduate.

Not that you can't find real pathetic CS majors who could not code they way out of a bubble sort... and the problem is that this people might hang around trying to be programers while real bad autodidacts usually find something else to do, for which they might be better suited.

I have heard this before. Ironically, the people I heard it from are comp sci students (and graduates). Even more interestingly, I have met computer managers who won't hire CS graduates. Want to hear their reasoning?

CS students are dangerous

CS students have to be mentored and monitored

CS grads have no experience and are completely untested

CS grads know everything about computers, except how to actually do the job

What a comp sci grad can do for you:

Provide the textbook's perspective on a problem

Digest dry, difficult material and regurgitate it without any attempt at comprehension

Read the latest pamphlets from MS and enthuse about them endlessly

Tell you how much money they're going to make when they graduate

I seriously doubt that anyone here fits this profile, but if you did CS you've met the people I'm talking about. The phrase 'wet behind the ears' applies to a lot of people fresh out of any course, but in no other industry are fresh graduates let near anything important.

____________________
Jeremy
I didn't believe in evil until I dated it.

A rather belated post, but I wasn't here first time around. Hopefully this will be forgiven. If not, c'est la vie.

Digest dry, difficult material and regurgitate it without any attempt at comprehension

That phrase gave me the biggest belly laugh of any I have seen here. Partly, because it is, of itself funny. Partly because it reminded me of a piece of advice my first boss (and mentor) in the IT industry came up with.

<paraphrase>

If you want to learn, listen.

Absorb, be like a sponge, but don't take anything anyone says, regardless of who they are, as right. Prove it to yourself, for yourself. If you don't reach the same conclusions, question, but don't challenge. If your still not convinced, don't argue, just do more research.

Eventually, you will arrive at a conclusion that works for you. You may then offer that opinion, but remember that the next listener may well arrive at a different conclusion to you, so be prepared to be wrong.

Oh! And just because I told you to be sponge like, I don't want to hear you running around verbally dribbling stuff you've overheard!

Funny how I never encountered those myths.
In fact, the only thing I ever heard of autodidacts
before was that "autodidacts have sloppy teachers".

Which I should probably have to admit to :-)

I will object to the idea that anyone hiring me
should need to know that I am an autodidact (at least
WRT computers) and how to "handle me". Truth is, we
are all different -- even people straight out of
school will have their ideas, methods, work habits --
and as long as we work, we accumulate more quirks.

Or, if you prefer, "unique perspectives".

As I said, I never encountered the myths listed
above. It may be that this is a regional thing.
It may be that I have been lucky.

That last bulleted list goes a long way towards
creating new myths. True, an autodidact can
do those things for you. But so can a kid straight out
of school. And so can someone who has been programming
since the '70s. It may be that schools do not encourage
these basically human qualities, but they don't actively
discourage them either.

Then again, there might be regional variation there
as well. Which is sad. That link brings hope though.
All may not be as lucky as my coworkers and I, but there
are people working for a better future.

Much as I like this thread, I think that the distinction
between autodidact and course-taught programmers (which
trs80's node doesn't touch, but most of the responses
take for granted) is bogus. For instance, I started
programming (and learning about programming, which sadly
isn't always the same thing) well before I took any formal
courses on it, but I'm most of the way through a rather
intense CS degree. Where does that put me?

If we take an autodidact to be someone who's willing to
learn on their own, then a hell of a lot of CS students are
autodidacts. In my case, I've either gotten interested in
a topic, taught myself about it, and taken courses on it
(computer graphics, for instance), or I've taken a likely
looking course, gotten interested, and kept reading and
learning well after writing the final (AI). In both cases,
taking courses and learning independently is far
more effective than doing either by itself.

The autodidact who disdains formal learning is
misguided at best. Universities are wonderful places to
learn about programming: the facilities are excellent,
the profs are knowledgeable and motivated, and the
material will broaden your mind.

The course-taught programmer who disdains
autodidactics is misguided at best. Learning by reading
and doing gives you practical experience as well as
theoretical knowledge, and lets you focus on what you
find fun.

You won't have to tell a good programmer to learn:
they're already doing it.

I think you're right!
...and sometimes, some employers (who most are not autodidacts in their domain) dont understand why they should hire someone who has'nt a degree versus someone who has one.
...I'm having difficulties in finding one!
Serafim Fagundes
Montreal, Quebec, Canada

Now I can put autodidact on my resume! I never knew such a cool word existed to describe my perpetual state of trying to learn more about programming. :-)

I am not sure how universal those three autodidact myths are, I certainly have never heard them. But I suppose that is because the two places I have worked since switching careers have obviously been welcoming to autodidacts like myself.

Occasionally I ponder what my life would have been like if I had been a CS major in college. I probably would be making a lot more money right now, although that might have less to do with the degree and more to do with the 7 years of experience I would have had under my belt at this point.
I realize, though, that I was not yet ready for programming back then. I think that I would have been bored with much of the less practical material that seems to be a college standard regardless of what you major in.

Since I started teaching myself to program, the most important thing I have learned is how I learn best: by reading constantly, getting my hands dirty, and focuing on topics that interest me.

The 5 years I spent as a child and family therapist taught me a ton about people (including myself) and this is something that will help me in any setting.

I'm kinda hybrid, 'cause I did some courses about programming, besides learning by myself. I'm proud to be "half-autodidact", althrough I always state this:

I think being an autodidact makes you have some questions that are basic for those who learned from courses - some of you may realized that it happens to me from time to time.

If you have the resources (time, money, etc) to take a course, TAKE IT. There are somethings that you'll always learn better from a course.

I've been fired from my last job because my boss didn't believed I was capable of coding and never gave me the chance to show him.

That was awful, and to stand up for what I've believed was a very hard but valuable experience. I'm not saying that I'm damn good at programming (I'm certainly not) but I'm capable of developing large systems as efficiently as any other programmer at my level.

Well, I kind of see myself as an autodidact. That depends a bit on how you see it of course, and if you can "stop" being one. :) I most definetely learned to program on my own ,starting way back on the old commodore C=64. Sitting alone out in the woods, teaching myself first BASIC then assembler by looking at other programs, demos and games. Back in that day it was still reasonable to pull apart a "compiled" program and find out what it did. :)

Lots have happened since then, of course. For one thing, I have been working at real companies as a programmer and developer. I have had the honour to work with people that are a lot more talented and skilled than myself, and I have learned a lot from them - as I try to teach as much I can to those that know less than myself.

This is where I wonder if I am still an autodidact by definition? I still have no schools or degrees in computing, programming or whatever, other than the fact that we did some turtle graphics and COMAL on the old COMPIS computers (the worlds only 186, I am told) in school when I was about 14 or something. I don't think anyone cares. :) But I have been learning stuff from others, not teachers, but collegaues, and some of them more or less mentors - am I still self-taught?

In my own mind, yes. I taught myself to program on my own, and I got a job based on this knowledge, etc. As for what I can and can't - there are of course a lot theoretical stuff and stuff I do not have from a class. That might hurt my progress because I didn't think of a certain approach, on the other hand, I think I think more freely, as I don't have one "right path" that I follow. I might well be wrong. *Grin*

My biggest assets today are really the ability to learn new stuff fast, and the ability to find information on the things I do not know how to do even faster. I guess that comes from the background where you never had anyone to ask if you were stuck - find the answer, noone is gonna help you. My collegaues with 14 on a dozen networking degrees and stuff (everyone should join the IT sector, jump aboard) are simply stunned at what I can find in what time with google. I think it isn't uncommon here, but for them this is magic... and yes, they do use google. They just don't grasp how to sift information, and they can't seem to use it once they get it.

However, give them a school example of some algorithm to solve, and they will crack it in no time. I know who I'd rather be.

This is nothing specific to autodidacts contra degree-people. It just happens to be so at my latest workplace :). In reality, a good programmer is a good programmer no matter how he or she was taught. Just different approaches, and I'd rather have a mix of both, then just either one.

At least here in Sweden though, recruiters have an enourmous craving for pieces of paer. You will probably not get a job without a degree, without lots of luck. I got my first real programming job by a "bet". I bet them that I could learn to program java good enough to do a real work for them in 3 months as an intern. I was apparently good enough, as I won the bet, even though I kinda doubt I was really any good... haha. But they saw I could learn, and learn fast, and they accepted that. At least here (Sweden), it seems programmers, or people that know how the work is done, rarely has anything to do with hiring people. So of course there must be a huge respect for papers. :) Another thing is that it is a Microsoft country, which is bad for a java/perl programmer... but ah well. It should be good for the "certified"... just about anyone who has been unemployed at any time the last five years, that is, whatwith all these unemployment programs in the IT sector. :)

You have moved into a dark place.
It is pitch black. You are likely to be eaten by a grue.

Cool. I got my first job on a bet. The boss went "You're interesting, but we need someone who knows SQL. Do you think you can learn?"

"No problem!" I brazenly responded.

He pushed a stack of paper at me and said "There's the manual. You need to know that by tomorrow."

I got the job :D

As you say, I wasn't that good, but I demonstrated I could learn fast enough to catch up... The next day I had to start learning javascript. Three days later I had to start debugging the bash programs. On the job training really meant something, and I loved it.

____________________
Jeremy
I didn't believe in evil until I dated it.

Really cool! Especially that you got to do lots of different things - I also got to learn javascript, SQL and stuff like that.

And indeed, on the job training really meant something, it worked and everyone was happy. :) Now I am on a not so happy place, but ah well. It pays the bills.

It might also be worth mentioning that when I made them that bet, I was employed, and had a reasonable salary. I was head chef at a small town hotel, got along good with everybody, and just at this particular time my boss decided to buy another hotel. He offered me a "name your pay" job to take the whole manager business for the hotel I was on while he focused on the new job. While being trainee meant cutting my income in half while moving to an expensive town. What would you have done?

In retrospect, I think I did the right move. I love programming. I now make at least as much money as I ever would have as hotel manager. I think. And the proposed new hotel never got bought - partly because I left, but it is possible it would never have happened. And there I would be, still stirring soup and lifting heavy and very warm stuff. Which is fine, just not as fun. :)

You have moved into a dark place.
It is pitch black. You are likely to be eaten by a grue.

I am an autodidact. It might seem unreal, but I think it gives me more freedom. Not the freedom I don't have to follow some predefined school books, but freedom in thinking. Most CS students learn some language that in theory is best, like Java. However, that restricts them to a certain way of thinking, and I'm glad I don't have to think that way. For example, I do not care how many conditionals a piece of code has, but many CS students learn that any routine with more than ten conditionals should be refactored. I care about readability, efficiency and whether it works or not, not about some set of rules.

There is a reason that I hate Python's syntax. It enforces style, just like how organized progamming education does. There IS more than one way to do it, and I would like to know all of them.

I have no idea how autodidacts can digest material quicker than others. I think it depends on the data you have to munge. If you taught yourself, you may not know about the more difficult (and hyped) standards like XML, but you may have more experience using GDBM instead.

I'm having a problem soaking up new technologies. There is no school that tells me what technologies are out there, and I seem to pick the unhyped ones, which is not really a good idea when profit is your goal :)

I'm totally self taught, no formal education at all. Picked up programming after I dropped out of high school (because of math!).

I think there is something to be said for the self taught crowd. While it is an excruciatingly slow process, you learn so much more that way. Sort of like being given a car in pieces and having to figure out how to put it all together. Slow going at first but you gain much real-world knowledge and experience.

My first software job was at a game company in 93. I went in with this 2 paragraph resume. It was laughable, No previous computer related experience on it at all, but I beat out some people who had their Masters. Why? Because I brought a 3D texture mapped game I was working on (Ran on a 386sx 16mhz at 10-15fps, Hey anyone remember Xsharp library? )

I would think it is more difficult now for those without the formal education. Back then, everything that was on the edge wasn't old enough to be in schools anyway so it was more of a "show me" type of attitude. Games today have large teams and most of the prominent business technologies in play have been around long enough to make it into the curriculum so I would suppose it would be much harder to "walk in"

I personally judge by what I see. A piece of paper is just a piece of paper to me. I've met plenty of incompetent and incapable people with and without a degree.

As someone who is self taught, I treat every job that I have as school. My goals are entirely selfish (as are the goals of my employers). For each place I set up goals and make sure that my work uses those goals. At first it was coding across networks, UNIX hacking and databases. Later it was Java. These days it's hard core 00 programming, automated testing, patterns and XML. It's surprising how you can mold your work to fit your goals and how beneficial it is to all concerned.

Luckily, I have been able to work with some of the best hackers in the business. Their example is in their craft and they have been the best teachers anyone can hope for.

If you haven't learned to autodidact by the time you get a "real" job, you're at the mercy of whoever signs the check to send you to workshops or courses. That's not a good position to be in.

Another reason to autodidact is to increase your opportunities. If you wait until someone pays you to learn something, you miss out on having the skills when the hiring/team assignments happen.

My current autodidact list includes using a particle simulation system with dampened springs to draw social network diagrams. Aside from learning something about social network analysis, it's an excuse to refresh on vectors and (simple) differential equations, and I hope it'll make for a snazzy demo for my next round of interviews.

Let me start by saying that this entire dichotomy feels artificial. Whether or not someone has gone to college/grad school tells you nothing about how capable she is of teaching herself. There are good and bad sides to learning from a teacher, but the truth is that each programmer is responsible for her own habits.

Now, the question is how does an employer look at it. A degree proves that you are capable of completing assignments on deadlines. There are in fact many economists who feel that schooling does not increase a person's worth in the job market. Rather schooling proves that she is a less risky investment for her employer, thus encouraging the employer to offer her more.

Of course once you have worked in the "real world" for a little while, jobs stop weighing your education so heavily and value instead previous employment. This only makes sense, since the information is more recent. Once this stage is reached, the formally educated person has the same chances as the self taught. The only time such a difference matters is during the first few experiences a person has in the job market.

If you were a manager and were presented with two people, one who had a degree in CS with a focus on designing real-time computer vision systems and another who claimed to be a very quick learner and self taught. Who would you choose? I suppose in a more perfect world, you would ask for code samples from both of them and provide a problem you wish them to solve. That said, the odds that only two people are applying for a job are slim. More likely there are many applicants and you need a way to triage them quickly.

While a degree may not contain a lot of intrinsic meaning, it does provide more of a guarantee than just a person's word.

There are still people trotting around with the notion that "learning" is something you do at school, then you're done. You learned enough to become an adult and now you're done.

It's the kind of thing that makes those people question why you brought a book with you everywhere you went (so you could soak up every bit of free time with a little reading). It irritates the living shit out of me.

Before there were schools, there were people learning.

People who can only learn in schools are like people who can only drive stick shift: Limited. Whereas a person who knows how to learn to drive something will be able to drive anything, from a tank to a go-cart, with a little time to get used to the controls. The trick is learning how to learn, not focusing single-mindedly on whatever is spoon-fed to you.

Admittedly, the stick-only driver may become better at driving a stick shift than most people; but the first time they're dropped into a standard and have to figure out what a clutch is, they're dead. They lack flexibility because they're not used to learning new things to begin with.

I have to note with some small bemusement, though, that this is being posted in a place where, I'm willing to bet, not a single person has a "pure" school-based education. Hell, the Monastery itself could easily be considered an enormous, constantly updated manual, written by hundreds.

Umm a manual transmission has a stick and clutch,
as opposed to an automatic. So I'd say somebody who
who learns an automatic, or a video game (Gran Turismo),
can drive the automatic and maybe a go-cart.
A clutch driver could certainly drive
an automatic (I find the mind-numbingly boring myself),
a golf-cart, and probably a forklift and maybe a semi (a lorry).

I am 100% 'Autodidact' (btw, thanks for the definition ;), so this post is actually very interesting to me, especially for where I am at personally right now. I am wrestling with the notion of going to college (essentially for the first time) in pursuit of a CompSci degree. From my perspective(that being the perspective an autodidact - sorry just like that word), I sometimes feel like I am a step behind because of my lack of formal education. Yet sometimes I feel like I grasp concepts behind programming and computing evironments in general better than people that have been studying it for years.

I will say however, that the one thing I think school would provide me that I otherwise have a hard time with is structure. I am eager to learn everything I possible can as quickly as I possibly can and what happens is that I often go in 8 directions at once and don't learn half as much as I could if I focused on one or two things. But, this is also nothing I couldn't learn from a "mentor".

The current resolution to this problem is this: I plan on taking classes in Computers and Mathematics part time(1 or 2 a semester) and continue in the work force as a very comptetent programmer. In the meantime I've invested in some books on C and Unix(time to start REALLY hacking Perl ;) and I'll continue to study computers myself.

I will say this, and to me this outweighs any focusing problems i may (have|have had). By being involved in the programming community('specially Perlmonks.org), I have learned to seek answers for myself rather than have them fed to me. This method is often more difficult, but immensely more gratifying and instructive. I find it more valuable to have people to guide me than instruct me, and I think this philosophy/experience will help me in my career/school.

As an autodidact, i don't think we are dangerous, cause chaos or should never be hired, these myths are new for me.I respect them but i don't agree with them.
I don't like college, why not ? Well in college you will learn only what your teacher teach you, unless you go and read more about that topic, a lot of people who don't read and don't want to learn more than they learn in class and finish college go to work, they are hired over an autodidact who maybe spend hours reading researching, learning, and really knows what (he|she) is doing.
I've seen this a lot of times here, and for me the best way to learn is the autodidact's way, but until some people break this Paradigm there myths will live.
___________________________________________Optimus magister, bonus liber

I find it quitte amusing to see all these people here exclaim how autodidact they are...

I myself was a complete autodidact at one time, but then I wanted to learn more on a faster pace, and I was no longer autodidact, cause I took over (be it unwillingly) the style of the author of that book. The same goes for all of us here. We learn a lot from other monks, and especially for highranked monks it would be very hard to reject all lessons which could be learned here, and find out all for yourself, right after you read on a subject.

So except for the newbie's among us no one is autodidact (any longer)

In reply to trs80: I agree completely with your post, but wihin the context as given above.

I do think that some of the none autodidacts do have a little advantage, cause they had the propper teacher and are therefor very well ready for certain programming issues where autodidacts mostly mess around a bit, creating working but huge code...

er formait hyarya."Field experience is something you don't
get until just after you need it."

Cool post. I am also an autodidact and have always felt that I offered a special perspective to my clients and employers. I have also quite often felt unsure about my lack of formal training, and it helps to have someone put these words on to virtual paper. A great discussion has ensued. Thanks for the new word in my vocabulary.

Went to join the gridlock to see it
Held an eclipse party
Watched a live feed
I cn"t see tge kwubosd to amswr thus
I tried to see it, but 8000 miles of rock got in the way
What eclipse?
Wanted to see it, but they wouldn't reschedule it
Read the book instead