Saturday, February 7, 2009

handling layoffs the star trek way

"Here's your new tunic, ensign."

"Um, sir, it's red..."

"Report to the away team tomorrow morning."

Monday, June 2, 2008

a new gig

For the past thirteen years I've been essentially self-employed in the software industry. First as a contractor, then as a consultant owning my own corporation; I’ve simultaneously had no bosses and a multitude of bosses. The freedom to take time off when I want to has been great, as has the chance to work from home and be around my kids as they grow up.

Starting June 9th I’ll be turning in my “screw-The-Man” badge and starting a full time gig at Microsoft. It seems like everyone is quitting the corporate world to strike out on their own, something I respect immensely – so why am I doing the opposite and becoming a cog in the machine?

  1. The siren song of a steady paycheck and benefits, benefits, benefits! Really great health insurance doesn’t seem like that big of a deal until you have a family.
  2. Working with people who understand building software (who get that you can’t expect a fixed bid when you don’t know what the product is supposed to do yet).
  3. Actually writing code instead of networking and constantly looking for the next job.

The new job will be writing code for OneCare. I won’t miss business programming – the SQL/SharePoint/Project Server/Office/Workflow/Reporting Services treadmill of Microsoft enterprise products I’ve fallen into working with recently. It’ll be fun to be writing a widely used consumer application again instead of the one-off stuff.

The blog has been paralyzed by worrying too much about what people think about what I write. I’ve been so concerned about writing stuff that seems pointless or trivial (or clueless) that I haven’t been writing at all. My blogging models have been all those frightfully smart writers who go on about language design and other stuff that makes my head hurt.

So it’s time to reboot the blog and quit overanalyzing. Writing makes me think critically and ultimately benefits me. If I’m lucky then something I write might prove useful or interesting to someone else. Poor misguided souls.

Friday, December 21, 2007

c++ cheat sheet

Here’s a refresher sheet I made for C++ to remind me of a bunch of syntax details that I always seem to forget when I've switched to another programming language for too long. It's less of a complete reference and more of a "you better not hose these things during an interview". Let me know if you find it helpful or if you see any mistakes.


C++ Refresher (PDF)


(Also: what else would you add? What are the first details to erode when you haven't used a language in a while?)

Wednesday, July 11, 2007

great concurrency article

Here's a great article about concurrency by Herb Sutter:

http://www.ddj.com/dept/architect/200001985?pgno=1

(If you're a C++ programmer and you haven't read Herb's books, get on it! They showed me a whole higher level of thinking about C++.)

Saturday, July 7, 2007

software project wobble

Your project is spinning smoothly along like a top. It reacts to small bumps by righting itself, always moving, always keeping on course. Life is good and those options are looking pretty sweet.


Then the top starts to wobble.


How does it start? Sometimes you've run out of design - your construction has moved off your map into uncharted territory. Sometimes unchecked changes demanded by the customer push the requirements out from under your program. And always, a level of schedule stress (a release, a review, a demo) has pushed you into cranking out code faster than you really can. You've hit the wall.


The wobble is easy to recognize: you panic program. You start cutting and pasting code instead of making routines or base objects. You start putting in magic numbers instead of using constants. You start to see code like this:


char buffer[1000]; // figure out the real size

…or…

private static int xxx;


You start fixing bugs by randomly changing code to see if it helps (the poke/compile desperation strategy). You know you need to stop, because once the top starts to wobble it's doomed.


This is where I'd like to tell you about a silver bullet. But you know the only real solution is to slow down, take a deep breath and start working at a pace that lets you do good work. Easier to say than to do, so sometimes you need to just try to compartmentalize your panic programming so it's easier to fix later. And at some point you have to accept that a schedule slip is the lesser of two evils.

Friday, April 20, 2007

stagnation test

Here's a test for the coders: find some code you wrote two years ago and take a look at it.

Does it make you cringe? It's good if it does - it means you've been elevating your game. If you weren't any better then it would look just fine.

Tuesday, March 6, 2007

lock in, bad idea or ill-advised?

I've been using a free version of a password management program. This app doesn't play well with Vista so I decide to migrate all my password information to a new program.

Hmmm. It seems the free version doesn't have an export command. There is an export command in the "pro" version, which runs about $40. If I were a suspicious type I'd think they were trying to shake me down for forty bucks to avoid retyping all of my random character passwords.

No problemo, I think (really, "no problemo"). There's a free thirty day trial of the pro version so I can install it, run it once to export my passwords and uninstall.

The download trial version is fully functional. Except for the export command.

Now I don't need to be all that suspicious to think they're holding my data hostage. I send an e-mail to the support address asking how I might get my data out of their program. They reply that if I want I can send them my password file and master password and they'll send me back my data.

Um, no thanks.

Besides the fact that I don't really trust this company any more, I'm also not that keen on the keys to my entire life being sent in cleartext in an e-mail. (I know, they could have used public key encryption to send it to me, but how likely is that?)

What's the takeaway from this experience? That if you want to completely alienate your customers and make sure they never, ever recommend your product or your company, go ahead and trap them into using your product. Shake them down for whatever you can whenever you can.

Joel Spolsky wrote in his excellent book "Joel on Software" that Microsoft Excel finally got over its adoption hump when it gained the feature to not only read Lotus 123 files, but write them. Users felt safe trying out the software knowing they could get their data back into the old format.

It may seem like a good idea to lock in your customers, but when they find out the ill will you generate will make it not worth it...