Archive for August, 2007

Trust me: don’t fire that bad developer just yet* (part 1)

August 28, 2007

You know this person. For the sake of this post, let’s assume it’s a guy. And this particular guy is obviously the worst developer on your team.

He’s been at your company for a month or two. He doesn’t understand your code base. He doesn’t understand best practice paradigms (yes, I know they’re open for debate, but assume I’m talking about your best practice paradigms). He doesn’t listen when you offer feedback. His communication skills are, as a good friend of mine might say, sub-optimal. He requires more attention than developers that are twice as capable.

But please don’t fire him yet.

Ok, some of you can (and should) fire that guy out of a cannon, but don’t even think about it until you’ve given him a chance. Let me be clear: “a chance” consists of the following elements.

  1. Clear direction: He needs exactly 1 boss. Not 1.5 bosses. Not 1 direct supervisor and 1 director that sometimes hands him other assignments. 1 (ONE) boss – no more no less. If every assignment isn’t funneled directly through that 1 boss, additional lines of communication have to be established. And that doesn’t work. Ever.

    Office Space is funny because it resonates truth with anyone who’s ever been in a situation where he has multiple supervisors and none of them fully know what’s going on. Believe it.

  2. Well-defined expectations: This is tightly coupled with direction. Our hypothetical developer has to know what’s he’s supposed to be doing and what result is expected. When do you expect him to be done? And what does “done” consist of? Experienced developers tend to make the assumption that everyone knows good code from bad. So do you want his assignments “done” or “done well”? If he doesn’t know the difference, is that his fault or yours?
  3. Consistency: If you can’t offer him a consistent work environment, don’t expect him to be successful. People need schedules. People need a degree of certainty. People need to know that scheduled meetings will happen at the scheduled time for the scheduled length. They need to know that project decisions are made the same way every time. (Side note: if your organization doesn’t make decisions the same way every time, you’ve got other problems. In that case, it’s your job to insulate your developers as much as possible and create a consistency bubble around your team)
  4. One code review (at the bare minimum): If he hasn’t had at least one code review and the opportunity to respond to the review feedback, don’t fire him! I don’t care what your mentoring process is (you do have a mentoring process, don’t you?), there’s no substitute for getting constructive feedback from a group of your peers. I’ve seen poorly performing developers make a 180 after a good code review or two.

In part 2, I’ll talk about what you’re leaving on the table when you fire someone too hastily.

*No, this isn’t about me. I hope. ;-)

I’m 100% certain that nothing is certain

August 20, 2007

As Scott Adams has said more than once, human beings (or “moist robots” if you subscribe to that sort of thing) are often absolutely, 100% certain about something only to change their minds later based on either experience or new evidence. If I’m honest, I know that this has happened several times in my own life. And I’ll bet that if you think about it, it’s probably happened in yours, too.

Let’s take a short trip back in time . . . ::cue flashback music and cheesy-but-oh-so-effective screen transition:: June 2007. San Jose, California. The 3rd annual Internet Retailer conference. Along with my boss and one of our web designers, I’m sitting in an auditorium with about 4,000 other websters. There’s a large stage in the front of the room and 5 large screens are spaced evenly along the back wall. On this stage is a panel of “industry experts“*, one of many such panels on display throughout the week (“Oh wow, Morgan. Look at that beautiful panel! And so well-mannered! We’ll have to get one of those for our office!”). This particular panel of guys and gals is covering mobile devices – mainly smart phones and cell phones.

At the podium, a gentleman is explaining that the mobile device platform will increasingly become a key vehicle for retail opportunity. He’s got graphs. He’s got statistics. He’s wearing his most persuasive, gotta-make-the-sale-or-we-don’t-eat suit. Hell, he probably got his hair did for just this event.

There’s just one problem. I’m not buying it.

With all the gusto I can muster, I call BS in no uncertain terms. My main argument is that the form factor for mobile devices is crap.

  1. The screen is too damn small! Why would anyone shop when seeing the picture of the item is nearly impossible?
  2. The input devices suck! Yeah, you can get a “full” QWERTY keyboard on a mobile device, but you wouldn’t use it to shop unless someone was threatening your dog.
  3. The web browsers on mobile devices are altogether unsavory! (Yes, these are the types of exclamations I make on a routine basis) We’re light-years from being able to render the authentic web experience on a mobile device and until we can do that, you won’t see the platform begin to make a dent in traditional web retail.

Of these things, I was certain.

That was June. This is August.

And did I mention that I bought something using my mobile device less than a month after the Internet Retailer conference? No? Well, I navigated to a retail site using my BlackBerry, searched for a product I was interested in, and then. . . (wait for it). . . I bought it.

