Monthly Archives: September 2003

We rock .NET Rocks!

Looks like Carl just posted the latest installment of the .NET Rocks! online interview program, featuring yours truly and my fellow VBer Amanda Silver. I haven’t yet had the guts to listen to it… First, because I’m sure I’m going to have the usual “Oh my God, I don’t really sound like that, do I?” reaction, and second, because I’m afraid that somewhere in there I blurted out some super-secret thing that I shouldn’t have talked about and that’s going to get me fired or something. How’s that for a lure to listen? (I’m sure that I didn’t say anything like that, but then again my mouth does sometimes get ahead of my brain, which is why I like blogging. Plenty of time to review before you post.)

Assuming I didn’t spill any trade secrets, it was a lot of fun talking with Carl and Mark and it’d be happy to do again sometime in the future. But I think Amanda and I need to get better pictures. The quality of DataGrid Girl’s picture just put ours to shame…

Oh, and one thing I’ve learned is…

…when ordering business cards, order the smallest batch possible. I’ve thrown out tons of perfectly serviceable business cards in my career so far because the cards failed to keep pace with whatever I happened to be doing at the moment. So this time when I ordered, I ordered as few as I could. They’ll still probably mostly get thrown out, but at least that saved some paper.

Trust Your Instinct

Joel recently posted “The Guerrilla Guide to Interviewing” on his site, and it describes almost perfectly the whys and wherefores of my own interview process. This isn’t too surprising, since Joel and I both started at Microsoft a few years apart and in teams that were not so distant, so we probably both got very similar kinds of indoctrination. I don’t follow every point that he outlines, but it’s pretty close.

I’d have to say that even after eleven years at Microsoft one of the hardest, hardest, hardest things to do is follow his dictum to Make A Decision. Most people at Microsoft are generally nice people who want people to feel good about themselves, so even at a company renowned for its hard-headed competitiveness people are sometimes very reluctant to say “no hire” about someone if they managed to seem not totally unqualified. Case in point, at the beginning of the summer we did a round of interviews for summer interns, and one of the interviewees was a very nice guy who seemed pretty smart but wasn’t so strong that he just jumped out as an obvious intern hire. For various reasons I had to call the recruiter before I had the chance to write up feedback in email and they asked, “So, is it hire or no hire?” And my immediate reply? “Well, I think he’s kind of a weak ‘hire’.” The recruiter was good enough to shoot back, “What does that mean?” and I came to my senses and said “Oh, yeah, right. Sorry. He’s a no hire.” As they say about pregnancy, you can’t hire somebody “just a little bit.” Either they’re working for you or they’re not. There’s no in-between.

Any time I start to get mushy on this point, I just remind myself of an experience I had a long time ago, back when I had done only a few interviews and was very insecure about making hire/no hire calls. My group at the time was interviewing for a position that had opened up on our team, and we interviewed this guy I’ll call Fred. Fred’s resume looked good, with lots of relevant experience. He sailed through the coding question, no problem. However, during the interview something nagged at me about him, something that was just not right, something that made me doubt that he was going to be a good hire for the team. Being young and insecure, I overrode my concerns and gave him a ‘hire’ recommendation. Everyone else on the team who interviewed him gave him a similar recommendation, and he was hired.

As it turns out, Fred was a disaster. I realized later that my nagging doubts had probably been caused by some subtle negativity on his part towards his current management during the interview. Once he was on the team, this subtle negativity blossomed into a full-blown bad attitude towards authority in general. As far as I could tell, Fred didn’t really give a crap what other people thought he should be doing or how they felt about what he was doing. As you might imagine, this made the quality of his work wildly uneven and also made him a generally unpleasant person to work with a lot of the time. Somehow this had worked out OK on his previous team, but it didn’t fly so well on my more functional team. Fred’s tenure with the team was not that long, thankfully, and after he left the team most of his code ended up being tossed out of the product and completely rewritten (much of it by me).

In the end, no permanent damage was done, but it was a very valuable learning experience for me personally. The experience taught me that the most important thing you can do in an interview is Trust Your Instinct. Had I listened to my instinct, I could have perhaps questioned Fred more closely about his views on management. Or I could have raised red flags that later interviewers could have honed in on. But I didn’t, and I (and the rest of the team) ended up paying the price. So now when I interview people, I look at the resume, I look at the coding question, I look at all the other factors Joel outlines, and then I do a gut check: is this someone I can see working closely with for the next three years? If they fail the gut check, that’s usually a pretty good indicator of a “no hire” recommendation.

Call me now, mon!

OK, so normally I classify the Myers-Briggs test in the same category as I do psychics. Like a good “psychic”, the test sorts people into very broad categories that have lots of personality traits that most people exhibit at one point or another in their lives, allowing test takers to feel that the test really “knows” them. (I remember once watching a show on a psychic debunker. He had a set script that contained general phrases like “you often allow people to take advantage of your good nature” or “you are a caring person.” Many/most of the people he talked to were convinced that he really was psychic, some even after being let in on the joke.) Unfortunately, in the business world the test can also be used to stereotype or pigeonhole people, something I think is a very bad idea.

