Wednesday, August 14, 2013

Beware the Self-Taught Know It All

I spent last weekend with a room full of university computer science professors. As you might expect discussions covered a wide range of topics during breaks and meals. One item that came up was a problem several people had seen with students who were both self taught and arrogant. It seems that these students often make life in the classroom uncomfortable for other students. They “know it all” you see and delight in making other students feel inferior or unwelcome. This has a negative impact on student retention in computer science programs.

In all honesty the arrogance is the real problem not that they students were self-taught. One can see this in almost any case where some students come into a class with significantly more knowledge of the subject than others. It does seem to be more prevalent among the self-taught though. Perhaps something about doing it on one’s own breeds a certain attitude of superiority. I do know that my career has been overflowing with self-taught programmers and software developers who denigrate formal education in the field and people who learned in class what they learned “on their own.”

Obviously the constantly changing nature of computer science means that someone who wants to stay current has to do a lot of learning on their own. And there is nothing wrong with being self-taught other than that you really need to watch out for the quality of teaching.

The classroom can be a fragile environment. Students can be turned off to a subject as easily, if not more easily, than they can be turned on to it. As a teacher my goal, obviously, is to get the students feel good about the subject and about themselves. Students who do know more than their peers can be a very positive experience. I have seen peer tutoring work wonders with students. So a student who uses their knowledge to help their peer rather than as a club to put them down can really contribute a lot to making the environment a good healthy one.

Learning on ones own is something I strongly encourage. I don’t believe that the teacher should limit students to only what they (the teacher) knows. (see All You Know Isn’t Enough)  I want to encourage students to share what they know with their peers in a spirit of support and collaboration rather than as a power game. I try to help students understand that teaching something improves understanding of it for the teacher as well as the student. I also want all students to understand that while people learn in different ways that is a good thing. No one way works for everyone and there is not necessarily a right way for everyone to learn.

But I really wish some of these self-taught student developers had had a better teacher.


Algot Runeman said...

Your post highlights a problem of the current, and long standing, push to have students be winners and compete for high status (top grades). Way too much of our system focuses on the best students while ignoring the normal (average) ones. Today's national "Race to the Top" support from the federal government doesn't help at all to dissuade students from being arrogant. If you have succeeded and surpassed your peers, aren't you wonderful?!

Keep at the effort to show programming students that a typical real project is a community effort with many effective contributors...unless it is run by an arrogant know-it-all who probably turns away the community just as the arrogant one turned away fellow students.

Karl said...

So what you're saying is: arrogance is bad...

The whole self-taught bit may give an arrogant person extra fuel, but all classes have students with various levels of existing education and aptitude.

You could try teaching humility. There's plenty of literature on that. Like:
But I've met more computer programmers than humble people...

Terry A. Davis said...

I have a degree in systems programming. I worked for 6 years as a systems software and hardware engineer at Ticketmaster. At age 20, I was programming in VAX asm on Ticketmaster's pripriatary operating system. I can't tell you how stupid modern programmers are. I took a compiler course. My boss at Tickmaster wrote our PASCAL compiler in 1 year. Another guy wrote the assembler and linker. It's seriously planet of the Apes. Nobody believes I wrote a compiler by myself and kernel in ten years full time with a degree in the subject and many many years of experience. It just blows the mind of these punks!

Anonymous said...

I am absolutely overflowing with computer science PhDs from IBM, CA, and academia. I would give away 10 pompous entitled know-it-all Computer Science PhD types for just one single self-taught know-it-all. Maybe the real problem is that your over-achieving self-taught know-it-all types are unchallenged and agitated by your basic curriculum. Maybe the education system in this country is so abysmally broken, that professors waste their time criticizing talented students on the Internet, while those talented students sit unchallenged in boring basic classes they should not have to take in the first place.

- dollar

Anonymous said...