How could this happen, you ask? “Mark”, you’re screaming as you read this, “you said no one would shop using a mobile device! Did someone threaten your dog?!”. Listen, I really meant those things. I did! What I didn’t realize is that the whole “mobile devices are crap for shopping” argument is squashed handily by the word “mobile”. Yes, you can take them anywhere. So yeah, it may not be as comfy as shopping from home, but, not unlike a Porta-Potty, the convenience far outweighs the interface issues.

So now I’m certain that the mobile device platform will increasingly become a key vehicle for retail opportunity. I don’t have graphs, I don’t have statistics, and I’m not wearing a suit. What I do have is a mobile device and a powerful need to buy stuff.

Got any similar “certainties” you’d like to share? Let me know.

Land of the lost (or, All computer folks are not equal)

August 16, 2007

Without warning, I’m hit:

“Layer 2 MAC resolution through the ARP cache”

I stagger slightly.

“24-bitted mask with a dotted decimal”

My vision begins to blur.

“A typical situation is where an ARP flood or broadcast storm can cause keepalive or VRID messages from being delivered”

With slight embarrassment, I realize that I’m drooling.

Welcome to my personal reminder of how truly, completely, unfathomably different computer disciplines can be. Much to my mix of amusement and chagrin, the quotes above and many more were used oh-so-casually by my trainer last week while I was in Denver. See, he was (and presumably still is) a diehard networking guy. So was everyone in the class. Well, everyone who wasn’t me, that is.

While I know we all seem alike to the lay-person, there are many different, totally unrelated flavors of computer folk. So that you may be warned, descriptions of a few of them follow.

  • The networker: generally unappealing and slovenly, these sad people work with servers, routing, and (yuck) security. This role is the closest IT professionals can get to manual labor, since they may have to physically run cables and move servers. As a result, they’re nearly all hunchbacked.
  • The database administrator: cross-eyed from hours of staring at execution plans and performance statistics, the database administrator is best avoided at all costs. For entertainment, they’ll appear out of nowhere at your cubicle to discuss query optimization, job scheduling, and clustered indices. Run away quickly if they approach you about “natural joins”.
  • The Windows developer: in my experience, these individuals have as many as 3 teeth. However, 2 of those will be in their pockets. This breed of IT “professional” is particularly inclined to be found in seedy discussion forums known as “newsgroups”. Often still drunk from the previous night’s binge, Windows developers have small, beady eyes from lengthy debugging sessions and are quick to espouse the virtues of “exception handling” and “design”: 2 universally reprehensible concepts. Very unsavory guys and gals.
  • The web developer: by all reports, the saviors of the IT industry. As elegant and graceful as the experiences they create, their reasoning skills are only rivaled by their intelligence. Generally recognized as a boon to productivity, the web developer is highly sought-after in all business circles for his/her robust skill-set and infectious positive attitude. Will often be heard uttering the question and entirely true answer, “You know what sucks about being a web developer? Nothing.”

So next time you’re asking your IT professional buddy why he isn’t smart enough to fix your printer, remember that we’re not all created equal. As illustrated above, some of us are only marginally smarter than that printer and most are less capable.

Sorry, honey. My BlackBerry and I need some space

August 14, 2007

I know this may come as a shock to you, dear. Me and my BlackBerry 8300 Curve (which I nicknamed “Double Bee“) have been spending a lot of time together lately and, well, things just sort of happened.

At first, it was the occasional web browsing session. My BlackBerry isn’t the most robust surfing platform, no, but it’s reasonably fast and pleasing to use for sites that support mobile. Once I set Google Reader as my home page for “Double Bee”’s browser, there was no going back. I was hooked. (Side note: It just seems wrong somehow to have access to RSS feeds while you’re in the bathroom at work, doesn’t it?)

As time went on, my BlackBerry was able to provide access to my Gmail. Before, I didn’t even realize I needed access to my email 24/7, but now I’ve become very attached. By using filters and labels, it doubles as a task list that I always have with me.

Next came Google Maps. Oh, Google Maps via BlackBerry, where have you been all my directionally-challenged, perpetually-lost in my own hometown life? Take the things you love about Google (intelligent parsing – ever tried just typing in a street name? – and directions/location info, to name 2) and now put them in your pocket. Forget needing your laptop. Forget needing wi-fi.

True story: hungry for some take-out on my way home one evening, I typed in the one-word name of a local pizza joint and nothing else into Google Maps. 10 seconds later, “Double Bee” was showing me a map with the 2 locations for the restaurant. I picked the one closest to my house and pressed the call button. The rest is delicious, pizza-filled history.

When you add in the fact that I got it for -$10, there’s really no comparison, honey. And nothing screams, “I work in IT! Hear me roar! Yes, this is duct tape on my glasses!“, like a BlackBerry in a belt holster.

How could it not be true love?

The problem with Compensation

August 10, 2007