Nonetheless, the test is fun and so I took it, and when I found out that I am supposedly a “Mastermind” (INTJ), well that was just too cool not to comment on. I mean, who doesn’t like being told that they are “rather rare” and a “natural leader?” Even being told that I can be “quite ruthless in implementing effective ideas” sounds kind of cool. Of course, other descriptions are a little more evenhanded.

Now, where did I put that number for Miss Cleo…?

“With great power comes great responsibility…”

Eric Sink just put up an entry that could easily be subtitled “why I think Edit and Continue is a bad idea.” Although he’s just good naturedly razzing VS in general, his description of a sloppy working style fits totally with what EnC is trying to enable:

Don’t take time to think about all the details. Instead, go for the instant gratification. Just hit F5 and see if the code works. When it doesn’t, try another quick fix and hit F5 again. Eventually the code will work, without ever having to give it any real thought.

Now, I’ll say I have no idea what Eric thinks about EnC, but there are certainly others who use this line of argument to attack the idea of having Edit and Continue in a developer product. Namely that it’s a bad idea because it enables people to code in a style that is ultimately non-productive if not downright dangerous. And all that is true. Really. I kind of glossed over it when talking about EnC before, but it is a real dilemma: giving the consumer more power is what they want, but it also greatly increases the chance that they’ll misuse it. And then everyone might pay.

An analogy that suggests itself is the car. Today’s automobiles are insanely more powerful than Ford’s primitive Model T – the top speed of a Model T was something on the order of 45 mph. And as the power of the automobile has increased, so has its dangerousness. A Ford Model T traveling at 45 mph can cause a good deal of damage, but it’s really nothing compared to what, say, a Ford Expedition could do when traveling at it’s top speed (100 mph? 120 mph?). Even worse, many cars these days are built specifically to encourage a driver’s sense of power and invulnerability, allowing them to drive more sloppily or dangerously than they might if they were driving something much smaller. Modern cars also boast a whole lot of features like 4 wheel drive that can lull drivers into a false sense of complacency, encouraging them to get themselves into jams that they would never get into otherwise.

And yet, I don’t think the genie can be put back into the bottle. Although some might wish it, I don’t believe we can go back to the day of driving Model Ts that are slower and less powerful than what we have today. Technological advances have a way of raising the stakes of ignorance and stupidity on everyone’s part – even good drivers get into accidents – but that’s just the price of progress, to my mind. The problem is that as technology gives people more power, there is a commensurate need to teach people how to use that power responsibly. No one is allowed to legally get behind the wheel of a car until you’ve proven that you can reasonably handle it, and that privilege can be taken away from you at any time if you abuse it.

However, we’re not going to be licensing programmers anytime soon, so what else is there to do? Limit the power and usability of our products to prevent the hoi polloi from (mis)using them? Or do the benefits to society created by putting so much computing power into the hands of the public outweigh the costs that are associated with that? I don’t think there’s any easy answer to that (especially after SoBig and MSBlaster and all their predecesors), but I generally fall on the side of progress. I do think we need better computing education out there, though, not just teaching how to slap a program together but also how to think about programming.

We sometimes joke that we should build a feature into the program that turns off all the “advanced” features of the product. Then, when you try to use one of them, we would pop up a dialog that says “You’re trying to use an advanced feature. Before we can let you use this, you must answer the following questions correctly:” and then test them to see if they’re advanced enough to really use the feature. It’s tempting but, of course, it would never work. Just as no one thinks they are a below-average driver, most people wouldn’t appreciate being told that they aren’t “advanced” enough of a programmer to use a feature…

Gone fishin’…

To my mind, the best blogs are really just fancy online newspaper columns. With the possible exception of the Molly Bloom-esque Scoble, I find that most of the time I’m not as interested in the day-to-day travails of the various people in my blogroll. Instead, I prefer when bloggers write in longer, more detailed entries with a specific purpose or message to get across (although it is possible to go overboard on that). It’s no surprise, then, that I like bloggers who are writers of some sort in real life, such as my high-school friend Jesse who writes a blog and is a magazine editor in the real world.

However, the one problem that blogs have is that there is no easy way to declare yourself “on hiatus.” Newspaper columns have the luxury of just running old columns, but there is no good way as of yet to distinguish a blog that’s quiet because the author is on vacation from a blog that’s quiet because the author has lost interest and isn’t coming back.

I, myself, have been on hiatus due to a combination of work pressures, book writing pressures and vacation. Design issues are like buses – none show up for a long time and then they all show up together. As far as the mythical VB language reference book goes, I just completed my yearly performance review where I discovered, to my horror, that one of my goals from last year was “finish the VB language reference book.” We’ve now got a solid goal of getting the book out by VSLive! next spring, so I’m having to get my butt in gear finally and bang this thing out. And after a long dry spell with no vacation, I’m going on several trips this fall, including one last weekend to New York.

So I guess I’m going to have to just say that things will be slow for a little while, but still expect to see some output as we go along here…