In Which Amy Encounters a Superior Mind, Recognizes (Again) Her Own Incompetence, and Rededicates Herself to Alleviating the Problem, Though Not Without Some Concern About When She’ll Actually Find the Time to Do So

Posted by amy on October 29, 2007

A few weeks ago, I was introduced to Stevey’s Blog Rants. I started reading them, and I realized, yet again, that I am a crap developer.

I am a hack. I know nothing. I claim not to be a script kiddie, and I’ll stand by that claim, but only because those of us who are just competent enough to know that we are incompetent are EVER SO SLIGHTLY more competent than people who don’t realize that they are utterly incompetent.

I know people whose lack of ability to solve programming problems is always, always caused by some quirky gotcha in the language being used, and never ever by their utter lack of understanding of the most basic, fundamental aspects of programming. They’re sure they’re just misusing the subjunctive, and in reality, they’re babbling in gibberish that is less comprehensible than my 10-month-old’s. (Those people are always certain that everyone is simply misunderestimating them. Would that it were true!)

So I’m not that incompetent.


[ Ack, I am being attacked by a babbling infant. She has noises for "nurse now, mom" and noises for "check it out, mom, I'm turning on the stove!" and noises for "I'm sitting in a big poopy puddle" and noises for "stop typing now, mom, or I am going to jam the caps lock permanently on." That's the noise she's making right now, in fact, SO I BETTER GO BEFORE I FIND MYSELF YELLING AT THE INTERNETS ALL THE TIME. Back later.]

Right, back to how bad a developer I am. Can you believe I’m supposedly using this blog to drum up business? Hi, prospective clients! I suck! Let’s talk. Before you turn away in disgust and say “why should I talk to you, you sucky developer?” let’s get some perspective. Steve Yegge, who works at Google, and before Google worked at Amazon, also claims he sucks. Suckage is like wealth: graded on a curve. Steve Yegge says he sucks because he’s measuring himself against all the other developers there at Google. I say I suck because I’m measuring myself against Steve Yegge (though, don’t get me wrong, I also suck as compared to many developers suckier than Steve Yegge. Steve Yegge is several levels up in developer competence than I am. Several.) The principle holds, however. Developers who don’t think they suck are only hanging out with crappier developers. And not only does that mean that they don’t even know how incompetent they are, they also have no way of getting less incompetent even by osmosis, because they’re not putting themselves in a position to osmose anything from anyone else. ( I read a sample chapter in Chad Fowler’s My Job Went To India… about this, which made a huge impression on me:

Legendary jazz guitarist Pat Metheny has a stock piece of advice for young
musicians: “always be the worst guy in every band you’re in.”

Attempting to be the worst actually stops you from selling yourself short.
You might belong in the A band but always put yourself in the B band,
because you’re afraid. Acknowledging outright that you’re not the best
wipes away the fear of being discovered for the not-best person you are.
In reality, even when you try to be the worst, you won’t actually be.

This is why Max joined an orchestra this year, even though it’s a lot of effort and feels very far over his head. He’s learning a lot more than he would learn just playing by himself. It’s also one of the great disadvantages of independent contracting — the reduced opportunities to be part of a team of your betters. You really have to make more of an effort to seek out your betters to work with them, because you don’t always get to do it on your paid work.)

Anyway, you don’t want developers who don’t think they suck, dear prospective clients/employers. Stop looking for people who self-identify as ninjas and experts and superstars, and find some nice modest developers who have some sense that there’s stuff out there that they don’t know, and will admit that they don’t know that stuff not because they don’t NEED to know it, but just because, hey, they don’t know it. They’d be better developers if they did know it. They’d like to know it. Maybe it’s even on a list of things they’re going to learn. Maybe that list is far too long, and maybe they only have fifteen minutes every other week to even get the list out and look at it, but they have a list of stuff they don’t know that they think they SHOULD know.

In fact, what I’d do, if I were you, prospective employer/client, is ask: “Where are the holes in your technical knowledge?” I suppose that if people started doing that, we’d all start picking one or two safe-ish things to reply, like how everyone says, when asked what their weaknesses are, that they’re a perfectionist who hates being late. “Oh, I always get confused by my splay trees.”

Of course, Steve Yegge would probably tell me that splay trees are not a safe-ish reply at all. Everyone should know about splay trees. Fundamental stuff, splay trees are. He’s probably right. I don’t remember covering splay trees in my one data structures course, but that doesn’t mean I didn’t. I’ve never had occasion to use them in my developer life, but that doesn’t mean I wouldn’t, if I knew what they were and when I might. For all I know, I am using splay trees every day. So now I have to go learn about splay trees.

