Showing posts with label business. Show all posts
Showing posts with label business. Show all posts

Sunday, January 27, 2013

My Theory About Agile


[If you don’t follow software development, and in particular if you have no idea what “agile development” is, or how it contrasts with the “waterfall style,” this week’s blog post is not going to make much sense.  But that’s okay: I told you not to read this stupid blog anyway.]


Agile software development is really quite a cool thing, when done properly.  (If you disagree, please see my rant about hype.)  Unfortunately, most people who do Agile don’t really do it properly.  And, even more unfortunately, when Agile people try to help failing Agile shops, they often do it by pointing out where they deviate from a certain process (in whatever flavor of Agile is appropriate—XP, Scrum, whatever).  “You’re trying to do XP but you’re not pair programming,” they’ll say, or perhaps “you’re trying to do Scrum but you’re not standing up in your daily scrum meetings.” This is ironic (insanely ironic, even) because point #1 on the Agile Manifesto is: “Individuals and interactions over processes and tools.” So we’re supposed to downplay (although not ignore entirely) the processes, except when figuring out what we’re doing wrong, when suddenly it’s all about the process.  This seems wrong to me.  Most of the time when I’ve seen, or heard of, Agile going wrong, it isn’t the processes that are to blame.

It’s the attitudes.

I think that, in order to implement a good version of Agile—whether XP, Scrum, Crystal, or some melange—you need to start with an understanding of what Agile is supposed to give everyone.  So let me give you my theory on that.  Note that this theory is not backed up by scholarly research.  It is based solely on my own experience, and therefore is 100% anecdotal and useless from a strictly scientific perspective.  (As always, please refer to the masthead.)

Once upon a time, there was business, and there was tech.  These two camps didn’t always get along, primarily because of their radically different outlooks on the nature of reality and perception.  And one of the biggest conflicts they had (and, honestly, still do have) is when it comes to figuring out when something is going to get done.

See, tech people are horrible estimators.  We are, at heart, hopelessly optimistic.  I think this is mainly because, for the most part, we love what we do.  Which is unusual in the professional world, if you think about it.  Actors love what they do.  Musicians love what they do.  Professional athletes love what they do.  Really, if you think about it, programmers are some of the only people on earth who love what they get paid to do without ever getting rich or famous for it.  So, when you say, “we’re going to give you a really hard programming problem to solve,” we start salivating.  We’re looking forward to it.  When you say “now how long is that going to take?” ... we think about all the fun we’re going to have.  All the coolness, and all the interesting trickiness.  What we don’t think about is how long we’re going to spend going down blind alleys before we figure out the right way.  Or how long we’ll spend chasing down documentation on the new tools we’re going to have to learn.  Or how many bugs in IE are going to make us tear our hair out, or how long it’s going to take us to find our own bugs that QA thoughtfully pointed out to us after we were “done.” Or how much time we’re going to have to spend in meetings telling business why it’s taking so long.

So we underestimate.  It’s understandable, if not exactly forgivable.

Business has a different perspective.  They need to plan.  Us techies don’t plan.  We just do.  “It’ll be done when it’s done!” we say.  This makes perfect sense to us—after all, it couldn’t possibly be done before it was done, right?  But that makes businesspeople insane.  They need to market.  They need to develop release strategies and conduct market research and hold pricing meetings.  They need to write slick advertising materials about what the product will do, and there’s no way they’re going to wait to start doing that until after us techies are done making the damn thing.  So, to them, asking when it’ll be done is a perfectly rational question.

And thus the trouble begins.  I think that, probably, back in the dark ages of the software-induced shotgun wedding between business and tech, business would say “when?” and tech would answer “then” and business would say “fine” and then go away for however long that was.  Then they’d come back at the end and say “okay, where is it?”

This didn’t work.

After several iterations of not getting anything on the date they were “promised” it, business decided that they needed to check in with tech a little more frequently.  Maybe if they could at least know there were delays before it was too late to do anything about it, that might help.  Seems rational enough.  So let’s have a meeting every month just to see where we are.  And, you know, if meetings every month are good, meetings every week are better.  That’s just math.  Actually, meeting every day would be even better still.  Pretty soon, tech found that they might be spending as much as 20-25% of their entire workweek explaining why they weren’t getting any work done.

This didn’t work either.

Besides estimation problems, the other serious problem was specifications.  Business would say to tech “this is what we want the software to do.” And tech would say “okay.” And tech wouldn’t make it do that.  Exactly that; as I mentioned before, techies tend to be literaliststs.  Occupational hazard.  Whereas businesspeople tend to live more in the real world, where common sense is supposed to be applied to anything you say.  Silly businesspeople.  So there were communications problems.  And also, sometimes businesspeople don’t know what they want until they see it in action, wherein they promptly realize that they wanted something different all along.  Also, software takes time to develop, and the market doesn’t just sit around doing nothing while new software is being written.  Sometimes the requirements change in the middle of the project, and that’s not really anyone’s fault at all.

But somehow the solution to this problem became to make the specs bigger.  Longer, and more exact, and more like a contract.  There are legal documents—hell, there are bills in Congresswhich make more sense and are easier to read than software specs produced by a serious waterfall methodology, like say ISO 9000.  And then, if something changed, everyone scrambled through their copy of the specs looking for the reason why it wasn’t their fault.

This was not particularly helpful.

See, there’s not only a fundamental communications gap between business and tech, there’s a fundamental difference in goals.  Tech wants everything to be beautiful.  Not perfect, because it can never be perfect, but at least pretty.  Most people don’t realize it, but programmers are craftsmen.  If you’ve ever engaged in a creative hobby—say, woodworking, or perhaps gardening—you understand pride of craftmanship.  When you make a chair, it better not be just good for sitting on.  It better be beautiful to look at, and detailed, and supremely comfortable.  When you plant a vegetable garden, it better not just produce food.  It better produce gorgeous, succulent vegetables that make the children’s mouths water and the neighbors green with envy.  If it’s not doing all that, you’re not done yet.  So it is with programmers.  It can’t just work.  Any moron can give you code that just works.  It needs to be code that other programmers will come along and read, and whistle to themselves, and be happy that such an amazing craftsman was able to provide them this as a starting point, because she just made their lives a thousand times easier.

Whereas business is all about numbers.  Mainly that bottom line number, the number that shows you how much profit you made at the end of the day.  But there are all sorts of numbers: customer satisfaction numbers, and product defect numbers, and market penetration numbers.  Some you try to maximize, and some you try to minimize, but it’s always about moving the needle.  Maybe you pull off some business maneuver that makes a good story over cocktails, but that’s just a bonus.  At the end of the day, you can tell whether you did well or poorly just by looking at the numbers, and numbers don’t lie.  And everyone else can tell how well you’re doing too.  It’s all very satisfying, in a visceral way.  When you get that report back, and the numbers are bigger (or smaller), you get this excitement in the pit of your belly, and you just want to pump your fist in the air and go “YES!”

And the thing is, it seems like these are completely incompatible viewpoints, but that’s not the real problem.  The problem is, they’re both wrong.  Oh, they’re both right, too (balance and paradox), but they’re both wrong.  And, when you put them together, they balance out nicely.  Tech without restraint becomes perfectionist, always tinkering with everything and never finishing anything.  Business without restraint becomes lost in the weeds of short-term gains and ignores the long-term goals that are being crushed.  Techies often forget that, if they don’t make deadlines, the bottom line suffers, and that’s what puts food in their mouths.  Businesspeople often forget that cutting corners today means defects—and therefore lost revenue—tomorrow.  But together, there’s a yin and a yang that usually produces pretty good results overall: not too slow, not too sloppy.

And this is what Agile attempts to do.  Agile says to tech, “You’re not going to get everything you want—sorry.  We’re going to give you an outlet for your concerns about doing things right, but you’re going to have to justify them.  And we’re going to put you in the driver’s seat on how long things are going to take, but you’re going to have to break it down into tiny little pieces and esimate every one.  And, yes, you’re going to have to give your status every day, but we promise it won’t take but 10 minutes.  If you want to spend longer on doing something the “right” way insead of doing it the expedient way, you’re going to give business numbers to show the difference.  This is how much it costs now, and this is how much it will cost later, and then business can make a rational decision on whether that trade-off makes sense.  And sometimes they’re going to agree with you, and you’ll be happy.  And sometimes they’re not, and you won’t be.  But it’s better than nothing.”