(Disclaimer: I have not always followed what I have written below, as my co-workers would attest. I’ve learned and changed over time. People do that sometimes ::smile::)

Tech blogger Ellis Benus just posted a link to a post about programmer compensation entitled, predictably, Compensation. While an entertaining, obviously impassioned read, the overall sentiment is not one that I can agree with. And since that sentiment seems to be so common in IT, I thought I’d address some of its elements.

First, there’s this:

Most of [the software managers] are your average Econ 101 bean counting weenies. I can hear them now, “We can only afford to give three to five percent raises each year, because if we paid everybody what they deserved, then we would be spending too much. And what is it that these programmers do anyways?”

If most software managers are, in fact, “your average Econ 101 bean counting weenies”, how are they supposed to know what a programmer “deserves”? In my experience, the overwhelming majority of people simply do not understand what goes into software development and I think most developers (including the author obviously) would agree. However, if that’s true, how could they EVER pay someone what they deserve? What would they base it on? (See next paragraph for the answer!)

What’s the criteria for this “pay me what I deserve” scale? If it’s truly someone without a programming background determining the progammer’s worth, the only possible way they could pay him/her fairly is by trial-and-error, i.e. go through the experience of having both GOOD programmers and BAD programmers. This scale is necessarily relative in nature. After all, if you only ever had good programmers, how would you know they were good? Without sufficient experience, I don’t believe it’s possible.

And then there’s this:

A more likely scenario is that this bright young coder will finally break down and take a call from one of the bottom feeders, I mean head hunters, and he will land a job, somewhere else, making what he asked for, and taking all the things that you’ve taught him over to someone else. [. . .]

Oh no! Poor guy – he’s making what he asked for. Seriously, I get a little tired of the “poor me” approach some developers take. “The users are asking for something stupid” or “They’re making me do this”. So? You readily admit they have no idea what’s involved in your job. Does complaining about it serve a purpose? Unless your goal is to waste time and irritate folks who have constructive things to do, I don’t think it does.

We’d all do well to keep in mind that ANY relationship, work or otherwise, is made up of 50% one party and 50% the other. You each have responsibilities and options. In this scenario, the programmer exercised his right to better his situtation. The system worked as intended. End of story.

Next:

And guess what. In order to replace him, you are going to have to pay the new guy as much money as he was asking for in the first place. Plus that nice 15% fee to the head hunter. And now, because you were trying to be cheap, you have to spend even more than what you should have spent in the first place. And God knows, you’ll probably screw it up with this guy too, and thus the circle of life continues.

Maybe managers aren’t trying to be cheap. Maybe they’re trying to be fair and they’re just missing the mark. Hopefully, the manager will learn from experience, do some research, and offer better compensation in the future. When did managers stop being people? When did they become immune to making mistakes? Being afforded the opportunity to learn from mistakes? And growing as individuals? Why are people so quick to forget that managers are people, too? They have bad days. And they do dumb shit sometimes. You may not realize it, but so do you. Every day.

So managers don’t know what developers are worth? Well, neither does anyone else. If you don’t like it and don’t understand human nature well enough to deal with it, find a shop where you are satisfied or do something else for a living.

The rest of us developers will keep writing code and being nice to users. And we’ll be fine without you.

Stuff-you-haven’t-seen Friday (8/10/07)

August 10, 2007

It’s Friday! Here’s more stuff you haven’t seen:

Things to do in Denver when you wish you were dead

August 9, 2007

This week, I’m in the Mile-High City for training on Cisco content switches. As a public service should you ever find yourself in the same scenario, let me tell you how to get to [unnamed tech training facility] in Denver, Colorado.

First, find your rental car in the hotel parking lot, a Chevy HHR (a vehicle that is capable of outrunning only toddlers and the very elderly). Next, apply full acceleration to exit the parking lot and merge with other cars traveling at 30MPH. At this point, begin driving around the city. As you attempt to decipher the map you’ve brought, notice that several streets are named identically except for their suffixes. If you see Johnson St., don’t turn. However, if you see Johnson Rd., make a left. Don’t forget to curse the city planners. Also, don’t forget to accelerate liberally, or you may find yourself moving in reverse, such is the awesome power of the HHR.

Now, after 40 minutes or so and a distance traveled of approximately 2.6 miles, you should arrive at the correct street address for [unnamed tech training facility]. However, instead of [unnamed tech training facility], there will be a large fitness club in its place. You’ll want to sit on the curb outside the fitness club for a few moments retracing your steps, looking for [uttf]’s phone #, and just generally basking in the moment. When you’re unable to find a contact number and you’ve had your fill of curb-sitting, go inside and ask a personal trainer if she knows where [uttf] is located. She’ll tell you that it’s “downstairs“, where downstairs is short for “downstairs, across the parking garage under this building, inside section D of another building (whatever the hell ’section D’ means), up the elevator, on the 3rd floor”. After another 10 minutes or so, you’ll be sitting in a classroom with 7-8 other folks, all of whom had nowhere near the difficulty you did.

