Nelz' Blog

Ruminations on Development


« Previous month (Dec 2007) | Main | Next month (Feb 2008) »
Sunday Jan 20, 2008

eBay Has Jumped My Shark

eBay does have a place in the world, but it has lost all appeal to me.

I am not an online retail business. I am not a brick-and-mortar business looking to expand into the online world. I prefer to deal in cash, and I'd rather just deal with someone locally. I am just a guy who had an extra Nokia N95 lying around[1], and wanted to get a fair value for it.

Having had nothing to do with eBay for the last couple of years, I logged into my old account. I had 8 positive feedbacks, but as a purchaser only, since I had never actually sold anything there. I put up my ad, asking for a fair price compared to other listings for the same item.

Whoops! It seems I never updated my address since I moved to the Bay Area, so it listed my item as being for sale outside of Denver. I never did figure out how to update it... And that is part of the problem. I am a software engineer, and I am very web literate. However, every time I tried to use their UI to update or fix anything, I was completely frustrated. Nothing seemed to work. And, when I accidentally posted an interaction with a potential buyer where they included their phone number, I couldn't for the life of me figure out how to remove it from my listing. I did some searching in their help documents, and I thought I found a document explaining that I couldn't remove those posted interactions for some kind of integrity reasons. Frustrated, I emailed their Customer Service, and was told that I could remove them, and that I just had to go to the seller modification page or somesuch... But every attempt I made to figure out how to remove it failed.

Meh! I don't need that crap. Luckily, my auction ended without anyone[2] bidding on it.

So, what did I do with my Nokia N95? I sold it via Craigslist, and it was a breeze! This was the second item I've sold on Craigslist in the past year, the first being a Toyota Tacoma. The interface is basic, but functional. In both instances I ended up getting my asking price from a local buyer, and I couldn't be happier.