Could you be more specific about your point here? Both the title and the concluding sentence rail against "self taught" but you also mention learning outside the classroom as a good trait. Specifically your complaints are about rudeness to peers and classroom disruption and it's not clear why you relate these two.

I was self-taught. Some people only programmed for their assignments... I wrote programs for fun. I liked the assignments but they weren't challenging...

I remember one class I took-- I went to the lab at 11pm to work on an assignment. About thirty minutes later everything works. Someone came over to me and asked me how I was doing with it. I said excitedly "I'm done!" I asked her how she was doing, and she said she'd been working on it all week and wasn't done yet. (This is when I noticed a bunch of other people from my class were there.)

What I didn't know is that everyone else had been working on it for days. So when she starts asking me how long I've been working on it, I really stammer around a lot, and say "since I got to the lab."

Turns out she saw me walk in. Oh no! She gets excited and loud, and is making a big scene over this, and then I have to help several people with their code or then I totally look like a pompous know-it-all... (And I can't -really- help them with their code because that's cheating... and I shouldn't have to help them anyway. If there's that many people that "don't get it" they aren't getting a lot out of the classroom instruction, and that's the teacher's job to teach them.)

When you put students in a situation below their aptitude you're isolating them. When you isolate people, they develop personality issues. If a student can pass your class and do the assignments, let them take the tests and do the assignments and advance.

Nothing in the university is geared for early student advancement-- financial aid, tuition, etc. are all time-based, not advancement based. There's literally no reward for student advancement in the current system.

Alfred Thompson said...

The problem with too many of the self-taught is they are less likely to be accepting of others. They treat people as if their "school" knowledge is inferior and makes those who learned that way also inferior.

They also tend to have had bad teachers which means that they should re-learn things. They often resist correction though causing all sorts of issues.

Anonymous said...

I was self taught then got a formal education in computer science. I developed some of the worlds most used software before getting a degree but I was humbled by the depth of knowledge needed to master the science of computers. No one that I've known that was self taught were self taught in computer SCIENCE they were self taught in computer PROGRAMMING. Anyone who is self taught that takes courses in programming are fools that waste their time and should have focused deeply on theory instead. The other students should feel smugly superior knowing that arrogant jackass showing them up will be two paces behind by virtue of wasting their time. - tortoise and the hare.

I got immense benefit out of both my self taught life as a programmer and my formal education as a computer scientist. Practice without theory is as lame as theory without practice.

CMS Development said...

Nice blog and thanks for sharing this great information.

Anonymous said...

A few quick responses:

1. Your idea of essentially pair programming the self-taught with another student they get along with probably is one excellent way to defuse the arrogance.

2. True story. I once had a professional coder look over some of my first bits of code, which were on a server and working fine. He look stricken when he came back maybe ten minutes later and said, "Don't you ever, ever write code for production. Never." Then walked away. This was a corporate environment, and he was my employee, so I chased after him and asked him to sit down and show me how he saw my code. After rolling his eyes, and after a few conversations over the next few weeks, he explained and taught functional programming to me. It opened up a whole new world, made learning how to code fun. But it also made me leery of assuming my code was better for being self taught. University coding simply teaches a structured way to think about problems, and ideas for debugging and finding possible solutions.

3. Arrogance is wasted on the young who have so little to back it up. Often it goes away by their thirties. Unfortunately teachers have to deal with it in the here and now. So I have no suggestions beyond crossing yourself and praying you can find ways to channel their energy into positive channels (e.g. pair programming).

Unknown said...

The only time I look down on my peers is when they show complacency in learning, as if they assume there will always be a teacher to guide them.

I never had a teacher, other than the internet and libraries. In fact, when I finally requested I be put in AP Comp. Sci. early, my request was rejected because I wasn't in trigonometry! (Somewhat ironic because I was also teaching myself single-variable calculus.)

However, I do understand that the majority of my knowledge revolves around programming and less theory, but I do strive to close the gaps before I reach higher level classes.