And then Agile says to business, “You’re not going to get everything you want—sorry.  We know you want 100% visibility into what tech is doing, but you can’t have that.  100% visibility equals 0% productivity, because it would be you and tech sitting in a room, with you going ‘What are you doing now?’ and them replying ‘Answering your question’ over and over again.  But we’re going to institute a structure so that nobody gets stuck for more than a day.  And we’re going to give you numbers.  How many units something will take, and how many of those units this team can deliver in a given time period.  That time period will be short—a month, or even two weeks—and you can specify exactly what will get done in each period (no more ‘tech spent 3 weeks doing this thing because they thought it would be useful’), but you can’t change your mind in the middle of the period.  If there are changes, just wait a few days until the new period comes along.  And the team is a team: they’re a cohesive unit that works together, and you can’t just replace team members or juggle them around like they’re factory components.  So you can’t bother them while they’re working, and you can’t try to measure them individually (which ends up creating destructive competition anyway), but you’ll get lots of numbers that let you know what’s going on and when things are going to get done.  And that’ll have to do.”

This is where business and tech need to start from if they’re going to try to make Agile work for them.  They both need to start from a place where they each realize they’re not going to get everything they want.  In my experience, most of the time when Agile goes wrong, it’s because tech is on board with this compromise, but business didn’t get the memo.  Next week we’ll look in more detail about just what can go wrong when that happens.









Sunday, January 20, 2013

Guides: Willie Vadnais


[This is one post in a series about people who have had a great impact on my life.  You may wish to read the introduction to the series.]

I started my company back in 1992.  It wasn’t much more than just me for a while, but through the 90s I grew it, adding more and more employees.  Mostly I hired fellow coder geeks, but I also spent a fair amount of time trying to find someone to run the business side of things so I didn’t have to think about it, someone to handle the acquisition of new clients, the management of old ones, deal with the financial crap, etc.  Because all I really cared about was coding.

I had different amounts of success with this, but never did my company achieve any sort of greatness.  Sometime around 2004 business had slowed to such a trickle that I had to start looking for a full-time job for myself just to pay the bills.

Meanwhile, in 1995, in the exact same town I lived in, three friends started an ISP that would eventually turn into ThinkGeek.  And they actually did manage to achieve a sort of greatness—the chances are that you’ve heard of their company, but you’ve never heard of mine (trust me on that).  They did that because they had a core group that was actually good at acquiring customers.  They could have used some coding help, perhaps (though the original ThinkGeek code monkey was a demon of a workhorse and a great friend of mine to this day, he was only one man, and I’m sure he wished he had some help many times).

I’ve talked before about twists of fate that we think of as “coincidences,” and in fact the story of how I went to work at ThinkGeek is in that very post, so I shan’t repeat it here.  What interests me now, as I look back on this story, is how much our lives are shaped by the strange twists of fate that don’t happen.  For instance, the ThinkGeek founders and I were both working with Linux software in the same DC suburb.  The tech community there wasn’t all that huge.  How did we never meet?  Why is it that they, who had brilliant ideas and needed programmers, and me, who had brilliant programmers but needed ideas, never managed to connect?

“The ThinkGeek founders” consist of the three original partners, plus their original programmer.  I got to know all of these people pretty well over the course of the three years I worked there.  They’re all amazing, and amazingly talented, people.  In the music that ThinkGeek created, they were the core band: the rest of us were backup singers and studio musicians.  And, in the band that is ThinkGeek, the lead singer is Willie Vadnais.

Just as I was the one who founded my company, the one who, even though he was not its CEO, its President, or the chairman of its board of directors, was still the heart of it, the man behind its vision, the oracle of its Delphi ... so Willie was to ThinkGeek.  Not always in charge, but always the center.  The man with the plan.  If you wanted to know what ThinkGeek was, at its core, you talked to Willie.

There’s only one person I ever worked for who was more fun to work for than myself, and it was Willie.  I’m not saying he’s the best boss I ever had—hell, technically he was never my boss at all—but in terms of sheer joy in coming to work every day, nobody has ever beaten Willie.  I looked forward to going to work every day when I worked at ThinkGeek even moreso than when I worked for myself.  And he was a big part of that.

Willie is in some ways a walking oxymoron.  He’s a true salesman, and also a consummate geek.  Now, in my post on reality and perception, I discussed why these are generally opposite sorts of people.  They have diametrically opposed outlooks on life.  So it’s pretty rare to find both outlooks in the same person.  But Willie is that guy.  He can come up with the brilliant ideas, sell them to the people who need convincing, and still talk technical details with the people who need to implement them.  Honestly, he’s ruined salesmen for me forever: I’ll probably always compare any new ones I meet to him, and they won’t come out looking very good.

The folks who founded ThinkGeek sold it to a larger corporation many moons ago, before I ever came along.  But they all stayed on to help run the company, to help keep things going smoothly, to keep the company true to its roots.  Jon still wrote all the back-end code, and Jen still wrote all the front-end code; Scott still dealt with all the geeky, techy hardware that ThinkGeek sold.  And as for Willie, he still kept coming up with the ideas, finding the unique products, rethinking how the website should work, tossing out the witty slogans that ThinkGeek would put on the tee-shirts.  But, one by one, the founders left ThinkGeek, moving on in frustration or pushed out by corporate overlords who didn’t understand that the company couldn’t be the same without them.  Finally, only Willie was left, and, this past Monday, ThinkGeek said goodbye to him as well.

Now, I don’t have any special insight into the corporation that currently owns ThinkGeek.  I don’t have any insider information.  But I’ve seen this pattern in corporate dealings before.  It’s amazing how efficiently a corporate machine can dismantle a golden goose to produce goosesteaks.  ThinkGeek will go on, I’m sure.  There are still many good people who work there, and they will do their best to make sure the company lives up to its reputation.  But its heart is gone.  ThinkGeek without Willie is ... strange to me, a foreign beast that I’m unsure what to do with.  I’m not sure I can in good conscience continue to shop there.

I consider Willie a friend of mine.  He was wonderful with my children, he had me over to his house on many an occasion, and I’ve gotten roaring drunk with him several times.  He’s wise in some ways, and full of childlike wonder in others.  He knows what people want, what they like, what will please them and tickle their funnybones.  He’s one of the few people in the world who, if they came up to me today and said “I have an idea for a new business,” I would say “I’m in” without even needing to hear the rest of the pitch.  He’s inspired me sometimes, and frustrated me sometimes, and made me laugh a whole lot of times.  He challenged my beliefs about salemen.  My life is richer for having known him, and I hope I get a chance to work with him again someday.

Every now and again, I get a late-night IM from Willie, although it hasn’t happened in quite a while.  Usually, he’s trying to convince me of some insane premise that’s he’s come up with, often after imbibing a few intoxicants.  This might be a business premise, but just as often it’s something else entirely.  I am typically skeptical; he is typically persuasive.  Often I end up rolling my eyes at his ideas, virtually speaking.  Still, I sort of miss it.  Maybe now that he has more time on his hands, I’ll get another midnight message.  Maybe he’ll have another hare-brained scheme percolating in his brain.  If so, I’ll be honored that he chose to share it with me.

Sunday, January 13, 2013

Working Man's Lament


There is a bit of “grass is always greener” going on in today’s post, I’ll warn you.  Of course, for someone who believes in balance and paradox, this is perhaps not surprising.  In any given situation where you’re trying to decide “which one is better?”, the answer is almost always: both.  Everything in life has both advantages and disadvantages, so any given binary choice is going to have you weighing pros and cons.  If you’re lucky, it’s easy to see which side outweighs the other.  Generally, you’re not lucky.

For instance, I went to college in two different spurts, with a gap of about 3 years in between.  What I usually tell people by way of explanation of this is that I dropped out of college, because college sucked, and went to work in the real world.  Then I went back to college because the real world sucked even more.  But of course the truth is that both sucked.  And both were awesome.  Just differently, and in different ways, and at different times.  The first time I went to college, I wasn’t prepared to appreciate how cool college can be.  Having to hold down a real job certainly made me appreciate that a lot more.  On the other hand, the first time I had to hold down a real job, I definitely wasn’t prepared to appreciate the freedom in it, the satisfaction that comes with responsibility.  After 3 more years of college, I was much better prepared.

Now I’m going to back to full-time work after a six week sabbatical.  I’ll be honest: I’m having a bit of trouble adjusting.  I’ve been working full-time for a lot of years now—decades, in fact—and I never thought that I’d be interested in retirement.  I always figured I’d be that guy that worked so long he was retired forcibly.  Now, though ... now I think I see the attraction.

My working life has had its interruptions too.  I spent 3 years in between college and college (as I mention above) working on jobs from furnace cleaer up to C programmer.  Then, while I was in school (the second time), I went back to part-time work, but eventually fell in with some guys who made me a business partner.  Which worked for a while, until it didn’t.

