Tuesday, December 15

Well, it happened ...

... maybe when I wasn't looking, or paying attention. Or while doing my best to ignore it.

Some readers may recall a previous entry on professional transition.

I now officially spend at LEAST as much of my time on sales, client relationship management and management of subcontract "employees" as I do on writing code -- and, in fact, the balance may have tipped, and I'm just trying not to admit it to myself.

I love coding. I love getting my hands dirty. Since the age of seven I have loved everything from writing small tools and utilities to make my life easier or better, to building big, complex, shiny, flashing, humming, integrated-at-many-levels enterprise systems.

At some point, I've come to conclude, that has to change. There's only so far up you can go as a "mere programmer." Twenty, 30 or 40 years from now, I don't want to be the "programmer/analyst" who's been working a specific technology, platform or system for 20-30 years without advancement or change in title or role. I also don't want to be at risk for being outsourced -- and no matter how good you are and what kind of experience you bring, as a programmer, developer or software engineer in the business app world, you are inevitably at risk of having your work offshored.

For months now I've been occupied leading a small network of subcontractors on various projects. I've lead small dev teams at fulltime employers in the past but with a manager or architect providing a level of guidance and oversight; I've managed subcontractors in the past, but generally they were pretty independent projects I could spin off, let them work, act as an intermediary between client and subcontractor, but the majority of the project was in the subcontractor's hands.

Not so any more. I'm working several projects that are too big for one person to reasonably design & develop given the existing timelines and demands, and I am the point where the buck starts and stops. I'm finding myself struggling to find pieces that are easy to spin off independently. I'm finding myself embarrassed at the state of some code I have to share with others -- and in one particular scenario, this is a scenario where I came in to perform triage. My code is, as usual, solid ... or SOLID (: but the legacy code is nasty disassembled stuff, and heavy, archaic DB code with LOTS_OF_CAPS_AND_UNDERSCORES. Thing is, when it comes down to it, it's now my system and my responsibility. I'm still embarrassed by that mess, by handing any part of that mess to someone else, even though I didn't make the mess.

I also find myself responsible not just for the system, but for other people, both up and down the ladder. I'm responsible to both my clients as well as my subcontractors, or client employees/contractors placed under my lead. It's one thing to lead a team when you're a fulltime employee, quite another when it's all contractors, all working remote, all third party colo hosting, all spending money out of the pocket of a bootstrapping company founder. At the same time I'm responsible for keeping the people I recruit occupied, paid and happy, and keeping client & subcontractors in balance.

Sometime this week, I expect to hear back about a fulltime role as a .NET solution architect for the professional services arm of a kick-a$$ company down South, with clients nation-, and more and more so, world- -wide. The role is, at most, 25% coding. The horror! ;)

It's a whole different world. I kind of like it. I kind of miss geeking out on code all day ... but there's just no real, longterm future in that. It's a stepping stone to bigger, better things, and here I come.