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
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.
Still.
[ 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.
Why We’re Learning Ruby on Rails
Why are we learning Ruby on Rails? Let’s ask _why.
_why: his very existence, his poignant guide, his utter bizzare-itude. His hackety-hack project. Having come across _why, how could we turn down his invitation to learn ruby?
Now, apparently, some people have a very different reaction to _why. Some people think _why is what’s wrong with Ruby. _why thinks that is funny:
The problem here is: the author of the article is trying to do academics, to gain knowledge, to build a career. And my cartoons and stories have patronized him, belittled him, by treating him as if he wasn’t a real professional. This is a terrible breach of conduct. He has accolades innumerable. He has done no small deed. His peers are all gathered around him, wishing him the best and swelling with nothing but respect and esteem for him. NOW WHAT IS THIS CARTOON BOOK DOING HERE??Programming is for world commerce. It is like agriculture or fossil fuels. It is lot a like baling hay. I’ll give you an example: You wouldn’t write a cartoon book with a plot and running narrative just to show a guy how to bale hay! That would frustrate the guy! He would throw that book in the pig’s pen! He just wants to get straight to the nitty-gritty and, for once in his life, just bale hay, straightway!
It’s not just _why, of course. We’d be pretty pathetic if we decided to devote lots of time and effort to a new programming language just because of a cartoon book. I mean, we have to have serious, professional, career-oriented reasons for learning ruby. And Rails, of course. Not that ruby doesn’t exist without rails. Ruby doesn’t need rails to justify its existence. Matz is not DHH, after all. Matz came first. And then, presumably, came _why. 37signals was later.
Learning a new language takes a lot of effort. I’m trying, lackadaisically, to learn french, since Max speaks French and Ari is learning it, primarily by having Barbapapa books read to him over and over again. And we have a bunch of french friends, and it’s really depressing at dinner parties how I’m never quite sure what people are saying. It’s hard, though, and what would make it even harder is if I didn’t like french culture.
Learning a new programming language is a lot like learning a new human language. It comes with a culture. You have to like the culture to want to put in the effort.
So, you know, we have a friend who’s making fistfuls of money because he’s a crack ActionScript 3 developer. Every time we turn around he gets another promotion, and another raise, and he says the world is desperate for ActionScript 3 programmers. We hear this from other people we know, people with jobs. We don’t have jobs right now. Well, Max consults. And I consult to Max on his consulting. But not a 401(k) plan between us. So I keep thinking “fine, let’s learn actionscript”. Except that it’s like trying to have sex with someone you’re just not attracted to. close your eyes and think of Ruby. Oh wait, I swore I wasn’t going to mention sex on this blog. Note to self: blog is for professional presence. Sex: not professional. Well, except for sex workers, for whom sex is professional. But I’m not a sex worker. Am I calling my actionscript friend a sex worker? Not sure. We love you, actionscript friend! And I will be quiet now.
What I’m trying to say here is that we like the Ruby culture. No doubt we’ve come to it too late, and in about two weeks it won’t be cool anymore and people will be all ‘ewww, you’re a ruby person? Rails is soooo 2006. Didn’t you know that Twitter proved it wasn’t scalable? And it’s s…l….o….w.” But that’s okay. When I first started programming, it was because I fell in love with a heapsort. Heapsort had been around for a pretty long time then, but I felt like I was the first person who’d discovered how cool it was. (Kind of like teenagers and sex. Oh wait, there I go again. Shut. Up. Amy.)
Anyway, here we are, immersing ourselves in Ruby culture. We’re gonna go to a Boston Ruby Meeting, where Hackety Hack will be demo-d. I’m subscribed to all these Ruby blogs. We’re studying the idioms and learning about the people and the projects in the Ruby world. And, of course, learning the language. We’d like to contribute to the conversation at the Ruby table.
As for Rails, we’re learning it because we need to write our own web-based to-do list. I’m joking, I promise. Rails comes along with Ruby because most of our experience in IT has been web-related. So we’re leveraging our experience with web technologies and increasing our skillset with Rails, an agile Ruby-based framework that dramatically increases the speed and ease of web app development. See: serious and professional. Ignore the cartoon foxes and sex workers.
