Hang around with people who get sh*t done.

I freely admit that in a past job I was a loser.  You know the guy in the office who gets stuff done?  Yeah, I was the other guy.  And it wasn’t that I didn’t produce anything, I did.  It wasn’t that I didn’t fulfill my job description, I did.  But that’s all I did.  For some reason it seemed OK to me to just be average.

That’s a fair picture.  But so is this:

I was a smart kid fresh out of college, surrounded by people with 20 years of experience but no more skills/knowledge/abilities than I.  My average was at least equal to the group’s performance, maybe a bit better due to nothing to my character’s credit but to my more recent education.  I was promoted and given raises and begged to stay when I finally quit.

That’s a fair picture too.  Both pictures were simutaneously true.

Why?  How can this be?

I stumbled across this post that I think describes what was happening fairly well:

“hanging around people who are doing amazing things makes me try harder to do amazing things”

The people I was surrounded with, in retrospect, weren’t exactly doing cool stuff.  The team wasn’t thought of as an innovative team.  The work we were doing was thought of as a necessary evil in the organization (you’re not people, you’re a cost center!).  Compared with other jobs I’ve had, it’s easy to see this truth in retrospect.  When surrounded with A players, I tend to perform better.   So that brings up two questions for me:

Q1) Why is this true?  Why do we tend to perform better when surrounded with top talent people?
Q2) Can we identify this in-the-moment or only in retrospect?  How can we evaluate our current situation and work towards bettering ourselves?

A1:  Peer Pressure?  Probably.  Intrinsic Motivation?  Probably.  Suggestive Energy?  Probably.  Behavioral Psychology?  Probably.  Regardless the means of this drive to perform better when surround with better performers, it all goes back to classic systems thinking.  That is, a person’s performance is more a product of the system in which they exist; and less a function of individual aptitude.  Sure you have to have all the requisite skills and abilities to do the job, but creating really great performers (or really poor ones) is a function of the system.  From Ackoff:

“An important aspect of a part’s performance is how it interacts with other parts to affect the performance of the whole.”

There are even been studies that show the simply thinking about smart people may make you smarter.  While that claim is  dubious at best, it’s interesting and lends itself towards the same conclusion: surround yourself with people who are smarter than you are, better performers, and doing cool things, and you will likely perform better – because the system you are part of is a better system.

A2: If we work on becoming more aware, surely we can see these truths in-the-moment.  You might need some reference, something to compare your current situation to, but maybe not.  I think a large part of this can be self-known and is as much a gut-feel-in-the-moment thing as it is a comparing-in-retrospect thing.  If you sit down and think about it – really feel – you can answer the question for yourself.  Am I doing my best work here?  Is the system I’m in helping or hurting me long term?  Is it time for a change?  Surely beware of “grass is always greener” or other pessimistic frames of reference.  But for the most part I think these answers are self evident.

Say-Do

While talking about agile metrics a while ago I was asked if I’ve ever used the “Say-Do” metric.  I had not actually heard of it.  So let’s dive in.

The Say-Do metric was explained to me as “basically that you “do” what you “say” you will do.”  Sounds like common sense so far.  Looking around the interwebs a bit revealed some more detail.  The Say-Do metric is commonly defined as a percentage of comittments met over number of committments made.  Ah, there’s the rub:

In software, the word commitment is a thinly veiled synonym for scheduled-date.  Hmmmm….I think I’ve seen this movie before (it’s called traditional project management) and I know how it ends (badly).

Two things will happen if you try using Say-Do metrics and management styles.

A) Individuals will set smaller and smaller goals, so they can achieve them more often than not.

B) The value of your product/company will not change.

Why?  Because software is a complex creative endeavor.  Say-Do works for simple and even complicated things.  I would use it for children doing chores or for landscapers building me an outdoor cream-city brick wood fired pizza oven.  It might work here.  It might increase productivity and give me something to measure performance against.  But I wouldn’t use it for complex creative tasks.  I wouldn’t ask a composer to tell me when he’ll have that opera finished and measure him against that.  I wouldn’t ask a nuclear physicist to guarantee zero defects in his first design of a cold fusion reactor.  Those requests are just silly.

The software world has been badly hurt by the “engineering” and “manufacturing” analogies.   Writing software is nothing like engineering a bridge or producing widgets on an assembly line.  Nothing alike.  OK, maybe there are similarities and parellels to be drawn upon, but at least I can say with some degree of confidence that they are not the same.

In software, it is *impossible* to accurately predict the end date when we’re talking more than a few days out.  Hours even.  There’s simply too much complexity.  Everything we’re doing in software we’re doing for the first time – we are creating – and all of our techniques for estimating engineering projects rely on recipes and past knowledge.  Sure there are typical design patterns and best practices that we use in software.  But we’re applying it in a completely different context under different circumstances and wanting different results.  Complexity matters.  There’s 30 years of grossly missed software project dates to prove this.

So when we ask for Say-Do metrics, we’ll get A and B.  “A” is due to a paradox of measuring people, the fact that the measurement is visible and people want to “achieve” it, and possible Hawthorne effect at play.  “B” is due the fact that measuring dates, even when it’s the date provided by the people who are doing the work, is a fallacy of traditional project management altogether.  Your software project will not improve because you are using Say-Do.  You will not go faster.  You will not deliver more features.  You will not increase time to market.  You have really changed nothing about the software or project itself, or reduce its complexity.

We have a professional responsibility to be aware of the complex world in which we create software products.  It’s simply niave for management to ask for dates and for developers to give them.  Perhaps even unprofessional.  Maybe even unethical.