Tuesday, May 22, 2012

Two weeks from last Tuesday to a three-quarters left-turn next quarter: My take on time and measuring progress

This may be an unfortunately Millennial perspective, but I’ve been out of school and at work for four years now, and there are some things that continue to faze me.

Mostly, I’m still a little amazed at there is such vagary in time.  In school, there is a clear First Day of School and a Last Day.  There are semester breaks, finals, exam days, due dates, etc. ad infinum.  Now, any due dates are arbitrary.  Why does something need to be done by next Wednesday?  Because your manager heard from his manager who misunderstood a customer saying it’s needed next week.

Despite some days varying wildly from others, many are mere copies of yesterday, which is a copy of the day before, which is a copy of last week, which was the same as next week and next month will be.  As I write this, I’m on mute, 43 minutes into a daily morning conference call that lasts between an hour and an hour and a half.  I say 3 sentences, about 20 minutes in explaining what I did yesterday and will do today.  Yesterday I got in, wrote some code, and gave a project demo to some new users (who aren’t actually using the new system yet anyway).  Today is unfortunately the exact same day.  But if today instead of server in the basement explodes, 40 new users all try to use our system simultaneously, and my company selects me as the new Acting CEO, tomorrow I’d still get on the call at 7, at about 7:20 I’d summarize that into 2 sentence (okay, that would probably get a third or fourth sentence), then go on mute while everyone else talks.

How do you mark time in this kind of environment?  By the constant, never-ended change.  What?  What change?  I thought you just said things are never changing?  Managers move around, teams shift projects, people move  to new teams.  There are promotions and lateral moves.  Reorgs are announced, then changed, then made announced again – the dates people start doing new work has no correlation to when changes are effective.  You think you know who to talk to about something in another department, but when you talk to them 6 months later they’ve moved to a new team.  Did something happen three months ago or six?  It was last year already, wow.  Was I working for my old manager then or the current one?  I can’t remember, there was a long slow transition period.  I remember we were sitting in a different set of cubes or on a different floor, but when did that move happen?

Projects start.  Well, projects don’t start, they wind up.  By the time a team is put together to work on it, management has it all figured out, even though there’s nothing solid to know anything about.  Users have been talked to, but not in any orderly way.  Architects are been designing it to fit their Grand Plans.  By the time there’s a team in place to do it, it’s already heading down the wrong path and too much has been done for management to want to start it over.  If you do start over, you begin a cycle of continuous restarts.  Projects get going and start rolling down the hill.  Slowly picking up speed until there’s enough there it actually can do a simple function!  There’s a first production deployment!  …it fails…  Then there’s the hot production deployment!  …it fails…  Managers get together, architects redesign, team leads look busy, developers ignore direction and do whatever they think’s needed.  Weeks of intense testing…another deployment…and it works!  Well, 90% works, so let’s have a team lunch to celebrate!  Oh wait, we still don’t have any users.  So when the first user tries is… looks like lunch was premature.

By this point, you’re 8 months in.  What do you have to show for 2/3 of a year?  A system that in very carefully controlled situations can mostly but not authoritatively do part of what a small group of people want it to do.  How long until it does everything it’s supposed to do?  Right about the time a total re-write is due.
Nothing’s ever done.  Nothing’s ever complete.  How do you measure success when there’s no completion? There’s too big a gap between “done” and “done done”.  I find a defect and make a change.  It takes a few hours or a day and I call it done.  When’s it get deployed – actually used?  Do I get to feel accomplished that I wrote code not being used yet?  Or should I feel successful instead when something I did a month (or three) ago and have moved on from since finally got turned on last week?

I spent my first nine months here working on a project.  It never got finished – my manager told me to work on something else instead.  What was I supposed to feel about that effort?  A year later another teammate picked up my work and continued, to meet the same fate.  Currently, another teammate is finally, slowly, completing it.  It’s completion is built on the core of my work, but I have no satisfaction from it.  There’s a mixture of disappointment it took so long; amusement it’s finally being finished; more disappointment because I would have liked to be the one to complete it; incompetence that my work couldn’t get finished until this far later; and a few other generally downer thoughts.  A good early success in my career would have been nice.
A few years ago my team had a big infrastructure change.  We worked hard for over a month, and when it was “done” our architect bought us lunch to celebrate.  Over 100 days later, we finally finished by my standard – and by the time I’d finished this part of the project, the rest of the team was working on something else.  That’s it – that’s the last and only time I’ve felt like a specific thing was distinctly finished.

