Don't Hate, Automate!

(After spending some time this weekend reading about the recent changes to vendors/contractors and forced hiatus, along with some commentary, I figured I'd write a bit about what I've observed)

Teach me how to contract

As the various shoes continue to drop regarding the restructure at Microsoft (for whom I, as you might recall, absolutely do not speak officially), one of the new developments is a change in policy around 'vendors.' Specifically vendors/contractors/and all temporary workers will now have a mandatory enforced hiatus of six months after 18 months of consecutive work. There were some specific policies that sort-of required this but the policy is apparently way more sweeping and hard to work around.

For the uninitiated (lucky you!) giant corporations can't, or won't, always hire "full time employees" (FTEs, because ACRONYM ALL THE THINGS) to do stuff they need done. There's a couple of great reasons for this practice:

  1. They're doing something that isn't related to the core business offering. Like say they make delicious food for your employees or handle phone calls or customer interactions where they need relatively shallow understanding of the organization. Or they're helping you roll out a new product or project where you need extra hands while it's crazy.
  2. They're doing something that is related to the core business offering but is time-limited. For example: handling work that is important to do but either won't need to be done for long or can be automated away or integrated with your overall business flow.

The problem with 2 above is that it can be very difficult to manage and understand what 'time-limited' means, especially when things are not cyclical (e.g. a holiday rush), or when you're just lousy at fixing the thing that will enable some temporary patchwork to be time-limited.

This in particular is what I see a lot of and why there's been a consistent push to try and limit this from various folks that I've spoken with or read comments from. Using non-FTEs is routinely abused, and the abusive cycle is bad for everyone involved.

What it takes to get somebody in (and maybe out)