After I graduated, I felt ready to take the step of starting my own business.  I wasn’t too keen on lots of aspects of it (I had seen first-hand the effects of the stress on my partners), but I was also ready to be in charge of my own business fate for a change.  I ran my own company for 14 years, with anywhere from zero to 15 employees (or subcontractors), most of whom were (naturally enough) other programmers, but also project managers, bookkeepers, graphics artists, sys admins, salesmen, and office handymen.  I met The Mother while running my own business.  I hired nearly every one of my friends at one point or other (including The Mother, who was our bookkeeper and office manager for many moons), or at least put them on the Board of Directors.  Our biggest sales year was three-quarters of a million dollars, which doesn’t seem like much to many of the business folks I know, but, for a company that never accepted a dime of venture capital, it was plenty impressive to us.

Then I went back to working for other folks.  My current job is the second I’ve had since those days.  And, right now, I won’t lie: I’m starting to miss the freedom I had when I ran my own shop.  Constantly working for someone else can sometimes make you feel like you’re working hard to make other people rich.  Plus it’s twice as frustrating when they won’t even listen to you on how to get rich.

But of course being the boss was no picnic either.  Feeling that responsibility for everyone’s livelihood is pretty scary.  There’s the simultaneous pressure to do things yourself to make sure they get done right, and the pressure to teach other people how to do things so there’s a backup, and the pressure to learn how to delegate simply to keep your sanity intact.  There’s never anyone to go to to ask what to do next: everyone comes to you and expects you to have that answer.  You work harder than everyone else, you put in longer hours, and you often pay yourself less (at least I did).  Moreover, you expect more from yourself than you do from everyone else, and everyone else returns the favor by expecting more from you too.  It can be very stressful, which impacts not only your mental health but your physical health as well.

And, then again, there are certainly a lot of upsides.  I don’t mind failing.  What I can’t stand is being forced to fail.  When you work for someone else, particularly in the world of publicly-owned corporations, you end up doing a lot of things you know are not going to work.  You tell people they’re not going to work.  You send emails and hold meetings and write reports explaining that they’re not going to work.  Then your boss makes you do them anyway.*  Then they don’t work.  And what satisfaction is it to say “I told you so” when the answer is “yep, you were right; now go clean up the mess.”  At least when you work for yourself, your mistakes are honest, your own, and you can do your damnedest to make sure you only ever make them once.  Not that you always succeed at that, of course.  But then, if you fail, you have only yourself to blame.  And I’ve always felt that that was cleaner, somehow.  I personally never got hung up blaming myself.  I give myself permission to make mistakes.  But when I have to blame someone else because there was nothing I could do about it, that feeling of helplessness makes me a little crazy.

So neither position—being the boss or being the worker bee—is perfect.  They both have their good days and bad days.  Perhaps one day I’ll go back to running my own business.  And perhaps, after that, I’ll go back to working for someone else again.  No reason I have to stick with only one or the other the rest of my life.  I suppose I’ll probably complain either way, some days.  But I also try to look at the bright side, whenever I can.  Right now, I’m working for a company owned by a company owned by another company.  I have five levels of bosses from three different companies, and that’s just counting the ones who are in the same building as I am.  There’s more floating around in other buildings, in other cities.  But, you know what?  They’re in charge.  All the responsibility and all the stress is on them.  And I’m happy enough with that.

For now.


* This is not to imply anything negative about my boss, who is an awesome guy and generally doesn’t do that sort of thing to me.  But sometimes these types of things just come down from above.

Sunday, October 7, 2012

Things We Lose in the Timestream


Well, as it turns out, I’m swamped with doing stuff this weekend, so there’s no blog post for you.  Not that you should care anyway, of course.

You know, it occurs to me that occasionally I come along and tell you I’m busy with stuff, but I never actually tell you what the stuff is.  In retrospect, this seems unfair.  You come along (despite repeated warnings to the contrary, even), expecting to see some blather you can kill some time with, and here I am telling you there’s nothing to be read and not even bothering to say why.  Well, fear not, gentle reader: today I shall regale you fully with tales of my goings-on.  And this shall, hopefully, convince you never to wonder again.

So, firstly: often people mention what they’re reading, or listening to, and all that sort of thing.  Right now I am currently working on book 7 of the Dresden Files, and determined to push all the way through to the end.  It’s just getting really good (it was good before, but now it’s really good, if you follow me).  Musically, I recently picked up a digital copy of Extractions by Dif Juz, which is one of the 4AD bands that I somehow missed all this time.  I knew Richie Thomas’ fine saxophone work from Victorialand, of course, but I’d never heard this album before, and it’s quite good.  You should give it a listen if you’re into dream or ambient or that sort of thing.  Visually, I just picked up my Blu-ray of The Avengers, which of course I had seen in the theater, but it was just as good the second time around.  That Joss Whedon really knows what he’s doing behind a camera; I hope he does more of the superhero movies.

Now, of course, all of that is not really keeping me from writing.  There must be other stuff going on around here ...

Well, I do still have a few hours to put in for $work.  I would tell you a bit about my work, but I’ve had to sign so many things at this point saying that I will not ever “disparage” the company that I feel a bit like Stephen Colbert talking about Islam: my company is a great and true company and Blessings and Peace be upon my corporate overlords.  Don’t point, even.  You’ve seen enough of that one.

So, tomorrow I have to do a presentation for my new co-workers (of which there are quite a few), plus I have a meeting about my current project, which I just started, and I’d really like to learn a bit more about it before I have to start explaining it to other people.  But mainly I want to prepare a bit more for the presentation.  I could just wing it, and I’d probably do fairly well, but the more prepared I am, the better I’ll do (most likely), and one does want to make a good impression on people that you’ve just hired.

Let’s see ... what else ... well, there are still some weekend chores left, despite the fact that I generally try to knock those out before Saturday night, or else I find I have no time to myself.  I’ve still got to go to the grocery store, and direct my older children to clean the den so that you can actually walk in there again.  (The youngest is excused from such things, although I’m sure she’d like the floor to be cleared as well, as right now there are a lot of things blocking her from getting to the catfood, which just pisses her off.  Nothing feels quite the same rolling around inside your mouth as a big ol’ handful of catfood.)

In hobby news, the things which are supposed to be my relaxation from other parts of my life occasionally have the power to provide their own sources of stress.  For instance, in my role as a CPAN author, right now I’m about three issues behind in taking care of some issues for the Method::Signatures module I work on, and one of them is for a guy who’s fairly well-known in the Perl world (and, even if you don’t have any idea what I’m talking about, the fact that the guy has his own Wikipedia page should give you a clue).  And, in my work to keep my favorite game going, we’ve been working hard to address a number of issues with one of our recent releases.

So, there’s lots to do, and (as always), little time to get it all done.  It seems that, the older I get, the less likely I am to have one big excuse for not doing what I should.  I mean, remember, back in college, when the reason you didn’t finish your essay for class was because of a party (or the resulting hangover), or one of your friends broke up with their boyfriend or girlfriend and you were up all night with them, or you were helping someone move?  But nowadays it’s never one big thing; it’s a million little things, that peck away at your time jot by jot, frittering away your ability to focus in dribs and drabs.  It’s death by a thousand cuts.  But such is the way of life.  The older you get, the more you take on, I suppose, and the more people you meet, the more that end up depending you for one thing or another, in large ways or in small.

Which is all a very roundabout way of saying to you, my oh so persistent blog connoisseur: no cookie for you!  Not this week, in any event.

Sunday, September 23, 2012

I'm too old for this shit ...


I believe in self-reflection and self-analysis.  (Of course, I also believe that such things are necessarily flawed, but perhaps that’s a topic for another blog post.)  I think it’s important to know what your faults are, what your limitations are.  Of course, I think that sometimes people want to identify their faults so they can correct them.  I have a slightly different approach:  If I can’t identify all my faults, I’m a blind moron, bumbling through life not even knowing the damage I’m doing.  Contrariwise, if I can identify all my faults, and if I could somehow correct them all, then I would be perfect.  I know that I cannot ever be perfect.  Therefore, either I’m never going to be able to see all my faults, or I’m going to be able to see them all but never fix them all.  I choose the latter.

That is, there are some faults that I have that I’ve just learned to live with.  They’re bad, sure, but they’re not so bad, and, if one has to have faults anyway (and, lacking perfection, one does), you may as well have some that aren’t so bad, right?  For instance, I’m too loud.  I have a naturally loud voice, and it carries, and the more excited I get about a topic, the louder I get.  Especially in an office environment, I’ve been asked many times throughout my life to keep it down.  Another problem I have is that I get pissed off at little things.  Not things that people do, so much: more like inanimate objects.  Like if I drop a cup and spill water all over the place, I am pissed at that cup.  This is moronic.  I know this.  But I still do it, and mostly I can live with that.