[#1] - The Nokia N95 is a cool phone, with many advanced features. (Though, they could benefit from getting some iPhone UI designers... Every feature seemed 2 more button clicks away than they needed to be...) It was just that my main usage is for text messaging, and I hate "predictive text" on a 10-key phone... Give me QWERTY over a 10-key any day! I ended up "downgrading" to a Palm TREO 680.

[#2] - The one thing that is common between both eBay and Craigslist is the buyers who try to talk down your fair asking price. When selling my truck, within 7 hours of posting my ad I had 6 appointments to look at the truck. The first guy, who I told that I had 5 appointments after him, tried to convince me to sell the truck to him for 10% - 15% less than I was asking. Here's a tip to buyers: If the item you're trying to buy is that popular, you're gonna have a hard time convincing a thinking seller to take you seriously.

Wednesday Jan 16, 2008

Code Reviews Considered Harmful

Here at Initech, I recently wrote this document and passed it around to other development managers, to much applause. Since I've had so much success with it, I thought I'd share it here with a larger audience.

Code review is amongst the software industry's worst practices, and I'll tell you why:

  • Inflated Sense of Self-Worth: Code reviews have this nasty habit of spreading tips and tricks amongst your developers. When developers start systematically picking up the habits of their coworkers, they start thinking that they are worth more. The next thing you know, they are asking for raises and promotions. Well, unless you work for some gi-normous company with money coming out their ears, realistically there's no money in the budget for those kinds of shenanigans! You hired them as a Junior Developer, and by golly they should stay that way!
  • Destructive Independence: Hey, your team works because of your great leadership, and you don't need 'well informed' programmers aspiring to write more complex code. When a developer gets big complicated ideas into their head, they're likely to try and sneak it into the code, and if an idea doesn't get your blessing it don't go in the code, and that's that!
  • Laziness: People who want to have code reviews are really just lazy freeloaders, who are gonna wait for those around them to find their mistakes. Robbing Peter to pay Paul, anyone?!?
  • Red Herrings: When developers start sharing their ideas around, some of them think they know what is going on in code they didn't work on themselves. Y'know, if there's a bug in Feature X, I want to talk to the developer who worked on Feature X, not some other shmoe who is familiar with the code.
  • Egos: We all know that all developers are primadonna's. What do you think is going to happen when they get their peers picking their code to pieces? Hurt feelings, that's what. And then your job just becomes harder because of all the hugs and little reassurances you'll have to start giving out.
  • Time: Do you realize how expensive code reviews are? I don't know about you, but I have to build the next-generation, flexible, scalable, maintainable application RIGHT NOW! I don't have time to double the development time of a feature for a little bit of navel-gazing!
  • Anti-Agile: Look, we're all doing Agile Development, right? Agile is about being reactive to the changing requirements. Why change code when there were no changes in requirements? The other trap here is that some of the changes that come out of a code review are supposed to "make things easier for the future"... But, according to Agile, we don't yet care about the future, we only care about getting to the end of this iteration, otherwise you are just over-engineering things.
  • Self-Improvement At Your Expense: Some code review proponents say that a developer will get better from participating in a code review process. What they don't mention is that this fictional developer may be getting better, but it's all on your dime. If Joe-Bob the Programmer was actually interested in growing his development skills, why hasn't he touched that $49.95 copy of "The Sun Certified Java Developer Study Book" that you had to pay for out of your already tight budget?!?

Let them Hang Themselves

Allow me, my fellow mid-level manager, to give you some advice. Let's say that one of your developers wants you to adopt a code review process. And even though you've given her all the above reasons why code reviews are a bad idea (plus more, I'm sure), she insists that code reviews would be a benefit.

This is a useful tactic: Tell her to write up a 5 page proposal, with graphs and metrics for measuring the "success" of this new process relative to the cost in developer-hours and time-to-market concerns. Usually, she will stop right there, because developers hate writing proposals.

However, if she persists and actually does write the proposal, go ahead an have her present it to your boss. (Make sure to click your teeth and shake your head in pity to express your disapproval to you boss during the presentation.) 99 times out of a hundred, the code review process will die a short death, like it deserves.

Too Much Work

The previous solution I presented can work, though it is too time-consuming for us here in front-line management. So I submit another tactic that can avoid the whole mess altogether.

When your developer comes to talk to you about a code review process, look at this as an opportunity for a mini-performance-review of her work. Surely, there's something she can improve upon herself, without having to drag down the productivity of the whole team, right? And, even if she has been excelling, more often than not she's talked about code reviews with her co-workers, poisoning the environment around you. What with her uppity ways and deliberate efforts to undermine your authority, you've got a couple of ready-made performance-review topics!

Tuesday Jan 15, 2008

Links - The Fight for Long-Term Thinking

Compensation:

  • Ahhh... A great example of how listening to 'bean counters' encourages short-term thinking.

How to recognise a good programmer:

  • I like this post... Hopefully it is true, and not just an example of why I think I'm a good programmer.

Monday Jan 14, 2008

Links - Compilation

Hrm... No apparent theme to today's link roundup...

How To Interview A Manager:

  • Good points. I gotta keep this link around for the future.

Ten Thousand Hours of Design Reviews:

  • WOW! Mathematica has undergone about 10,000 hours worth of design reviews.

Dishonest Programming:

  • A couple of good examples of how code can be very misleading, and tips on how to avoid the same in your code.

Friday Jan 11, 2008

Links - Synchronicity...

Geez, Reddit was a raft of apt articles today, dealing with several issues that are coming up in my daily life.

Whatever happened to code reviews?:

  • My answer: short-sighted-ness.
  • Another thing to think about when working in an environment where there are no code reviews: How are the developers going to grow? If I come in, and day-to-day just keep dropping the same code that I've been dropping, with no one challenging my skills, how am I going to get any better? My personal answer is that I spend out-of-work time pursuing "recreational programming" activities, however I realize that I am the exception to the rule. Most of my peers stagnate, frustrating my growth. And how can "management" ever hope to make any better products than what they've had in the past? The answer seems to be "churn": lose engineers and hope that your next hire will be better than the one departing.

The top 4 things you should never do to your users:

  • I shopped this one around my office for a bit, since we are definitely treading on at least 2 of these. And 100% of the responses were along the lines of "But there is a company benefit to it." This makes me ruminate on the difference between a "service organization" and other types of companies.

The 3 Levels of Programmers: The Good, The Bad, and the Lazy:

  • I believe I fall *firmly* into the middle tier, though I try to tread into the upper tier every once in a while.
  • I wish it wasn't impolite to just run out of the room screaming when someone suggests a "lets-build-it-ourselves" approach.

Why Crunch Mode Doesn't Work:

  • I think "crunch mode" and "incentive pay" are two concepts that should be discarded.

Maybe I'm just grouchy today, but I am struck by how many companies embrace short-term thinking, even though they purport to be thinking of long-term goals.

Tuesday Jan 01, 2008

Upgrade Completed

Upgrade Done!

Tonight, I finished updating the JSPWiki plugin, and added the suite of 'themes' provided for Roller.

As you can see, I've now chosen a nice, clean and simple theme provided by BlueRobot.

... Now back to your regularly unscheduled updates...