Showing posts with label incompetence. Show all posts
Showing posts with label incompetence. Show all posts

Monday, November 7, 2011

Old School or Just Old?

I’ve been looking for a diplomatic way to start this rant. After several false starts and a couple of glasses of wine, I realized that beating around the bush wouldn’t do it. Instead, I'll dispense with the bullshit and jump straight into what’s bothering me:

I’m tired of being immersed in a culture of mediocrity.

There, I’ve said it. Now I have to spend the rest of the post explaining what the hell I meant by that. Don’t expect me to beat around the bush, either. If you disagree with what I say, fine, but I’m not going to sugar-coat what I think, because too much sugar-coating is part of the problem.

I want to make one thing clear right from the start: I have a good job. There’s a lot to love about it. For one thing - the most important one, really - the work I do is interesting, challenging, ambitious and with plenty of opportunities to learn new things. It’s the kind of work that I often wished I could do and the fact that my wish came true is something to be happy about.

Plus, the compensation is good enough to allow me and my family to live comfortably. To top it off, my boss is a nice dude, trusts me to do good work, helps me out when I need it and doesn’t make a fuss when I need to telecommute.

Why, then, do I describe all that as a "good job", instead of, say, "dream job"?

I guess I could blame it all on my parents. They helped me discover computers and programming when I was six and it has been my passion since then. I’m almost thirty-three now and it has been a wonderful journey so far. Most of the stuff I can do, I discovered by trying to do it and looking for information on how it can be done. Not that I mean to imply I can do or learn anything. On the contrary, there have been things I tried to do or learn and gave up. The important thing, to me, is the fact that I acknowledged the fact that I gave up: for whatever reason, I chose not to expend the necessary effort.

On that journey of discovery, I’ve had the privilege to meet quite a few brilliant people. The first time was in 1993. Having graduated as top of my class in the ground school, I sailed into my high school like Titanic and was promptly sunk by the realization that almost everyone was more brilliant than I was. It was one of the best times in my life.

Another was when I went to work for Synopsys. It had taken me a bit more than seven years and almost as many jobs to find them. Once again, I was surrounded by brilliant people, all sharing their knowledge and pooling their skills to overcome nearly impossible challenges and improve themselves and the software they were developing.

Like I said, I can blame it all on my parents. My dad used to say, "Don’t go to the army if you don’t intend to be a general." By that he didn’t mean I should be unreasonably ambitious; rather, he meant I should always do my best and try to get better. The idea is to aim as high as you can, work hard and see where that gets you.

That is why I get so pissed off by people who refuse to do their job without someone holding their hand. That is why I can’t fathom how people think they can change the code without understanding what it does or what they’re doing. That is why I can’t stand people who don’t even know the basic stuff anyone with their job description is required to know, but are quite happy to choose their own solution even after you patiently explain why they should do it differently.

The worst thing, however, is that you’re not allowed to say "No, I won’t have a half-hour NetMeeting session with you. You didn’t even try to understand what it is you’re doing. You just blindly tried to apply a completely arbitrary set of changes and when that didn’t work, you gave up and decided you need someone to do it with you. And no, I won’t do it for you, either."

Don’t get me wrong, I’m not ranting about the lack of knowledge. I’ve yet to see someone who was magically born knowing how to write code. I have no problem helping people who need a hand, either. What I’m railing against is the bad attitude, the kind you get in people who don’t even try. You can spot it right away, because they don’t even ask you questions. There’s a vast difference between:

I tried doing X, but it didn’t work. Then I looked at Y and I think it does Z, but I’m not sure why P and Q aren’t there. Am I supposed to do A and B before X?

and:

I tried doing X. It didn’t work and I don’t know why. Can we have a NetMeeting session so you can help me out?

To make things worse, managers often nurture that kind of attitude. For example, suppose you’re writing some code that has to do X and there’s a robust, mature open source library Y that helps you do X without reinventing the wheel. If you decide to use Y, then you’ve shackled yourself with maintenance of that bit of code forever. Whenever someone gets the task of doing something with that code, all they have to do is complain that they don’t know how to use Y and the task will most likely get reassigned to you. It doesn’t matter that you didn’t know how to use Y, either, before you decided to use it to do X. Apparently, you’re the only one who can learn how to use an open source library whose documentation is freely available out there.

That’s what I was referring to by "culture of mediocrity". It’s not just the belief that you don’t even have to try to learn something or expend some additional effort, it’s the belief you shouldn’t have to try. It’s the belief that being given a job is the proof that you know enough and if you don’t, it’s the fault of whoever gave you the job. It’s the belief that nobody has the right to expect you to go an inch beyond that. In extreme cases, it’s the belief that going beyond is only going to get you saddled with more work, so you’re a fool to do it.

By all means, don’t take this as a criticism of my workplace, specifically. It’s not endemic to the company I work for. Rather, it’s widespread among the BigCo type of companies. I’m not sure why that happens and why there are so few non-startup companies, like Google or Synopsys, that don’t allow that to happen on a grand scale. Frankly, I’m not in the mood to speculate about it, either.

Things aren’t likely to change, no matter what I say here. For my part, I refuse to adapt to that situation. I’ll take pleasure in working with the few brilliant people scattered around in the sea of mediocrity that surrounds us. I’ll grumble and groan about the rest, until the work stops being interesting, the pay falls below the comfort threshold or the nice boss gets replaced by someone not so nice; in short, until it's time to move on.