Now here’s the fault that I wanted to talk about today: I try to be too helpful.  Yeah, yeah, I know that sounds like one of those bullshit “flaws” that you dredge up during an interview.  (“Mr. Jones, what would you say is your biggest failing as an employee?”  “Well, sir, I’ve often been told that I just work too gosh-darned hard.”)  But note that I’m not claiming that I actually am too helpful, only that I try to be.  And, really, it isn’t correct to say that I try to be too helpful ... the truth is that I try too hard to be helpful, which is subtly different.

If you ask me a question, I want to give you the right answer.  If I can’t give you an answer, I feel bad.  Like, unreasonably bad.  Much worse than I would if I were to screw you out of a parking spot—worse even than if I were to screw you out of a job (unless perhaps I knew you personally).  That’s messed up.  But that’s the way I am.  If I give you an answer and it later turns out I was wrong, that’s even worse: then I feel hideously awful.  I have friends that think I have a burning need to be right.  I don’t think that’s true.  My father, for instance, has a burning need to be right.  He doesn’t ever admit that he was wrong.  I, on the other hand, have absolutely no problem admitting I was wrong: I just feel really crappy about it, if I think that someone was misled somehow (and that’s nearly always true, unless you were talking to yourself or something).  It’s sort of like a savior complex, but on a smaller scale.  I don’t feel the need to save people, only help them out a bit.

And, at first blush, this doesn’t seem so bad.  So I go out of my way to help people; what’s wrong with that?  Someone with a savior complex often has the problem of taking care of others so much that they forget to take care of themselves, but I don’t have that issue.  So where are the downsides, and how is this a fault?  Well, there are two main areas that I’ve identified, one smaller, and one larger.

The smaller issue is that I’m so constantly afraid of giving people the wrong information that I often over-qualify all my statements.  Now, I’ve talked before about my fear of absolute statements.  So, in one sense, this is just another facet of that.  But it goes further, I think: if I qualify everything I say to a large enough extent, I can never be giving you misleading information, right?  Many of my friends think I’m wishy-washy.  I don’t think that about myself, but I certainly understand why they do, and this is at the heart of it.

But here’s the bigger problem.  When I think someone is wrong, I have a desperate desire to “help” them by correcting their misconceptions.  Which can be okay, sometimes, if the person is receptive to that sort of thing, but often people aren’t.  And that just makes me try harder.  Which is code for “I’m a jerk about it.”  And, of course, it’s one thing if it’s a fact we’re discussing.  If I can tell you that you’re wrong, and we can look it up on Wikipedia or somesuch, then the question will be settled.  You may not appreciate my correcting you (especially if I did it in public), but at least there’s no more arguing about it.

But suppose it’s more of a matter of opinion.  Now, I’m okay if you have your own opinion about something.  If you have an intelligent, informed opinion, and I just happen to disagree with you, then fine.  I don’t have a need to “correct” you then, because you’re not really wrong.  But, let’s face it: most poeple’s opinions are not intelligent, informed opinions, and that includes mine.  I try (really!) to have the good grace to back down when it’s obvious that you know more about something than I do, but I find that I’m in a minority there, and sometimes I can’t resist either.

Here’s the situation that brought this to the forefront of my mind and inspired this post:  Just two days ago, I was in a meeting with several other technogeeks that I work with.  There were five of us, and were talking about architectural decisions.  For some reason, the topic of TDD came up.  Now, I’ve actually talked about this exact situation before, and I even specifically mentioned TDD in that post.  I also mentioned my good friend and co-worker, and he happened to be in that meeting.  Perhaps I didn’t mention it, but he’s also my boss (everyone in the room’s boss, for that matter).  We don’t usually treat him any differently for all that, but it’s a fact that should not be ignored.

So, suddenly we find ourselves debating the merits of TDD (again).  What those merits are is not important to the story.  Suffice it to say that my friend, and one other co-worker, took the con side, and the remaining three of us took the pro side.  And the discussion got heated.  I found myself geting more and more frustrated as I tried to “help” them understand why TDD was so cool.

On the one hand, it made perfect sense that it should upset me so much.  Neither of the fellows on the con side had ever actually tried TDD.  And it was obvious from the statements they made that they didn’t have a very thorough understanding of it.  Them saying it was a bad technique was basically the same as my six-year-old claiming that he’s sure he doesn’t like a food despite the fact he’s never tried it.  It’s just silly, and therefore somewhat maddening.

But, on the other hand, I have to be careful, because I know how I get, because of my fault.  Here are people making a mistake: they’re espousing an opinion based on incomplete information and zero experience.  And, trust me: even if your opinion happens to be accidentally right, that’s still a mistake.  So, I see people making a mistake and I want to help them.  And I know that’s going to blind me to common sense.  (Well, I know it now ... seeing that at the time was pretty much a lost cause.)

And, here’s the thing: the other two people on the pro side didn’t get into the argument.  Why not?  Is it because they were scared to get into it with the guy who’s technically their boss?  No, not at all: we’ve all had technical discussions where we’ve been on the other side from our boss, and we don’t back down when we think it’s important.  So maybe they didn’t think it was important, then?  Maybe.  But I think I see a better explanation.

When your own kid tells you he’s not eating the fish because he doesn’t like it, even though you know perfectly well he’s never tried it before, you can get into it with him.  As the parent, it’s your job to teach your children to try new things, not to be close-minded.  If you don’t, who will?  Because, when it’s someone else’s kid telling you he’s not eating the fish, you just nod and go “okay, sure, kid, whatever you say.”  Because, and here’s the crux of the matter: why the hell do you care?

These other two guys are both younger than me, but they’re apparently much smarter.  The fact that our two colleagues are radically misinformed about TDD and think it’s bad even though they don’t understand it isn’t hurting them one whit.  It’s not stopping them from using TDD: the boss has said he doesn’t believe in it, but he certainly hasn’t banned it or anything.  In fact, he’s been supportive of other people using it.  So why bother to get into it?  Let the unbelievers unbelieve, if that’s their thing.

At the end of the day, who really gives a fuck?

Apparently I do.  Apparently I have this burning desire to convert all the non-believers and help them see the light.  And here’s where we fetch up against today’s blog post title: I just don’t have energy for that shit any more.  I’m looking at myself doing it and thinking, “why oh why am I even bothering?”  It’s not like these guys are thanking me for my “help.”  No, they’re just irked at my stubborn insistence.  And who can blame them?  ‘Cause, as I mentioned above, the longer this goes on, the more of a jerk I am about it.  So, here I am, pissing off people that I care about, over something that really doesn’t make that much difference in my life, just so I can say to myself afterwards that I corrected a misperception.  Seriously: what the hell am I doing?

I really am too old for this shit.  I need to learn to let go.  Today, when I logged into my work computer, it presented a pithy saying to me, as it always does.  I mentioned previously that I’ve customized these quotes, so mostly they’re familiar, but every once in a while it surprises me and hits with something I’ve forgotten, or something that’s just eerily appropriate.  Today it was both.

The aim of an argument or discussion should be progress, not victory.

    — Joseph Joubert


Yeah, good advice.  I think I’d forgotten it, somehow.  I need to try to remember that, next time I have this burning desire to “fix” somebody else’s “wrong” notions.  I’m going about it all wrong, I think.  And my family has a history of high blood pressure, so I need to chill the fuck out.

Ommmmmmmm ...









Sunday, August 26, 2012

Employees First


I had occasion this week to discuss my software business, which I started in 1992 and ran for 12 years.  I never made a lot of money with it, but then that was never the goal.  Unlike many people who start technology companies, I never had an “exit strategy”—the concept of building a business just to sell it to someone else was utterly foreign to me.  The only point to my business was to provide myself a living while being able to do things my own way, and, for that purpose, it was remarkably successful, for a while.  It wasn’t just for me, though; I employed many of my friends, and many other people who later became my friends.

In the context of a discussion earlier this week, I outlined my primary business philosophy, and, reflecting on it now, it occurs to me that it was pretty damned radical, for the time.  And still is, to some extent.  So I thought I might expand on it a bit in the hopes that someone else will pick it up and make it their own.  We could use more businesses like mine was.

Now, full disclosure: my business was never hugely successful, and for the last four years or so, it wasn’t very successful at all.  We made money every year, though ... considering I started the business with around three thousand dollars and never took a dime of venture capital or bank loans, we had to make money every year, or else there was no business.  But I’ll freely admit that there were several years where we made close to nothing, and eventually we called it quits.  It is my opinion that what I’m going to talk about below has nothing to do with the failure of my business—I posit that it was partially because of macroeconomic factors, and partially because of my continued failure to locate a partner who could handle the sales and marketing side.  But that’s just my opinion, and you’re certainly free to draw other conclusions.