Hiring people is really expensive and hard, as it so happens. For an organization like Microsoft with a lot of well-merited pride (once again so glad I'm not turning on comments, please troll elsewhere about qualitative measurements) part of this is about finding folks who are a good fit. You want to select for bright people with passion, energy, and drive. You want to hire 'A' people who will only want to hire other 'A' people, so that you do not hire a 'B' who is fine with a 'C' and so on. This basic philosophy is of course extremely hard to execute on well 100% of the time, but the general mentality is very much there and it's important. You want to be as crazy-picky as you can be. The most successful companies care as much about you loving their culture as they do about the work you produce. They hire you because you're a good fit. Good fits are different in every company, but good companies consistently find good fits. That's why all these type A engineering dorks at your Microsoft/Google/Facebook/etc type companies are so extra-prideful and extra-picky about having rigorous and difficult hiring processes, and they exist for a damned good reason.

On top of that, in a big company, when you hire people to be "full time" you probably have built up a metric fuckton of processes and procedures that all full time employees must follow and so when you do hire these folks you have to run them through the gamut of trainings, seminars, training seminars, and seminars about how to train others. Seriously, the amount of stuff that builds up can be incredible. It's hard to "clean up" or "streamline" all this stuff too because all of this training has owners and the owners aren't going to be excited about reducing their scope and so on. Shit, a fair amount ends up being all-but-legally required due to the morasse of laws around, well, everything.

In contrast when you "only" need a contractor/vendor/temp person you generally get to cut some corners. They get less access to your internal garden of corporate awesomeness and they're expected to not be around as long and, in general, somebody else (the agency) is covering a bunch of stuff for you as well. So they're way cheaper to get. Plus there's a ready-made pool vetted to whatever standard you're more-or-less satisfied with by the aforementioned agency so your human resources costs to acquire are also lower. And when you're done you're just done, the separation process is typically way less messy.

Gaming the system

So, shucks, it's pretty damn hard to hire people full time but, "I really need to get this done now." What to do? Get a contractor! He'll do it! It'll be great! What could go wrong?

Getting contractors is way easier. You get some fixed budget and you just kinda go hire somebody to do some stuff and hope it works out. I mean, if you don't spend that budget it just goes away so you might as well find something to spend on, right? Everything I've heard says it's simply easier to do this.

So people find creative (and not-so-creative) ways to spend this money, for if you have money then spend it you must. From what I have seen (important to note my experience is limited to things which are not customer facing) the general qualifier is "work which is unpleasant and which you cannot motivate anyone else to do." Some examples:

  1. Building and maintaining corporate reporting databases.
  2. Managing assets and associated data.
  3. Repeating a set of steps which somebody has provided to do a thing which needs to be periodically done.
  4. Making sure some other sort of process or workflow gets done by hand.

Now, time to stop! I read lots of very reasoned comments and opinions from honest-to-goodness vendors about why they are awesome and, to be honest, they sounded pretty reasonable in terms of the reality of the world. However, my reaction was that the current reality is broken. So let me get to that in a bit. The real point I want to get to is...

Temporary work needs to be temporary

All that stuff above, the thing it tends to have in common, is that it could and should eventually stop needing to be done by humans. While the upfront cost of automating something is always higher than doing it a few times, the long-term costs tend to escalate quite nastily. There are a host of problems associated with (ab)using humans in place of things which can be automated, particularly inside a software company:

  1. The things become toxic. They become something that, by human nature, is divided aside for "the vendor to do." It breeds a "not it" or "hot potato" attitude which keeps focus away from maybe fixing those things.
  2. The things become stale. Because of #1 above a rigor tends to be put in-place to just keep them the same so a potentially rotating cast of characters can do them.
  3. The things become ignored. With no change or improvement their value gradually declines. Innovation stops. Value subtly erodes. Bad fucking news.

Let's set aside the points about work that isn't a core offering. The real issue is work that is nominally temporary but that drags on for years in a zombie state, not being properly productized, but not ending. This is the thing I, personally, have a big issue with.

This kind of work is a disservice to everyone in involved. Per the above you've created a static and immovable object in a world that wants to be fluid. You've set everyone up for failure.

It's just too easy to let these coulda-woulda-shoulda been automated problems slowly pile up. You're hurting yourself in so many ways. Again, because I am way into lists, a few:

  1. If your budget for temporary workers changes you may suddenly find yourself royally fucked.
  2. A process or workflow automated by humans just isn't as predictable as rigorous software (sorry humans, love ya, but this is one where computers beat
  3. Again, stagnation is rampant. You have not only the "temporary" permanent work, but a lot of human enforced meta-process and meta-rigor around how it can and should be done.

You're also just setting a shit example for folks around you. Why automate when you can throw bodies at it? Why do the, look let's be honest, less sexy and fun time work of productizing when somebody else will?

It encourages the wrong kind of laziness.

If you have a perma-temp then that last point is BS?

Nope. Because you have to have some contingency plan for when that person disappears for some other opportunity. Or when you lose your budget. Or whatever.

So the less human process the better?

I mean, yeah? For things that can be automated? Doing automated/repetitive work is not routinely satisfying, particularly for "computer people." This ties in to the "desirability of the work" issue above.

Remember that laziness is awesome

But only the right kind. In engineering you want the special kind of laziness that comes from having to do some tedious thing repeatedly. That's what computers are about folks. They're about turning monotonous and tedious work into something a machine can do.

Laziness is not pawning off your shit problem on somebody else because you can.

Do you just hate vendors? Do you think they're "dash trash"?


What the hell is "dash trash"?

A shitty pejorative term for folks at Microsoft who aren't FTEs. Those folks have email addresses with the form 'x-something' where the x is a variety of characters that denote some voodoo. The some letter, dash, and then some more letters led to the idea of 'dashes.'

But you don't hate them?

Not at all. Far from it. I don't want to see people lose their jobs or be hurt by a bad system. However, I believe that the system is routinely abused and that it mingles some incredibly reasonable tasks where vendors/contractors are appropriate with tasks where somebody just got lazy and is now underutilizing somebody else.

But you want them to all be fired?

Nope. Not at all. But I don't think the new policy is about that. It's actually incredibly reasonable in my mind. It says, broadly, that having somebody do the same work for more than 1.5 years means you need to figure that work out. It doesn't say anything about getting rid of all contractors/vendors. You couldn't and shouldn't. That's not sane or practical.

So what is a contractor to you?

Ideally a ninja. Or mercenary, but ninjas seem cooler to me. Meaning that she is a person hired to go do a specific task and get that task done. Forever tasks, maintenance tasks, those don't get done, they just go on. They aren't bad tasks but if you're doing them forever, as an organization, you probably shouldn't be hiring ninjas for that because your ninjas will get bored and turn on you and, speculatively, a kunai in your face probably hurts?

You said there are good counter-arguments...

I said there are counterarguments. One in particular that I saw which, frankly, incensed me is that it's easier to get some folks out there because they don't need to go through all the crazy FTE hoops to get working.

What. The. Fuck?

So the argument as I read it is that, internally, is that it's so hard and convoluted to get engineers going in some disciplines, so they can start rocking it, that it's just faster to get a contractor and get them them going because some internal process is really slow.

This is an indictment of the processes for setting this up. It is rationale for a re-evaluation of how this work is done. It means somebody needs to figure that out.

Let me be super clear: I don't think anybody hired in either capacity is better or worse than their counterpart. I just think the logic for this argument is nonsensical. If you can't get somebody ramped up and going fast enough to do generic work then you have something going wrong for you.

So, now what?

Now it's time to evaluate again. That's the mentality of agility. Evaluate a ton. Take what works and keep it, throw out what ends up not working.

Think about what is right for temporary work. Think about what you believe to be temporary. If you have some work that needs to be done for a few months and then goes away that's a great reason to get somebody to temporarily do it. If you have a shitty problem that "isn't worth solving" but you somehow "solve it" with years of attention from a rotating cast of characters maybe it's time to get serious about solving your problem correctly.

Be honest

Is this really temporary? Is your plan to escape actually fairly airtight? Did you just hire somebody to generate critical business data because it was kinda hard to do and you wanted to spend that time and money elsewhere?

Slow down a bit and step back. Make some choices about what is critical. Fix your plan and get realistic. If your data is critical then generate it yourself.

Think about what contractor means for most folks

If you hire a contractor to do some work on something you own, and he's still there two years later, how do you feel about that assignment?

Remember that in the right circumstance temps are rad

They are the ninjas/mercenaries of the industry. Treat them that way. They have laser focus and you need to apply it. Point them at a single and specific problem that is appropriately time boxed and let them knock it out of the park for you (or silently assassinate it for you if you're into ninjas).

That's why these guys are here. They take single assignments and rock them. And single assignments don't last for years.