I like to think of myself as "old school", since I’ve gone from writing spaghetti code in ZX Spectrum’s BASIC and even worse Z80A assembler code to writing my own DSLs and compiling them to JVM.  But maybe that’s not it. After all, I can often name the song playing in an elevator or a mall. I remember when MTV actually had music videos playing all the time. One of my favorite bands broke up after thirty years of playing together. I used to have a BBS that was a point in the FidoNet. Maybe I’m not "old school", but simply old.

Whatever. If you can’t be bothered to even try to learn new things, then get off my lawn.

Tuesday, January 16, 2007

Uneducational Crisis Pt. 1: Human Factor

If there's one thing worse than a bad programmer, it's a failed programmer turned professor. I don't know how common this is in United States, but here in Chile you see it a lot. And try as I might to pretend that I don't care, it's actually driving me nuts. Quite understandably, too: I could be doing interesting things instead of trying to guess what the latest in a row of brain-dead dilettantes wants me to write as a solution to his "ingenious" exam exercise.

On the other hand, this way I get the first-hand insight into the problems with education in CS field. Some of these problems, I suppose, are local and owe their existence to a variety of economic, political and technological factors, but I'm convinced that some are universal. Nonetheless, I shall not discriminate: I'll go over them all and a plague on both their houses.

This article, the first in the series, deals with the professors themselves.

Two Roads Diverged in a Yellow Wood...

Over the time, I learned to distinguish two types of CS professors:
  1. The Geek. This guy knows his stuff, because he actually works in computer industry and does his job well. Sometimes he is motivated by a genuine desire to teach new generations, but often he is teaching just to make a bit of money on the side or to lend a bit of academic weight to his name. More often than not, he is wonderfully inept at imparting his knowledge to the students, because he's a computer geek, not a teacher. All in all, he's guaranteed to be relaxed, easy-going and flexible. Mostly harmless.
  2. The Prima Donna. Who needs knowledge when you have Orwellian authority? This is the guy who will typically boast at least 20 years of experience in computer industry, who has a prominent consulting company and is certified by Carnegie Mello [sic] University. His classes are pure poetry. Vogon poetry, to be precise.
The Prima Donna is the type that does the most damage, so he merits detailed dissection.

Spot the Prima Donna

A Prima Donna professor is rather easy to recognize. He will exhibit a combination of several seamlessly coupled behavioral patterns from the following list:
  • Smugness. Usually one of the first signs that you're dealing with a Prima Donna is that self-satisfied attitude aimed to make you feel that some day, with lots of effort and a divine intervention or two, you'll get to be as good as this guy.
  • Hand Waving. One of the most valuable techniques for explaining the unknown is the hand waving. To those who came to learn, it seems that the Prima Donna is making a herculean effort to explain the concept and that they are simply too dumb to understand him.
  • Stating the Obvious. A good presentation slide will show only the key concepts and leave the explanation to the presenter. A bad presentation slide will show all the information in a pile of text you won't bother to read. In both cases, the Prima Donna will repeat the contents of the slide, with lots of Hand Waving, and you'll be left no wiser than before.
  • Exasperation. Sometimes a braver student will ask the Prima Donna to clarify something previously "explained" by Hand Waving and Stating the Obvious. If the Prima Donna is not in the mood to do it all again, he'll inform the audience that he explained it several times already.
  • Selective Hearing. If there's a student willing to press the issue despite the Exasperation, the Prima Donna might choose to answer another student's unrelated query or to simply go on to the next topic.
  • Condescension. You never know when you might get lucky: sometimes a Prima Donna will even give away unearned points when correcting an exam. But don't worry, he will make sure to inform you about it.
  • Objective Subjectivity. He might be teaching you how to solve problems that have more than one correct solution, but you better make sure you solve the problems the way Prima Donna taught you to do it.
  • Asserting the Authority. The Prima Donna will make sure you don't forget that he's the professor and you're the student, which means you owe him certain respect. He'll be especially sensitive about certain forms of disrespect, such as disagreeing with him.
  • Showcasing the Merits. In case you don't seem to be convinced of the Prima Donna's authority, you'll be informed of one or more of his certifications, nominations, recognitions, citations, publications, you-get-the-idea-tions.
Occasionally, you might get really unlucky and wind up with an embodiment of the archetypal Prima Donna. If there is an option to get the authorities to replace him, go for it.

Damage Done

It's becoming increasingly popular to be a nerd. Sure, you're still going to be bullied in school, but at least now you know you might be in store for a bright future. And those around you know it too. People tend to pay attention to things that might make them rich and when one of the richest persons in the world is downright nerdy, you can bet it won't go unnoticed.

The net result is that you get a lot of CS students who are in it for the glory and riches. These people don't know a lot about computers, but that's okay, because they're there to learn. The problem is that a lot of them also lack the talent. They're simply not good at computer science or any natural science at all.

Imagine all these people trying to learn about pointers from a Geek professor. Confusion abounds, chaos reigns supreme and in the end a lot of them will either fail the course (and hopefully change major) or pass the course having learned nothing.

Now imagine them trying to learn about pointers from a Prima Donna. Apart from becoming utterly frustrated and dejected, they'll learn a lot of garbage. The things that will stick the most are the parts that the Prima Donna invented or misinterpreted, because those are the most vivid explanations the Prima Donna will offer. That's the core of what makes him an "eminence" in the "computing world".

And now imagine yourself working with them on a project. Imagine working on a piece of code that has to traverse a tree with a co-worker who believes that "recursion is for programmers who have no style." Imagine hunting down an interoperability bug caused by bad handling of character encoding in a code written by a person who has been taught that "ASCII table is physically implemented in the microprocessor." Imagine writing business logic that has to use a database designed by someone convinced that a transactional database must satisfy the fifth normal form.

Not a cheerful thought, is it?