My current project?  Training 120 users on a new system.  Two at a time.  Okay, 60 demos, that’s easy to track, right?  Easy to mark progress and know when we’re done?  Except we don’t actually know how many users need to be trained.  And the real purpose isn’t to train them on the new system – it’s to have them stop using the old one and start using the new one.  We’ve trained about 30 people so far – but only maybe 4 are actually using it.  How do I mark this progress?  When do I get my “we finished” lunch for this?  When 100% of users are trained, but not using it?  When 100% of them are using it?  Define “using it” first.  When we turn off the old system?  That’s not going to happen – it does too much other stuff that’s not being replaced by the new one, so it’ll live on in a lobotomized fashion.  We could celebrate the lobotomy because that means we’re in charge now, but celebrating our completion by another team’s intended mutilation isn’t very satisfying.

And then, people leave.  This is the part that continues to confound me the most.  We hire people mostly matching with the academic calendar – we have a large influx of college hires in June and January.  But then people decide to leave.  And I’m not talking about the constant roar of upcoming retirements (once you’ve been here 35-40+ years, I’ll dearly miss your knowledge but your leaving is anticipated).  Just out of the blue one day someone will email some friends or send a Tweet or through the grapevine that someone’s leaving.  Two weeks from yesterday someone you’ve worked with, eat lunch with, kvetch about work and life with and battle production problems and management with is gone.  What made yesterday worse than the day before to prompt you to leave?  I get that it’s a natural cycle and not usually a specific event, but it’s still so ingrained that there should be natural endings – the end of the project, the final exam, the semester or year ends.   But next Thursday seems so ethereal.

How are you supposed to keep up with all this constant change?  More emails flooding your inbox every time someone you’ve never heard of changes teams?  Org charts that show management hierarchies without corresponding project information?

How do we measure time, measure success and failure, how do we measure growth and progress or lack thereof in such a world?  It’s the middle of the 2012 2nd quarter – are things as they should be?  Better?  Worse?  Better or worse than what, than when?  Friends and mentors who have taught and trained me have left and continue to leave, and new employees I teach and train continue to come.  Who’s going to stay?  Who’ll leave soon?  Who will be working on what, and what will my relationship with them be?  What will I be working on?  What’s more important, less important?  When is something complete, when is there something to call a success?  When is something a failure and not just a mistake or setback or delay?

What are the answers to these questions?  Are there answers?  When will I start figuring them out, and who will help get me there?  How will it happen?  When will it end, and how will I  know?

Tuesday, May 15, 2012

Primary day

Hello on the evening of Nebraska's Democratic and Republican primaries.  And aren't they exciting, with Pres. Obama being unopposed and Gov. Romney running against noone who's still running.  But that's nothing of note.

What's irritated me for a while - and increasingly so - is that primaries are state funded.  Why is this so?  They are purely political functions; they are a mechanism for national (and state and local) political committees to choose who will represent them in the general election.  While personally I appreciate being able to vote for this, I don't understand why my tax dollars are being spent on this.  Each party could put candidates names on pieces of paper and whichever one gets eaten my a donkey or elephant last could be the winner.  What I mean is, how each party determines who will represent them is their own decision.

Further, why does the state have to spend tax-dollars on this process?  I'm not sure how much it costs to hold today's election, but on one side there was an unopposed race and on the other there was a race with only one candidate still running.  Yes, I know the down ballot issues are important, but the only one people really care about was essentially meaningless.

I hate to sound crotchety and say "and another thing," but, my other problem with this involves registering my party affiliation with the state.  Why's it any of their business?  I know that who votes is public record, but why is my party affiliation?  And more importantly, why do I have to tell the state?  How can they tell me I can't vote in either primary?  Can they make other decisions based on my affiliation?  Tax rates?  Unemployment benefits?  Hiring or firing?  Timeliness of EMTs or garbage collection?  I know (well, hope) these decisions aren't being effected by it (and trust in the courts to protect that), but would rather not be required to register my political decisions with the state.

I hope everybody in Arkansas, Kentucky, Texas, California, Montana, New Jersey, New Mexico, South Dakota, and Utah find their primaries more meaningful than I did.  But it's not likely.

Edit: I forgot the last part of my rant.
I have no problem with the state holding elections that are used for primaries.  There are several (mostly unopposed, entirely unimportant) non-partisan elections.  So since the state's already going through the expense of the election, if a party chooses to use it to select their representatives, they can feel free to.
For a fee.
This isn't just a gimmick to help the states balance the budget.  These elections are expensive and are  primarily for the parties' purpose, so let's make them pay for at least part of the expense.  Otherwise privatize the whole partisan part of the election and make each party hold and pay for their own.

Monday, May 7, 2012

Hello world!

Hello, world.  It's bugged me for a while that "hello world" is missing the comma.  Greetings like "hello" are supposed to have a comma after them.
I promise this blog won't be entirely about grammar.  Although it may be a periodic topic.