Actually, dear readers, I do have a plan for a fun, exciting, and exhausting project that will help me get some of that CS knowledge I am lacking. The project remains, right now, in super-secret stealth mode, except if you know my mom, in which case she’s told you all about it already. As it takes shape, I’ll reveal more details about it.(Or if it doesn’t end up taking shape, I’ll pretend I never wrote this and look at you all confused if you ask me whatever happened to my mysterious and exciting project I mentioned on the blog. What project? I’ll say. I never said there was any project. You’ll show me the actual words in which I said “oh, there’s a project”, and I’ll look you straight in the face and say “nope. Never said that. Didn’t write it. No project.” And you’ll shake your head and roll your eyes and let it slide, because that is what we do these days. )

Also: I think that I am getting way too obsessed with Steve Yegge. And given that Steve Yegge basically thinks I’m crap*, that’s probably unhealthy, don’t you think?* No, steve yegge did not drop by this blog and say “amy, you are crap.” But he did say “If you don’t know how compilers work, then you don’t know how computers work.” I don’t know how compilers work. And he frequently talks about how woefully deficient he considers programmers to be who are lacking a long list of skills and knowledge that I, too, lack. I would not, for example, pass his phone screen. If I had a job interview with Steve Yegge, he would skip the hello and go right to Do you have any questions for me?”. So I’m pretty sure he thinks I’m crap, even if he might be too polite to say it to my smiling avatar face.

Popularity: 14% [?]

Theoretically Related Posts
  • Beware Trac and Unicode
  • Our First Blog Post
  • Grok-a-thon
  • Our CV
  • Trackbacks

    Use this link to trackback from your own site.


    Leave a response

    1. Mike Breen Mon, 29 Oct 2007 12:38:44 UTC

      This always changes my mood when I’m in “beat myself up” mode.

      (just plug your favorite technology for the MS buzzwords Leon uses, works the same)

    2. Ryan Tue, 30 Oct 2007 14:00:00 UTC

      I couldn’t agree with you more. I have far too many “incompetent” moments, and although they’re somewhat depressing, they also push me to learn the thing that made me realize I was incompetent. From that I’ve learned a lot. More than I would have if I had thought nothing of it in the first place.

    3. Colin Bartlett Wed, 07 Nov 2007 12:05:46 UTC

      I’ve always liked G K Chesterton’s maxim that if a thing is worth doing, it’s worth doing badly. (Seriously – I ought to use it more than I do.)

    4. amy Thu, 08 Nov 2007 11:53:46 UTC

      oh yes, absolutely. And it’s certainly emotionally easier to start out from the position that you suck at something and are only just barely muddling along than it is to pretend to people that you know what you are doing all the time and then exert most of your effort trying to make sure they don’t find out how much muddling you’re doing. So I feel like it’s great and freeing and makes me a better developer to just be able to say “yes, I suck, I don’t know jack, i’m doing my best, I’m learning what I can, and let’s get to work.”

    5. regeya Mon, 28 Jan 2008 01:57:39 UTC

      I’m making this comment as an outsider. I’m one of those people who dropped out of CS in college because he sucked, and went on to get a liberal arts degree. I stumbled upon your site looking for some materials on Ruby metaprogramming (DT’s pickaxe book sucks in this area.)

      I wasn’t heart-broken by that decision, though, and looking at Steve Yegge’s website reminds me of one of the reasons why.

      In my opinion, it’s not right for a person to be cocky about something like “if you don’t know how a compiler works, you don’t know how a computer works” then go off and gush about Java and (ugh) Lisp. Java’s somewhat heavy just because it has to have its layer of VM hardware abstraction on top of the OS’s layers of abstraction, and Lisp, well, Lisp encourages things like recursion.

      What little I did learn about the workings of computers I learned by working with assembly language and macro assemblers on Intel hardware. Wish I’d worked with more, but at this point I don’t feel the need. Anyway, after learning a bit more, later in college, I realized just how evil recursion can be, and stayed away from it like the plague.

      When you call a routine from the routine, aka recursion, you’re causing the system to need to save the state of your call, so it can call itself again. Then if that call recurses (let’s say you’re doing a recursive binary tree traversal, say) you’ve got to save the state again…before long, you have a big ol’ stack of state info. And you have to recall that when function calls start returning.

      So that’s the main reason I don’t like Lisp. That and getting to a uni level after learning a bit about assembly on x86 and a teensy bit about compiler design, and having these ex-hippie math profs that were teaching comp sci who went on about “elegant” languages and how computer processing power and RAM were increasing, so it was a non-issue…blah, I don’t care that I couldn’t do proofs of my algorithms, I didn’t go into that line of work because I knew I would be going into a workforce of overeducated idiots who thought the elegant solution was the best.

      And now about the only thing I ever code in is Ruby. Oog.

      I suppose I was destined for the early PC revolution and missed it because I was still a kid at the time. ;-)

      (and no, Steve Yegge doesn’t seem all that cocky. he just reminded me of something, that’s all. :->)