Here’s my philosophy, stated simply: every day, in every business decision I made, I put my employees first.  Now, you may very well say, this is foolish.  You should always put your customers first.  But I think that’s the wrong approach, and I’m going to tell you why.

Over the years, both from the outside and from the inside, I’ve observed many, many companies who put their customers first and treated their employees like shit.  This approach is always doomed to failure, for one simple reason: the work that your company delivers, the work the customers receive and pay for, is performed by those employees.  Unhappy employees produce crappy work.  This is unavoidable.  There just is no way to get good work out of people who don’t give a crap if they’re there or not or, even worse, who actively want to be somewhere else.  The entire field of “management” exists to try to solve this problem.

A moderately well-known quote (usually attributed to Robert Heller) states: “The first myth of management is that it exists.  The second myth of management is that success equals skill.”  Like any quote, its exact meaning is open to interpretation, but I’ve always interpreted it to mean that management is mostly imaginary, and when it does work, it works mostly by accident.  And let me tell you why: because you wouldn’t need to manage employees if you weren’t treating them like crap, or at best mostly ignoring them.  Study after study shows that employee engagement boosts productivity, increases efficiency, and improves the bottom line, but, in your typical company, little more than lip service is paid to these concepts.  True, there are some companies who are starting to realize the potential here ... Zappos has become somewhat well-known for it, and to a lesser extent Google has made some waves in this area.  There are others.  But these are the exceptions.

So here’s a large body of research telling us that employees do better jobs and make their employers more money if they’re happy, and yet most employers don’t bother trying to make their employees happy.  Most companies put their customers first and their employees a distant second ... if the employees are lucky.  Now, many people would say, aren’t the customers supposed to come first?

But, here’s the thing.  Your customers really only care about one thing.  They don’t care about fancy lunches or swag with your corporate logo on it or the fact that you remember the names of their spouses and all their children’s birthdays.  Oh, sure: sometimes the people who work for your customers care about those things.  And sometimes you can get pretty far by using such things to fake it.  But, in the end, the one thing that your customers really care about is: results.  Results trumps everything else.

Your customers want excellent work done for reasonable rates.  And here’s what I discovered when I ran my own company: if you make your employees happy—not just a little happy, but deliriously, ecstatically happy, or as close as you can damn well come—they will do excellent work, and they will do it for reasonable pay.  If they get reasonable pay, I can charge reasonable rates.  Now I have excellent work for reasonable rates, and that’s called outstanding value.  If I put my employees first, I can make my customers happy without even trying.  If I put my customers first, my employees are not as happy, and they won’t do their best work for reasonable pay, and I can’t make my customers happy.  Maybe I can fake it for a little while, but I can’t deliver in the long term.

So I tried every day—every single day—to put my employees first.  And my customers being happy mostly took care of itself.  As it happens, I learned a lot about how to keep the people who worked for my customers happy.  I learned about managing expectations, and I learned about communication, and I learned about honesty and forthrightness and avoiding playing the blame game.  I learned when to give in to my customers even when they were wrong, and when to put my foot down and say “no” even when they were right.  There’s a lot to be learned about those things.  But, you know what?  That stuff still isn’t the most important part.  Because the weird thing was, I wasn’t learning those types of things as a businessman or company founder.  I was learning those things as an employee, and my employees were learning those things too.  Because I, like them, valued my employment so much that I wanted to do everything in my power to keep it going.  And keeping the customers happy was one way—the most important way—that I did that.

I think I was actually very successful at making my employees happy.  Several of them told me that it was the best job they’d ever had.  Very few of them ever quit; mostly it was a matter of us no longer having work for them.  And most of those ended up coming back to work for us later; I had one employee who waited for my call for nearly a year and a half without a job.  And he eventually got that call, and he came back to work for us.

I paid my employees well, but not outlandishly.  They all worked hourly, and they were paid for every hour they worked.  They all knew what everyone in the company made (myself included), and everyone was paid a rate based on their proficiency at their job.  In most companies I’ve worked at, the programmers have a lot of competition amongst themselves: there’s always a constant struggle to prove who is the alpha coder.  But, at my company, you could just look at your hourly rate and compare it to everyone else’s and you knew where you stood.  If you thought you deserved more, you had to work hard and prove it.  And there was never any silliness about raises not being handed out more than once a year, or not allowed to exceed a certain percentage.  I gave raises whenever you showed me you were better than your rate said you were, and the raise was for as much as you deserved.  I gave someone a 50% raise once.  I gave someone a raise once before he ever got his first paycheck, and I made it retroactive to his first day, because he demonstrated that he was better than I thought he was when I hired him.  Also, every employee got a commission of some sort, above and beyond their hourly pay.

Every one of my employees earned stock as well.  Not stock options, but actual stock.  The company was employee-owned.  I maintained a majority interest, but I kept giving more and more of my stock away every year, and, when there were stockholders’ votes, I proxied many of my votes to the other employees so that their vote was not hollow.  I constantly refused both the CEO position and the chairmanship of the board of directors so that other people could take on those jobs.  I never had any desire to be in control.  I only wanted to make this the best place to work in the whole world.  I know I was not a perfect boss.  I know I pissed people off sometimes, and frustrated them sometimes, and made them crazy sometimes.  But, in the end, they were who I cared about, and they knew that.  They knew they weren’t going to get a better deal anywhere else.  They worked their asses off for our customers, and they pushed themselves to excel, and they did things they wouldn’t have dreamed of doing for faceless corporate overlords who wouldn’t bother learning their names.

If I ever start another company (and it’s a giant pain in the ass, running your own company, so I don’t know how likely that is), there are many things I will do differently.  This is not one of them.  I will continue to put my employees first, because there just isn’t any better way to get the best out of them, and that means there isn’t any better way to deliver value to my customers.  Would my customers be upset that they don’t come first?  They might be ... except for those pesky results.  That excellent work at reasonable rates: it can’t get any better.  And, when you’re getting the best results you could possibly be getting, isn’t that all you really want?

Sunday, June 10, 2012

A Wave in Passing


Not going to post anything much today.  I’ve been working on the Heroscape project I first mentioned some months ago.  You may recall back then that I mentioned we were working on “Wave 14” ... well, now we have the first of four weeks’ release of Wave 15.  I’ve got 3 more weeks of that to do, but the first one is always the bitchy one.  Should be much smoother sailing from here on out.

In other news, my company was sold ... if you had noticed (which it is barely possible to have done, if you’ve been reading these blogs very carefully, although, why would you?) that I was technically an eBay employee, you can expunge that bit of triviata from your brain, ’cause I’m not any more.  I would tell you about all the hideous papework I had to sign, and all the legalese I had to agree to, but there’s actually a clause in there that says that I can’t talk about it.  In fact, merely telling you that I can’t tell you probably puts me in some state of breach, technically speaking ... whoa, I think my head just exploded.

So, getting used to new corporate overlords, working on hobby collaboration projects, still doing some open source software here and there, readjusting to life with a newborn ... busy times.  Far too busy to write something that I’m just going to tell you not to read anyway.  Perhaps next week will be a little easier to deal with.  Let us all cross our collective fingers.

Sunday, February 19, 2012

Amor Fati


I seldom end up where I wanted to go, but almost always end up where I need to be.
        — Douglas Adams

Some people believe in destiny.  The idea that the threads of our lives are woven together in a tangled skein is an attractive one, and reappears throughout history: from the Moirai of the Greeks and the Norns of the Vikings to the Wheel of Time in Robert Jordan’s series of the same name, which gives us the quote “The Wheel weaves as the Wheel wills, and we are only the thread of the Pattern.”  The reason this concept is so tempting is that it accords with our experience of the world.  If you stop and think back on your life, you’ll see a hundred different coincidences, a hundred different times where, if one thing had gone only slightly differently, your whole life would be in a different course.  In fact, looking back on one’s life at all the little things that had to go just so to lead you to where you are now, it’s enough to make anyone ponder whether there might be something to this concept: call it fate, destiny, fortune, karma, kismet, call it random chance or divine providence, say que sera, sera, or say the Lord works in mysterious ways his wonders to perform, or say the universe puts us in the places we need to be, but any way you slice it, it’s hard to pretend there’s nothing behind the curtain.

For instance, say I had not dropped out of college: then I wouldn’t have gotten my first job as a computer programmer.  I might have become one later in life, maybe, but it wouldn’t have been the same.  Say I had not accepted the offer to leave that job to form a two-man company with one of my former co-workers, which only lasted a few months ... well, then, I might never have ended up going back to school to finish up my degree.  I know for a fact that if I had not accepted an invitation from a friend of mine attending college in the DC area to come spend a week with him that I never would have moved to our nation’s capital, where I spent 18 years of my life.  I know this because I had already applied (and been accepted) to another college; it just so happened that I had missed the deadline for fall admission at the college of my choice and I was going to have to wait until the following spring.  But this school my friend was attending still had spots open—not for freshmen, but, then, I was a transfer—and a surprisingly decent English program, and so it became my alma mater.