There! Now wasn’t that easy?

$5.95 – All you can meet

August 7, 2007

Just a reminder: 95% of the time, if you leave a meeting without a clearly-defined, actionable item, the meeting was a waste of time or you shouldn’t have been in attendance.

In our office, we do a pretty good job of avoiding unnecessary meetings. However, there is the occasional status-update meeting wherein one person talks and everyone else listens. Then the next person talks and everyone else listens. Repeat until everyone (sometimes 15+ folks) has said his/her piece. By and large, these meetings can be replaced with a well-written, itemized email.

A couple of benefits to this approach:

  1. It’s historical. You have an immediate, easy-to-archive record of everyone’s project status from a moment in time. This avoids the pitfalls of poor memory or poorly-taken notes.
  2. Everyone saves time. They save the time it takes to sit in a meeting; time taking notes; time discussing the meeting topics later because they can’t quite remember when Joe said he would be finished with the Shopping Cart module and why he’s still waiting on Suzy to finish the Purchase Order module, etc.

Ok, my trainer is giving me the eye. Back to class! (FYI, I’m in Denver training through the end of the week)

The art of the life hack

August 6, 2007

I read about life hacks all the time, but it’s taken me awhile to understand their full potential. Life hacks, quite literally, will change your life.

Let’s talk a bit about what a life hack is. A life hack is anything that can remove clutter from your life, help you be more productive, enable you to save/make money, or any combination of the above. The trick here is that it should be simple. If it’s not easy to implement, the chances of it making a sustainable impact in your life are slim. The idea is that a series of small steps lead to a better life, wherein you’re more fulfilled, successful, focused, and self-aware. Life hacks may come in the following flavors: productivity, minimalism, uncluttering, frugality, economy of effort/motion, or plain ol’ efficiency.

A few examples (some I’ve mentioned previously and some I haven’t):

  • Merlin Mann’s Inbox Zero system (productivity, economy of effort, uncluttering)
  • LifeHacker editor Adam Pash’s Texter (economy of effort, efficiency)
  • Keyword launcher Launchy(efficiency)
  • Keeping a detailed project and task list with actionable, verb-centric items (productivity, uncluttering, efficiency)
  • Using Google Calender to track, share, and receive configurable reminders about your schedule (and you can even manage it via text message- how cool is that?) (productivity, uncluttering)
  • Subscribing to RSS feeds from sites like DealHack and Bargainist to find free or dramatically discounted stuff (AT&T & Amazon paid me $10.02 to take a new BlackBerry 8300 Curve) (frugality)
  • Paying your bills online manually or automatically instead of via snail mail or phone

Some excellent places to find life hacks

As a side note, the ultimate life hack is a good partner. This could be friend, relative, co-worker, spouse or all of the above (eww). Seriously, though, my girlfriend is a motivator, organizer, and co-financial planner. Plus, we’re very much alike despite the fact that we aren’t related. (Hey, I’m from Tennessee. I have to be clear about these things).

What it’s like to live in a cave

August 4, 2007

It’s cold and damp. There’s no light, really. And when you’re in this cave and you want to know if there’s new content you want to read on the internet, you have to actually type in a URL, navigate to a particular website, and look for clues that someone’s made an update. Sounds awful, doesn’t it? Nevermind the occasional attack by previously-hibernating, currently-starving bear.

Without RSS, I was living in a cave. It didn’t feel like a cave, but after I realized the power of having content delivered to me instead of going looking for it, my perspective changed completely. And you thought bookmarks were a time-saver – ha! The bear I mentioned? Well for me, that’s analogous to all the new technology advances that I was missing because I didn’t have time to scour the ‘net. Inevitably, I’d miss something important that would eventually come back to bite me.

This explanation is so 2001, but here goes: RSS is an acronym for Really Simple Syndication. It allows you to subscribe to web sites that enable RSS feeds. When feeds are updated, the content is delivered directly to your feed-reader. So instead of 10 (or, like me, 50+) places to check for new content, you have 1. Your feed-reader can either reside on your computer (FeedReader) or it can be web-based (Google Reader, Fastladder). I prefer web-based because it allows you to read your feeds wherever there’s internet, but there are benefits to both approaches. Specifically, Google Reader is my choice for reading both on my laptop and on my BlackBerry.

Once you’ve got your reader, the next step is get some feeds. Here are some of my favorite at the moment:

So get started already. If your favorite sites don’t offer RSS, drop ‘em a line and ask them to. Hopefully, you won’t have to explain it to them, but if you do, you can always make the point that the more convenient it is to read their content, the larger their audience. I’ll explain why they may be reluctant in an upcoming post. . .