And that’s just the beginning.

Somewhere out there in the wide world is a woman whose name I can’t remember, born in Hawaii, with the dark skin and exotic beauty to prove it.  She went to high school in Los Angeles, and her sister (or her cousin, or her best friend—I forget) went out with one of the guys from Jane’s Addiction.  Somehow she ended up moving across the entire country, and wound up in Fairfax, in Northern Virginia, just outside DC, working at a cheesy little college pub.  And, if she had not come out of the back room that day, and had she not been so pretty, and had she not smiled just so, and had she not looked at me and my friend and said “two applications, then?” ... if all that confluence of chance had not come together at that exact moment in my life, when I was just giving my friend a ride around to various restaurants so he could find a job as a cook, since it just so happened that he didn’t have a car, and just after an exhausting two or three weeks wherein I learned that my experience was enough to get me any number of programming jobs, but there was apparently no such thing as a part-time programming job (at least not in that place at that time) ... if all that chaos theory had not converged on that exact moment in time, would have I cut off my friend’s “no, just one” with a resigned “what the hell, sure, two applications”?  Probably not.  And if I had never taken that job, I would have never engaged in the childish electronic prank that introduced me to the computer salesman who became my first business partner, which eventually led to my starting my first company, which eventually got me a consulting job at large corporation, where I eventually met the woman who is my partner to this day, and who is the mother of my children, who are essentially the entire point of my existence.

That’s a lot of “coincidences.”

When business for my company dried up, and my meager savings was running out, another friend of mine just happened to mention a job that he had interviewed for but had decided not to take, but mentioned I might like it there.  Turns out I did, and I spent three and half years there, meeting some folks who are still some of my favorite people of all time, and having a really great job where I got to learn a lot of stuff, and teach a few things, and have a great deal of freedom, which was important, because I was coming off of working for myself for 13 years, and I’d utterly lost the ability to wake up early (not that I’d ever really had it, for the most part), or wear shoes at work, and I had 13 years worth of ponytail between my shoulder blades.

The story of how I left that job and came to the great state of California is yet another of those sets of bizarre, interlocking coincidences.  Last week I told you what I thought of corporate managers telling you you must take PTO when you’re slightly sick and you want to work from home.  As Bill Cosby once said, I told you that story so I could tell you this one.  I’m not going use any names here: if you know me, you most likely know the person I’m talking about, and if you don’t know me, you most likely wouldn’t recognize the name anyway.

When I first started at this job I’m talking about, the first job after running my own company for 13 years, I had a boss who lived in Boston and showed up for a couple of days every other week.  Despite not being around very often, this person was one of the best bosses I’ve ever had.  I was given very clear directions, never micromanaged, trusted, encouraged ... the only criticism I ever got from this boss was to step up my game, to take more responsibility, to stop worrying about stepping on anyone’s toes and take the lead on things.  This company was a subsidiary of a larger, public corporation, but our boss kept us insulated from any politics and let us do our own thing.  There was only one layer between our boss and the corporate CEO, and that VP and our boss seemed to get along just fine.

Then the synchronicity dominoes started to fall.  The VP left, and was replaced by a real asshole of a human being, one of those corporate jackasses who believes that being a jerk is a substitute for leadership.  In less than a year, the replacement was gone as well, apparently unliked by everyone, including the CEO, but it was too late: my boss had also submitted a resignation, and I was destined to receive a new manager, who would end up being one of the worst bosses I’ve ever had.  And I once worked for a twitchy Vietnam vet with a bad coke habit.

This new boss was a micromanager, never trusted, didn’t understand how to encourage and pushed bullishly instead, had no respect for the culture of the company, and basically ticked off every mistake that a corporate middle manager can possibly make.  It was like this person had a manual to go by:  Sow distrust and dissension among employees? Check.  Freak out and yell at people in front of co-workers? Check.  React to problems by increasing the number of useless meetings? Check.  I swear, somewhere out there is a book that tells these people exactly how to act, because the number of them who all do the same stupid things over and over again can’t be explained any other way.

It was Memorial Day weekend of 2007.  I was feeling a bit under the weather, but there was a big project going on at work that I knew we’d all regret if I fell behind on.  This new boss wasn’t my favorite person, but I still loved the company, and I wanted to do my best to make the (completely artificial) deadline.  That Friday, I sent my email saying I wasn’t feeling well, but I was going to soldier on.  Then I got to coding.  When I checked again, on the holiday itself, I discovered a snarky email from my boss, advising me that if I was sick, I should take PTO and not work from home.

I promptly replied that I was deeply sorry that I had attempted to make progress on our big project, and I assured my boss that it wouldn’t happen again.

I then went to check my spam folder, because that’s where all the recruiter emails invariably end up.

If you’re a technogeek like me, you know that once that very first recruiter finds you, there will follow a never-ending stream of offers for jobs in your specialty, jobs not in your specialty, jobs nowhere near the vicinity of your specialty, and non-specific vague pretensions of maybe possibly having a job for you one day so they’d just like to stay in touch.  Mostly you just ignore them ... until you get ticked off with your current work.  Then you realize that you’re sitting on a gold mine, tucked away in your spam folder.

I had always lived on the East Coast: 22 years in Tidewater, on the VA-NC border; 1 year in Columbia, SC; and the aforementioned 13 years in the greater DC metro area (partly in Northern VA and partly in Southern MD).  But if anyone asked me where I really wanted to live, I always said California.  I later expanded to the West Coast in general: Oregon is lovely (although, as it turned out, practically impossible to find a tech job in), and Washington is not a bad choice either (lots of tech jobs, but perhaps a bit colder than I’d ideally like).  But really it was California that had caught my interest; two trips to Borland out in Scott’s Valley and a couple of visits to San Francisco to visit an architect-turned-tech-entrepreneur friend of mine had cemented Cali—and the San Fran-San Jose corridor in particular—as the place to be.  So when I went looking for recruiter spam, I figured I might as well find something that said “California” on it.

There were only 3 or 4 recruiter emails, as it turned out ... a light dusting compared to what I normally had.  One of them said “Santa Monica, CA.”

Now, I didn’t know where Santa Monica was.  And I was too much in a huff to look it up.  But I knew where Santa Clara was, and I knew where Santa Cruz was, and I figured ... how much farther away could it be?

Pretty far, as it turns out.  Santa Monica is in Los Angeles county, and is (along with Venice Beach and Marina del Rey) one of the beach cities of LA.  As it turns out, my partner used to live in (or just outside) Santa Monica.  All that I was to find out later, though.

It was Monday (Memorial Day) that I sent a random email back to a random recruiter that I plucked out of a spam folder; on Tuesday, I got a garbled message from someone with an unintelligible accent—on a hunch, I called back that same recruiter and it turned out to be him; on Wednesday, I was talking to the recruiter’s boss, who was telling me about a company which had very high standards and was willing to pay full relocation; on Thursday, I had a phone interview with the folks who would eventually end up being my new bosses—this was conducted on my cell phone, while I was driving through the middle of downtown DC, trying to avoid the hideous traffic on the Wilson Bridge; on Friday, I was talking to someone at eBay corporate about a plane ticket; the following Monday night I got on a plane; Tuesday, I had what was possibly the best job interview of my career (probably second only to the one at the corporation where I met my partner), and they made me an offer on the spot; on Wednesday, I received a signed offer letter in my email; and on Thursday, I handed my boss a brief resgination letter.  So, to wrap up the discussion from last week, that’s under two weeks from the time my corporate middle-manager boss pissed me off over something stupidly trivial until the time I had a better job for about 25% more money (although, admittedly, part of that was simply to cover the higher cost of living in LA), and my old company lost 3 and half years’ experience and half their tech department.  Something for you corporate folks to chew on.

But the real lesson is, as far as I’m concerned (and as far as my family is concerned), when something is meant to happen, it will happen, and often with blinding speed.  I could tell you the story of our new house, for instance, which includes passing on it when it was overpriced, it disappearing from the market and then, strangely, reappearing for a cheaper price, and even a prophetic dream ... but I’ve babbled on for quite a while already.  No need to beat a dead horse, I think.

I’ve long felt that whatever force runs the universe, be it divine, karmic, quantum, or ontological, be it moral, predestined, anthropomorphic, cyclical, or merely mechanical, has been quietly and efficiently doing His/Her/Its job for me, or on me, putting me where I am today and seemingly with the inexorable goal of geting me to where I will be tomorrow.  As you can see, I’m an epistemological conservative, but still I can’t help but believe: all that effort that whoever/whatever puts into seeing me to my assigned place ... that’s a lot of pointless expended energy, if there really is no purpose behind it.

Something to think about, anyway.

Sunday, February 12, 2012

Taking a Sick Day


I’ve spoken before of my distaste for American corporate culture, and I’ve no doubt I will again.  Corporations have many unfortunate practices, the vast majority of which are just very creative ways to shoot themselves in the foot.  It always amuses me to hear free-market zealots explain how corporations always act in their own self interest ... I could spend hours telling you stories of companies doing stupid things that cost them vast quantities of money, just from my personal experience.  Sometimes this happens because, while an idealized corporate entity might always do what’s best for itself, a corporation in the real world is run by people, and people do silly things.  But often it just happens because of tradition, because of momentum, because it’s “common knowledge” that this is the way things are done and nobody bothers to question it or double check to see if it’s working or not.

Let’s talk about one such policy and why it’s dumb.  This particular one is close to my heart, because it played a very important role in my life (although that’s a story for another blog post).  I’m not sure what book on corporate management is hustling this hoax, but it must be a common one since I keep running into it.  Let’s say your company has no problem with you working from home under normal circumstances.  But what happens if you wake up feeling a little under the weather and decide it makes better sense to you to stay home and get some stuff done rather than go to work and spew your germs around?

Your manager has a fit, that’s what.

For some reason, most corporate middle managers seem to think that you must take PTO when you’re sick, even though they have no problem with you working from home at any other time.  I’ve yet to have anyone explain this to me in a way that actually makes any sense.  Generally it’s something about how you need to get your rest and so you should take the PTO.

Let’s examine all the reasons why that is utterly moronic.

In the first place, we corporate workers don’t want to work from home if we’re really sick.  If you wake up with a really bad flu or somesuch, you want to lay in bed and moan all day, in those rare intervals when you’re actually conscious.  But of course that’s not every day when you’re sick.  In fact, that isn’t even the majority of days when you’re sick.  Most days when you’re sick you don’t feel well enough to suffer through that vicious commute, you don’t want to stray too far from your medicine and your familiar bathroom facilities, and you figure it’s safer to be at home just in case you suddenly get worse, but, all in all, you’re still plenty alert enough to do most corporate work, which (let’s face it) doesn’t require a whole lot of brainpower anyway.  What am I gonna do at home all day?  Watch daytime TV?  Bleaaaghh.  I could be reading a nice book, perhaps, or playing mindless video games ... or I could be getting stuff accomplished for your company.  Which one really makes the most sense, from the point of view of the always self-interested corporation?

This, of course, exposes the real reason that corporate managers don’t want you working from home while you’re sick.  It’s because they think you’re going to do a half-assed job.  Basically, they’re telling you that you can’t be trusted to know when you’re alert enough to do a good job.  This is stupid for a lot of reasons.  First of all, if you really can’t trust the person, you should just fire them.  But obviously that’s not true: you trust them enough to let them work from home in the first place.  So now you’re saying that maybe they can do okay when they’re out of your sight sometimes, but they’re not really bright enough to know when they’re too sick to work.  And the problem with treating your employees like children is that it causes them to act like children.  If you deal with people with a lack of respect, giving them the message that they’re not mature enough, they will inevitably start doing petty things to live up to your expectations.  Enforce ridiculous rules about office supplies and they’ll start stealing paper clips; institute draconian time-off policies and they’ll start calling in sick to go out drinking with their friends; treat them like you expect they can’t keep track of their own time and they’ll start miscounting hours and being more “flexible” about what constitutes work time.  If you want people to act like adults, treat them like adults.  This works for your children, too, in case you didn’t know that already.  (And, if you did, why did you think it wouldn’t work for your grown-up employees?)

But perhaps the biggest problem with this silly policy is the dilemma it puts the employee in.  ‘Cause here’s my thinking on the matter:  If you tell me that I can’t work from home if I’m sick, I have two choices.  One, I could take the PTO and stay home and not work.  Or I could say, screw it, and just come in anyway.  I mean, I may not want to deal with the commute, and it might be more convenient for me to be near my own toilet, but when the alternative is to take PTO (which, due to other silly corporate policies, is a very precious resource), I might decide to forego the convenience and just bring my germ-laden ass in to the office.  After all, I’m not that sick (if I were, the question wouldn’t have come up at all).  And it’s no skin off my nose if I get a bunch of your other employees sick and they have to take PTO and all their work starts falling behind.  No, the only pocketbook that impacts is the company’s.

So look at what this policy is costing you.  It costs you forward progress on potentially important projects.  It costs you morale as employees are insulted by your lack of trust.  And it costs you countless lost work hours as you actively encourage your workers to spread their germs throughout the office and create a domino effect.  And what do you have to put on the other side of that corporate balance sheet?  The possibility that you saved a half-day’s time due to someone not doing a full day’s work?  Are you really coming out ahead?

What about the possibility that your silly policy inspires someone to just quit and go find another job?  You may say to yourself that the chances are good that their next corporation will have the same policy, so they won’t quit over something like that, but a) you don’t know that for sure, and b) people often aren’t that rational.  Don’t tell yourself it can’t happen.  I’m living proof that it can.

Sunday, December 11, 2011

Drag Reduction

Ever so long ago, I explained my opinion of blogs.  At the risk of pretentiousness (not that it would be the first time), I’ll quote myself:


I mean, realistically, what are the chances that you’re actually going to miss that one-in-a-million blog posting anyway?  As soon as it happens, all of your friends with too much time on their hands are going to send you a link to it anyway.


Prophecy, that was.  Here’s that one-in-a-million post now, and, sure enough, one of my friends with too much time on his hands sent it to me.  Well, to be fair, he sent me a link to another blog post, which wasn’t quite as interesting (although it had its high points).  But primarily that post was notable for providing a link to this post: Thrust, Drag and the 10x Effect.

Now, I encourage you to read that full article, especially if you are, like me, a programmer (or, really, any job which requires sustained creativity).  But, in case you decide not to, I’ll give you a brief summary:

We all have different tasks that we do as part of work, or even as part of life.  Some of these tasks are productive, get-shit-done sort of tasks.  If you are a working programmer, that means essentially coding new programs.  If you are an architect, it means drawing up blueprints, I suppose; if we’re talking about home improvement projects you do on the weekend, it likely means interior decorating, landscaping design, creative carpentry, etc.  But many of the tasks we have to do are just administrative, have-to-do-it-whether-we-like-it-or-not tasks.  For programmers, that’s answering emails, going to meetings, filling out corporate forms and surveys and annual goals for career development, etc ad infinitum.  I’m sure architects have similar jobs.  For our putative home decorating weekend warrior, it’s fixing the toilet, weeding the garden, and traipsing through Home Depot looking for the right size screws.  The article refers to the first type of tasks as “thrust tasks” and the second type as “drag tasks.”

Thrust tasks tend to be long tasks (although interesting), and drag tasks tend to be quick (although often mind-numbingly boring).  Because of that, our natural job queue prioritization wants us to do the quick tasks first.  The quick ones can be knocked out more easily, giving a greater sense of accomplishment—more things checked off your todo list.  We also have a natural desire to get the boring stuff out of the way so we can concentrate on the good stuff.

But it turns out there’s a problem with this approach: the drag tasks eat up all our time and the thrust tasks are always relegated to the back of the queue.  Either they never get done at all, or they get done in dribs and drabs, with the leftover time after all the drag tasks are completed.

And the long/short dichotomy isn’t the only thing that distinguishes thrust tasks and drag tasks.  It turns out that you can get better—more efficient, more productive—at drag tasks ... but only up to a point.  Let’s face it: answering your email or weeding your garden is repetitive, and yet each email or weed is a little bit different.  Just different enough that you’re never going to but so good at it.  While the thrust tasks are the things you can not only get better at, but they actually deepen your experience and improve your overall performance in your chosen field.

More importantly, the longer you spend on your thrust tasks, the more productive you become.  And not just in the linear, spend-twice-as-long, get-twice-as-much-done sense.  The author suggests that spending twice as long produces 4 times the results.  This is of course unproven (and probably unproveable), but every programmer knows that long, uninterrupted stretches spent on coding tasks do indeed return results far beyond the simple accumulation of extra time spent.  You start to build a rhythm, and, when you really hit your stride, your productivity is blinding.  And that in turn means that when you only attack your thrust tasks a little bit at a time, in the leftover slots after your drag tasks are done, you’re achieving your lowest possible efficiency.

So that’s the “thrust” and the “drag” from the title of the blog post; what’s this about “10x”?  Well, the article refers to a popular concept in software development (which is supported by many studies): a good programmer is an order of magnitude (i.e. ten times) more productive than a bad programmer.  In fact, some people say that a good programmer is 10x more productive than an average programmer, who is in turn 10x more productive than the bad programmer.  Less academic support for that, but it’s one of those things that many of in the software biz feel to be true—there’s a certain amount of “truthiness” there, as Stephen Colbert would say.

Of course, that would mean that if you’re currently an average programmer, and you want to be a good programmer, you’ve got to improve your productivity tenfold.  That’s a tall order.  How can you go about doing it?  Take a page out of physics: increase your thrust, and reduce your drag.  Arrange your schedule to allow for significant chunks of time for your thrust tasks, even if that means putting off your drag tasks occasionally.

So that’s what the article says in general.  What did I get out of it for myself, in particular?

Well, a couple of things.  First of all, it identfied and delineated for me a problem that I’ve had off and on for years, and am actually undergoing currently in my present job.  When I move from one big task to another (thrust tasks, we’re talking about), it takes me a while—sometimes months—to “get into” the new project.  At the beginning of the endeavor, I generally fill up my time with drag tasks, leaving little time left over for concentrated, extended effort on the actual project work.  Gradually, either my interest peaks or my survival instinct kicks in if the project starts to fall behind schedule, and I dive deep into the work—all the drag tasks just fall by the wayside, I ignore my emails, skip meetings, drive my bosses crazy by procrastinating endlessly on paperwork, but I don’t care, because the work has siezed me by the throat, and it’s all I can think about, and I stay up late working until I can’t keep my eyes open any more, and then I eventually complete the job in a final exhausting flurry of activity, and then I start doing nothing but all those drag tasks I was avoiding all that time, and the whole cycle starts all over again.  I see now what my problem is.  I’m not giving my thrust tasks enough time and attention to reach critical mass fast enough, so I end up with too little work up front and too much work on the back end.  Instead of trying to do all my outstanding drag tasks every day, I’d be far better off saving them all up for certain days: allot one or two days a week to be nothing but drag tasks so that there’s plenty of time left over for uninterrupted stretches on the thrust tasks.  This would lead to greater efficiency overall.

The second thing is that I’m approaching my one day a week working from home all wrong.  See, we have a policy at my workplace that everyone gets to work from home one day a week (well, after they’ve had a brief breaking-in period where we get to know them and trust them).  This is a pretty great privilege for a corporate environment (meaning large public corporation, which happens to be the type I work for), and it’s a privilege that every general manager we’ve ever had was desperate to take away from us.  If you’re lucky enough to work in a smaller corporation, or one of the few tech-liberal giants (I think Google probably qualifies), you might not see where I’m coming from, but I’ll bet if you work in a more traditional business environment, even a tech-heavy one, you know exactly what I mean.  People who understand programmers and how to manage them (remember that I ran my own small company for many years, so I include myself in that group) understand that treating them like adults is not only a good way to get them to be productive, it’s the only way to get them to be productive.  Treat them like children and they will not only act like children, they’ll work hard to actively undermine you and screw you sideways.  And telling people that you don’t trust them to do what they’re supposed to do when you’re not looking at them is definitely treating them like children.  Now, don’t get me wrong: I’m sure there are categories of employees where that’s appropriate, and that’s why your basic average corporate middle manager has that attitude.  But for programmers at least (and I bet many other types of folks), this is a recipe for disaster.  So we very luckily have a have a head-of-tech (what would be our CTO if we were an independent company instead of a little piece of a larger giant) who understands this and protects our privileges very jealously.  Which is awesome.

Of course, we all have to do our part as well.  To help our CTO out in his never-ending war to keep management from fiddling with our work environment, we all have to make sure we don’t abuse our privileges.  Thus, when I work from home, I actually end up answering my email even more than I would if I was in the office: essentially, I’m so desperate to prove that I’m just as responsive when I’m at home that I end up being even more responsive when I’m at home.  The least little task that comes up, I immediately jump on it and complete it to prove that I couldn’t possibly be doing a better job if I were onsite.  But see what I’m doing: I’m using up all my work-from-home time—quite possibly the best chance I have at long, uninterrupted stretches of concentration—on drag tasks.  I’m screwing myself, and my company, by sacrificing productivity for the perception of responsiveness.  Not that perception isn’t important, of course, but, hey: there are limits.

So, handily, I see several opportunities for improvement here, all thanks to this blog post I just happened to stumble across.  And after 25 years at the professional programming game.  Just goes to show you you’re never to old to learn a new trick or two.  Of course, learning it and putting it into practice are two different things, so we’ll see how successful I am at that, but I’m pretty excited to try out my newfound principles.  I think I was already a pretty good programmer, but I’m also pretty sure I could be great.  Just gotta increase my thrust a bit.  And now I think I know how.

Sunday, September 25, 2011

The Curse of Alexander Graham Bell


Talking on the phone has to be the worst form of business communication ever invented.

I know I’ve railed before about people not being to communicate via email, but today I want to approach it from the opposite side.  When people refuse to use email to answer your questions, how do they want to communicate?  Inevitably the answer is the phone.  And I just don’t understand it.  I really don’t.

I’ve got a vendor right now that I asked for some information about their product.  And he desperately wants to call me.  I mean, I can feel his drool coming over the wires, you know?  And I don’t know how many different ways I can explain to him that I don’t want his fucking phone call.  I don’t need to hear his cheery voice, and he ain’t gonna make me want to buy anything more than I already do if I could only hear his wonderful sales pitch.  I want information.  I want technical facts that I can study and digest, and then figure out what questions I have (if any).

If we have a phone conversation, we have to do it at a time that’s convenient for him.  Because my best working hours are after dark, that means it definitely won’t be convenient for me.

If we talk on the phone, I will have no record of the conversation.  I will have nothing to go back and reread (hell, nothing to read in the first place).  I will having nothing that I can revisit and understand better the second time, or think of new questions, or connect with something else I’ve read.

I will not have time to plan my questions and compose my thoughts.  I will have to think on the fly, and whatever I don’t think of, won’t get asked.  Unless we schedule yet another phone call.

If I do think of good questions, the best answers I can possibly receive are whatever he can deliver on the fly.  He doesn’t have any more time to ponder answers than I did to ponder the questions, and that means incomplete answers, evasive answers, or, at best, “let me get back to you on that” answers.  If he has to pass the question along to someone else, I have to wait for another phone call for the answer, and I don’t even get the benefit of seeing the third party’s email address as I would if he forwarded my question on to his tech department and CC’ed me.

God forbid he should have some sort of accent that would make it hard for me to understand him.  Some of the most frustrating business communications of my life have been on the phone trying to make heads or tails out a strange accent while trying not to sound like a prejudiced asshole.  I mean, I fully support every nationality and every language being involved in my industry, and I’m one of those crazy hippie liberals, so I rejoice in diversity.  But that doesn’t help me understand you if you’re new to my language.  And you know what?  Your accent is not a problem in your email.

And, what is possibly the worst thing of the whole sad, sorry situation is that there’s no upside at all.  Really, none.  If we can’t communicate via email because we absolutely must sit down in a conference room and waste everyone’s time talking face-to-face, that’s still annoying, but at least we can talk about making a personal connection.  I still say the value of being able to see your body language is marginal at best, or at least is easily balanced out by the extra precision and thought put into a written communique, but I can’t deny that there’s some value in being able to smile at you and shake your hand, even in the forever lost time of polite chitchat ... all that goes into you and I being able to see each other as real people, and being able to act like we’re friendly even though we both know we’ll never actually be friends.  Physical presence definitely has an upside.  But what’s personal about a phone call?  How is a disembodied voice a personal connection?  I gotta tell you: being able to hear your tone of voice doesn’t even begin to cover the disadvantages of not having your words in front of me to peruse again and again.

In fact, the whole tone of voice thing is often more of a disadvantage.  It means that I have to plaster a fake smile on my face and act nice.  (Yes, even though you can’t see me, you can tell whether I’m smiling or not.  You can hear a smile over the phone quite easily.)  In an email, I can curse your name and wish horrific evolutionary dead-ends on your family tree the whole time I’m composing wonderfully polite rhetoric with which to impress upon you my graciousness.  And, if it’s not polite enough the first time, I can delete it all and start over, and over again, until I get it just right.  On the phone, it’s much harder, and I only get one shot at it.

Overall, the phone is not just inefficient; it’s downright inferior.  And yet my vendors want to call me, and my boss wants me to call people, and my boss’s boss wants me to call people, and everyone’s ticked off at me when I express my preference for email.  It’s enough to make you think the world is out to get you.

Or at least tie you down and force you to talk on the phone.