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

Sunday, August 3, 2014

Showdown at the Corporate Corral


This week I had one of those moments at work where I realized I was fighting battles on several fronts and I felt like everyone was attacking me.  I hasten to stress that it only felt this way: after taking a few moments to step back and contemplate, I realized that everyone was just trying to get things done in what they thought would be the best, most productive way.  Not that any of us could agree on what the best, most productive way was, of course.  But, the point is, we weren’t in it to try to tear the other person down.  Coming to that realization enabled me to calm down and leap back into the fray with a little more gentility than my initial reaction.  Being able to step back and reassess is a valuable skill, by the way, although one that only came with experience in my case.  But that’s not the main topic I want to explore today.

The primary thing that this incident set me to pondering is why we bother to fight these battles at all.  Hey, we’re getting paid either way, right?  Why not just shut up and do whatever people want, even if you know it’s doomed to failure?  Well, the most altruistic viewpoint on this is that that’s a pretty apathetic stance to take: if you do that, aren’t you really saying you don’t care about the company you work for?  If you cared, you’d want the company to succeed by doing things properly, and not to waste time having to recover from failures.  By taking a stand and fighting for what you believe is right, you’re saying that you love your company and want to save it time (and therefore money) by increasing efficiency and aiming for victory.  Cue patriotic music here.

Now, I’m not saying there’s not an element of that in most of us who find ourselves embroiled in an argument over the “right” way to do something at work.  In my line of work, I think a lot of people really do care about whether their company succeeds or not, and, when they stop bothering to insert themselves into every discussion, it generally means they’ve checked out and they’re just daydreaming about job interviews.  But, let’s face it: enlightened self-interest only gets you so far.  At our cores, we’re generally motivated by things which have a more personal bent—we work to bring ourselves pleasure, and avoid ourselves pain.

My friend and former boss Benny believes that there’s simply a joy in being passionate about something.  That there’s an intellectual thrill in concentrated debate, and that this is how you grow and expand your knowledge.  If you can manage to defend your position with intensity but without dogma, you can either convert others to your point of view, or you can become converted yourself, and that’s a win-win proposition.  Either way someone leaves the conversation more enlightened than when they went in, and that’s a laudable goal.

I think it’s more complex than that, because I think people are more complex.  I’m not saying Benny’s wrong, of course ... just that he’s only right for Benny.  Everyone is going to have slightly different motivations for why they’re holding on to their viewpoints like a starving dog with a bone, and I think it’s worthwhile for each person to figure out why for themselves.  When we understand our own drives and ambitions, we can manage them better, and recognize when they’re about to lead us astray.  Which they do sometimes.

Now, let me take a brief detour here to point out that self-analysis is inherently flawed.  That topic could fill its own blog post, but for now suffice it to say that I firmly believe that when someone starts a sentence with “I’m the sort of person who ...” it’s time to put your skeptical glasses on.  So take what I’m saying here with a grain of salt; I try to do the same myself.

To understand why I can’t seem to help getting embroiled in these work debates, I need to tell you a story, and before I can tell you a story, I need to tell you about my dad.

My father is an interesting man with whom I have a complicated relationship, but we don’t need to go into too many details.  For the purposes of this particular story, what you need to know is that he’s a self-made man.  He went to work in a paper mill as a scalesman, a job that requires no education whatsoever, and worked his way up to being an industrial engineer, a job that typically requires a college degree.  In fact, he often said he was one of only three people in the history of his company to be given the IE title without a degree.  All that I knew about corporate culture in America before I got my own first job as a programmer, I learned from my father.

People share war stories and frustrations with their families, so it should come as no surprise that I knew some of the more egregious sins of middle management before I’d ever experienced them myself.  Here’s one so pervasive it’s almost cliché: the manager asks the employee to do something which the employee knows damn well can’t possibly work.  This situation arises because middle managers don’t actually know anything about how the business works, but they always think they do.  (To be fair, there are exceptions to this rule.  Just very rare exceptions.)  The employees know, because they’re the ones who have to do all the work.  But somehow the managers never seem to want to listen to them.  (I have theories on why this is too, but that will have to wait for another blog post.)  This is the sort of thing Scott Adams and Mike Judge are thankful for, but the rest of us just despise.  From listening to my dad, it seemed like this sort of thing happened all the time.  And, I have to say: my experience in the corporate world doesn’t contradict that impression.

So, how did my father handle these situations?  Very simple.  First, he pointed out why the project was not going to work.  He talked to as many people as possible about it.  If the manager persisted, he would put his objections in writing (memo, email, whatever).  If the manager told him to do it anyway (in writing), he just went ahead and did it.  Then, when the project inevitably failed, my father got to say “I told you so” ... with supporting documentation, even.

Now you have enough background to hear the story of the first time this ever happened to me.  I hadn’t been working at my first corporate job for even a year yet.  I tried to talk my boss out of the disastrous plan, then I put it all in writing (trying not to be a dick about it), then I went ahead and did it.  When it failed, I went to him with email in hand and said “I told you so.”  I don’t remember the exact words, but basically my boss looked at me and said, “Yeah, you were right.  Now go fix it.”

And this is when I discovered that the “satisfaction” of saying “I told you so” is vastly overrated.  Perhaps for my dad it’s enough to sustain him.  But, for me, it pales in comparison to the teeth-grinding frustration of having to do the work twice when you knew goddamn well it wasn’t going to work the first time.  In the years since then, I’ve developed an almost pathological aversion to doing things I know are going to fail.  Which brings us full circle to those heated arguments at work.

Look, I try to pick my battles.  If I feel like you have more knowledge or (more importantly) more experience than I do on a given topic, I try not to put up too much of a fight even if I’m pretty sure you’re wrong.  And of course one has to be congnizant that, if you go up against someone who’s already volunteered to do some quantity of work and you actually do manage to convince everyone that they’re going to do it the wrong way, it’s almost certain you’re going to be volunteered to do it “right.”  Which is not always desireable, either from the time aspect or the responsibility aspect.  But, if we’re talking about something I have experience with, and we’re talking about going down a road that I’ve been down before, and if I know damn well that when my team or my company did it this way last time (or the last two times, or the last three times) it was an abysmal failure ... well, then, I’m going to be practically psychotic in my opposition to that plan.  It’s partially because I want to save the company money and time, sure, and it’s partially because I want what’s best and most efficient and most productive for the team and for the business, no doubt, but, if I’m being honest, it’s probably mostly because I just hate to make the same mistake twice, and I positively despise making it thrice.  I don’t even like to watch people doing work I know is doomed to failure.  Makes me feel dirty.  Like watching a car accident unfold when you know you could do something about it but are afraid to get involved.  I feel like a bad person for letting it happen.

Although ... it seems to me like the fact that my motives may not be pure does not preclude them being a benefit to others.  I hope that people will take my passion—as annoying and frustrating as it may be sometimes—for the advantage it can be, and use it to its fullest.  Don’t look my gift anger in the mouth.  Just because my intentions are somewhat selfish doesn’t mean they can’t save you some heartache down the line.  And that’s worth a little ranting ... isn’t it?

Sunday, July 28, 2013

Technical Debt Strategies


For a new role I’m starting at work, I’ve been thinking about the concept that we in the software development business refer to as “techincal debt.”

In software development, there is always a tension between two opposing forces: the desire to do it fast, and the desire to do it right.  I could probably write an entire blog post on just that topic, but for now I’ll settle for the short version.  If you do it right, then, later, when you want to extend it, or modify it, or use it as a jumping off point for branching out in a whole new direction (and you will always want to do these things eventually, if your software lives long enough), you can do so easily, with a solid foundation as a base.  The downside is that it will take longer.  If you do it fast, you get results faster, which means you can serve a customer’s needs before they change, fill a window of opportunity before it closes, or perhaps even beat your competitors to the market with your offering.  But when you have to modify it later (which you will), it will end up taking even more time to clean things up than if you’d just done it right in the first place.

You can see why we often call this “technical debt.”  You’re saving time now, but you’ll have to “pay it back” later, and the amount of extra time it takes is like the interest.  Primarily, we software people invented this analogy because it makes good sense to business people.  When you’re running a business, sometimes you need a piece of equipment.  You have two choices: you can borrow some money and buy it now, or you can save up and purchase it outright, later.  Buying it now allows you use it now, thus saving you costs somewhere else or giving you new capabilities you can capitalize on.  But you’re going to have to pay for it eventually, and you’ll have to pay the interest too.  Buying it later saves money in the long run, but denies you the advantages of the equipment for however long it takes to save up enough money.

This analogy really works because, despite what some people tend to believe, neither choice is always right or always wrong.  Sometimes it makes sense to borrow the money and buy it now; sometimes it makes sense to wait.  Likewise with software, sometimes it makes sense to just get the damn thing programmed as quickly as possible, and sometimes it makes sense to take the time and do it right the first time.  And business people have to make that call, and expressing the choice in financial terms makes it easy for them to understand the trade-offs.

For instance, when a company is first starting up, “do it fast” is nearly always the right answer.  (David Golden has a great post which explores this in greater detail.)  Basically, there’s no point in worrying about how hard it will be to change your software tomorrow when you’re not even sure there’s going to be a tomorrow.  Once a company leaves the startup phase, though, it’s time to think about paying down some of that technical debt.  If it doesn’t, the lack of agility means it may not be able to respond to customer demands quickly enough to thrive in the marketplace.

Now, technical debt is in many ways unique to every individual company, and there’s no one technique or approach that will work for everyone.  But everyone faces the same basic problem: I need my development team to keep making new features while they’re also paying off this debt; how can I have them accomplish even more than they were doing before without burning out, or creating new problems as fast as they fix the existing ones?  Hiring more people helps, of course, but it isn’t the complete solution.  But there are some general strategies that will work, and can be used by nearly every company that finds itself in the position of having a fair amount of technical debt to pay off.  These five areas nearly always need some attention, and they’re excellent things to think about when looking for ways to make your programmers more efficient, which not only gives them time to work on refactoring messy areas of your codebase, but also gives them more time and confidence to avoid creating technical debt in the first place.

Unit Tests  Few companies have no unit tests, but few have enough either.  I’ve heard people worry about creating too many unit tests, but honestly this is like your average American worrying about eating too many vegetables: I suppose it’s technically possible, but it’s unlikely to be a problem you’ll ever face.  It is possible for your unit tests to be too messy, though.  Remember: your unit tests are supposed to give you confidence.  The confidence you need to get in there and clean up some of that technical debt without being afraid you’re going to break something.  But your tests can’t give you confidence unless you’re confident in your tests.

Now, many people will tell you that you should put as much time and effort into your tests as you do your code (this is often—but not always—what people mean when they say “tests are code”).  I don’t necessarily agree with this.  I think that all the effort you put into your unit tests should go towards making your unit tests effortless.  I think your code should be elegant and concise: you don’t want it too simple, because it’s a short hop from “simple” to “simplistic.”  Imagine the Dr. Suess version of War and Peace and how hard that would be to get through—that’s what I’m talking about.  You need to use appropriate levels of abstraction, and using too few can be as bad as using too many.  You have to strike a balance.

On the other hand, your tests should be simple.  Very simple.  The simpler they are, the more likely your developers are to write them, and that’s crucial.  Whether you’re using TDD or not (but especially if you’re not), devs don’t particularly like writing tests, and anything that gives them an excuse not to is undesireable.  You want your tests to read like baby code, because that way not only will people not have to expend any brainpower to write new tests, but reading them (and therefore maintaining them) becomes trivial.  This doesn’t work as well for your code because of the crucial difference between code and tests:  Code often needs to be refactored, modified, and extended.  Tests rarely do—you just add new ones.  The only times you modify tests is when they start failing because of a feature change (as opposed to because you created a bug), and in many cases you’re just going to eliminate that test.  And the only times you should be refactoring them is when you’re working on making them even simpler than they already are.

So, in addition to trying to extend your test coverage to the point where refactoring becomes feasible, you should probably work on creating underlying structures to make writing new tests simple, and to make reading existing tests even easier.

Code Reviews  There are still plenty of companies out there not doing this one at all, so, if you fall in that category, you know where to start.  But even if you’re already doing them, you could probably be doing them more efficiently.  Code reviews are tough to implement well, and it has as much to do with the process you implement as with the software you choose to utilize.  Of course, it has a lot to do with the software you choose to utilize.  Code reviews, like unit tests, need to be simple to do, or people will find excuses not to do them.  Good software can really help with that.

Hopefully, like unit testing, code reviews are something that you don’t really need to be convinced that you should be doing.  But more people are resistant to code reviews than any other practice mentioned here.  They absolutely do require an investment of time and effort, and they absolutely do mean that you will deliver some features more slowly than you could without them.  Of course, if that extra time and effort catches a crucial customer-facing bug, you won’t be complaining.

But, honestly, catching bugs is not the primary benefit of code reviews ... that’s just the icing on the cake.  Code reviews just produce better software.  They’re the time and place where one developer on your team says to another: “hey, you know you could have used our new library here, right?”  (To which the response is inevitably: “we have a new libary?”)  They’re fantastic for cross-training too: don’t think code has to be reviewed by someone who already knows that code.  Have it reviewed by someone who’s never seen the code before and they’ll learn something.  Have your junior people reviewed by your senior people, and have your senior people reviewed by your junior people: they’ll all learn something.  It makes your codebase more consistent and builds a team dynamic.  It diffuses business knowledge and discourages silo effects.  If it happens to catch a bug now and then ... that’s just gravy.

Once you have code reviews in place, though, you’ll probably still want to tweak the process to fit your particular organization.  If you require reviews to be complete before code can be deployed, then code reviews are a blocking process, which comes with its own hassles.  Then again, if you allow deployment with reviews still outstanding, then you risk making the review process completely ineffectual.  So there’s always work to be done here.

Code Deployment  I suppose there are still software folks out there for whom “deploy” means “create a new shrink-wrap package,” but more and more it means “push to the website.”  At one company I worked at, deployment was a two-hour affair, which had to be babysat the entire time in case some step failed, and, if a critical bug was discovered post-launch, rolling back was even more difficult.  From talking with developers at other companies, I don’t believe this was an exception.

If your organization is big enough to have a person whose entire job is dedicated to deployment (typically called a “release manager”), then you don’t have to worry about this as much.  If that two hours is being spent at the end of a long day of preparation by one of your top developers, you’ve got some room for improvement.  But even if you have a seprate release manager, think how much you have to gain as your deployment gets shorter and simpler and more automated.  You can release more often, first of all, and that’s always a good thing.  And there are simple strategies for making rolling back a release almost trivial, and that’s absolutely a good thing.

Now, I’ve never been a fan of “continuous deployment” (by which I mean deployment happening automatically, triggered by checking in code or merging it).  But I do believe that you should strive for being able to deploy at any time, even mere minutes after you just finished deploying.  Part of achieving this goal is reaching continuous integration, which I am a fan of.  Having those unit tests you worked on so hard being run automatically, all the time, is a fantastic thing, which can free your developers from the tedious chore of doing it manually.  Plus, continuous integration, unlike code reviews, really does catch bugs on a regular basis.

Configuration Management  Similar to deployment, and for the same reasons.  If building a new production server is a heinous chore, you’re not going to want to do it often, and that’s bad.  Horizontal scaling is the simplest way to respond to spikes in traffic, and you should be able to bring a new server online practically at the drop of a hat.  It should be completely automated, involve minimal work from your sysadmins, and zero work from your developers.  There are all kinds of tools out there to help with this—Puppet, Chef, etc—and you should be using one.  Using virts goes a long way towards achieving this goal too.

For that matter, it should be trivial to bring up a new development server, or a new QA server.  Once that ceases to be a big deal, you’ll find all sorts of new avenues opening up.  Your developers and/or your QA engineers will start thinking of all sorts of new testing (particularly performance or scalability testing) that they’d never even considered before.  Figuring out how to handle database environments for arbitrary new servers can be a challenge for some shops, but it’s a challenge worth solving.

For Perl in particular, you also need to be able to reproduce environments.  You can’t spin up a new production web server alongside your existing ones if it’s going to be different than the rest.  If your server build process involves cloning a master virt, you don’t have to worry about this.  If you’re rebuilding a server by reinstalling Perl modules, you must expect that CPAN will have changed since you last built production servers, because CPAN is always changing.  For this reason, a tool like Pinto (or Carton, or CPAN::Mini, or something) is essential.

Version Control  In this day and age, I doubt seriously I need to convince anyone that they should start using version control ... although one does hear horror stories.  More likely though, you should be thinking about what VCS you’re using.  If you’re using CVS, you should probably be using Subversion, and, if you’re using Subversion, you should probably be using Git.  But along with thinking about which software to use and how to switch to a better one (preferably without losing all that great history you’ve built up), you also need to be thinking about how you’re using your VCS.

Are you using branches?  Should you be?  If you’re not, is it only because of the particular VCS you’re using?  If you’re using CVS or Subversion and telling me branching is a terrible idea, I can understand your point of view, but that doesn’t mean you shouldn’t be using branches—it just means you should probably be using Git.  Now, granted, branches aren’t always the right answer.  But they’re often the right answer, and they allow experimentation by developers in a way that fosters innovation and efficiency.  But it takes work.  You have to come up with a way to use branches effectively, and not just your core developers should agree.  If you have separate front-end developers, for instance, they’re going to be impacted.  If you have a separate QA department, they’re definitely going to be impacted—in fact, they can often benefit the most from a good branching strategy.  Your sysadmins, or your ops team (or both), may also be affected.  If you’ve tried branches before and they didn’t work, maybe it wasn’t branching in general that’s to blame, and maybe it wasn’t even the particular VCS ... maybe it was the strategy you chose.  Feature branches, ticket branches, developer branches—again, there’s no one right answer.  Different strategies will work for different organizations.


So these are some of the things you need to be considering as you look to reduce your technical debt.  None of these things address the debt directly, of course.  But, in my experience, they all play a part in streamlining a development team by increasing efficiency and cohesiveness.  And that’s what you really need in order to start paying down that debt.

Sunday, May 26, 2013

Free at Last, Free at Last ...


Next week I won’t have a job.

This is by design, I should clarify.  I’ve given myself two weeks between jobs to decompress a little.  You know how some people say you should regularly do saunas or colonics to flush all the toxins from your system?  Sort of like that.

So for the next 15 blissful days, I’ll be lazing around, mostly doing nothing.  I’ll spend part of the time at a technical conference (where I’ll actually be delivering a talk, which is pretty nifty), but mainly just doing nothing.  Relaxing.  Winding down.  Chillin’.

Then I’ll start a new position at a new company, which I’m pretty excited about.  Not much to say about that yet, since all I know is what one can gather from the interview process and the background research that accompanies it, but I’m heartened by that fact that folks there seem to have read this blog (including the extensive series on the Barefoot Philosophy) and wanted to hire me anyway.  I think our goals will be plenty sympatico.

What I’m leaving is approximately six years at a company that I really enjoyed being with ... at least for part of that time.  Having signed a piece of paper that strongly enjoins me from saying anything that might cast my former employer in a negative light (and tell me that shouldn’t have been a danger sign), I will restrict myself to enumerating a few facts.

  1. When I started work at this company, it was owned by eBay.
  2. eBay was a pretty great place to work.  It wasn’t perfect by any means, but what complaints I had were mostly surmountable, and there were many layers of management between me and those policies, most of which layers were dedicated to making sure said policies didn’t impact my productivity.
  3. This company was sold by eBay to a different company.
  4. One year later, I’ve resigned.

There.  Nothing “negative” about that, right?  Just the facts.

I have noticed a trend in smaller companies that are acquired by larger companies.  The last company I worked for being owned by two different companies, I got to experience it twice.  Also at the company I worked for before that.  Also at a few of the companies I consulted for when I owned my own business.  Also at companies which I know of because they’ve employed friends, or family members.  Large companies which are essentially conglomerations of smaller companies (or one core business surrounded by many “satellite” subsidiaries, as in the case of eBay) seem to be run very differently than the smaller companies they were once composed of.  I’m not sure why this is.  The smaller companies were successful when they were independent: if they had not been, they would not have been purchased.  However, they inevitably fail as part of the larger entity, when they’re being run differently.  This is a trivial pattern to pick out for anyone who has spent more than a few years in the corporate workplace.  And yet the mistake continues to be made, over and over again.  I’ve always had a high tolerance for ignorance, but a very low one for stupidity.  When you make a mistake once, that’s ignorance.  When you continue to make the same mistake over and over, that’s stupidity.

The mistakes are somewhat varied, but the core of them is pretty much the same.  The smaller organization was nimble and responsive, but the larger company imposes rules and process.  The smaller organization had some lean years, but they perservered and grew stronger because of them; the larger company seems to expect an infinitely-increasing growth curve, with the result that even when you make money, you’re chastised for not making enough money.  The smaller organization valued employees and built its team slowly and with great precision, until every warm body was integral to its success, and there was no waste—not a single speck of fat to be trimmed.  The larger company sees the employees as faceless, replaceable cogs in a machine, and can’t understand why people with vast amounts of business domain knowledge stored in their heads leaving should be a big deal.  Just get some more people.  Lots of people out there wanting jobs.  Hell, you can probably find someone even cheaper to do the same job.  That’ll help the bottom line, too.  Win-win.

I continue to believe that there are companies out there, even larger companies composed of disparate subdivisions, that don’t have this rather large blind spot.  But that’s mainly because I’m at heart a romantic, even though I’m also a cynic.  One day I’ll have to do a blog post on Cynical Romanticism.  I’m also considering a longer post exploring some of the concepts above in more depth.  But for today, I’m just happy to be free.  To do what I want.  Any old time.  (And you’ll have to take my word for it that that’s an obscure 90’s song reference and not an obscure 60’s song reference.  That’s just how I roll.)

I’d ramble on a bit longer, but this is starting to cut into my lazy time.  I’m sure you can all find something to amuse yourselves.  The Internet’s a big place, after all.  As for my little corner of it, it’s about hang up an “Under New Management” sign.  In a couple of weeks.  This week, the sign just says “Gone Fishin’.”

Sunday, May 5, 2013

In Search of Better Résumés


Today’s blog is about writing a better résumé.

Having run my own business for 12 years, I certainly saw my share of résumés.  In fact, in my current job, I’ve spent many months working on hiring.  Between the two, I’ve seen hundreds of résumés, and been involved in hiring dozens of candidates.  So I have a bit of experience in this area.

Of course, mine is only one opinion.  Some people are going to agree and others will disagree.  I’ve already been told by one person with some experience in these matters that he didn’t care for my personal résumé format ... too “fancy.”  But my format is informed by several rules that I have when personally reviewing résumés, and I have been, at several points in my career, the guy to impress when you wanted to get a job at my company.  So take that as you will.

Tip #1: Keep it short.  Résumés are almost universally too long.  The truth is that, when you’re faced with reading a dozen résumés a day, you can’t read them all anyway.  You’re going to just scan them.  And, even then, to be terribly terribly honest, I’m usually starting to drift off towards the top of page two.  Do everything in your power to reduce your résumé to one page.  And, realistically, unless you’ve been doing whatever it is you do professionally for a minimum of ten years, this shouldn’t even be difficult.  Having a two or even three page résumé when you’re just a year or two out of college isn’t impressive.  It’s pretentious.  Even at 10+ years, when it ceases to be unbelievable, it’s still unnecessary.

Let’s face it: the vast majority of résumé content is bullshit.  Everyone knows this.  Any decent résumé reviewer also knows this and will completely ignore most of the crap on your résumé anyway.  So don’t give them lots of crap to ignore.  Hit the highlights—that’s all they were really going to read in any case.  And this way you get to decide what the highlights are instead of having the reviewer take their best guess at it.

This year I’ll hit my 26th anniversary as a professional programmer.  I still got my résumé down to a single page.  If I can do it, you can too.  And people are far more likely to read the whole thing at that length.

Tip #2: Focus.  I’m a Perl programmer.  I generally am looking to hire Perl programemrs.  If you send me a résumé with a list of languages on it and Perl isn’t first in the list, I’m setting your résumé aside.  I’ve got plenty of other résumés where Perl is the first language in the list.  I want someone who’s passionate about Perl.  When you bury the lead in the middle of a rote list of languages you know, that doesn’t scream “passionate” to me.

Even worse, don’t put it in the wrong category, and don’t misspell it.  I have seen résumés for Perl jobs where Perl didn’t appear in the list of langauges at all, but in some other category like “Scripting.”  Sure, Perl is a scripting language.  Listing C++ and Java under “Languages” and Perl under “Scripting” isn’t going to win you points for being technically correct.  Even if I were to agree with you that you were technically correct—which I certainly would not—why on earth would I want to hire someone with so obvious a disdain for the language they were looking to be hired for?  And while misspelling anything on your résumé is pretty awful, misspelling the primary focus (e.g. “PERL” instead of “Perl”) is instant death.

And don’t give me any excuses about how you need a single résumé to submit to multiple different jobs.  If you’re seriously applying for more than one different kind of job—perhaps you’re both a Perl programmer and a C++ programmer, or perhaps both a programmer and a QA engineer—then make different résumés.  Even if the only difference is which language you list first, that’s a difference worth making.

Speaking of listing languages, don’t list every language you’ve ever dabbled in.  Hit the top 4 or 5 (or even fewer) and move on.  Remember: just the highlights.  I used to put Fortran on my résumé because I took a course in it once.  In college.  Thirty years ago.  I couldn’t program in Fortran if my life depended on it; why was I putting it on my résumé?  Just to pad.  And since it was tenth in a list of ten languages, I’m sure my reviewers had already decided they were drifting into bullshit territory long before they got there.  So why was I bothering?

Hopefully you can turn these specific examples into general advice.  If not, you probably have more issues than I can reasonably help you with.

Tip #3: Dates.  I don’t read most of the details on a résumé.  You know the one thing I do read?  The dates.  The dates on a job.  I look for particularly long gaps.  I look for how long ago you last worked with this or that.  I look for how long ago your first job was, because that tells me far more precisely how long you’ve been at this than some general “blah-di-blah years of experience” up at the top.

Every job should have a month and year that you started, and a month and year that you ended.  The most recent job (i.e. your current job, if you’re currently employed) should be first, and they should go in reverse chronological order, and your first job should be last.  I may very well jump to the end to see the start date on that first job.  Don’t bother with the exact day; I don’t care that much.  On the other hand, just years may not be fine-grained enough.

If you do have a large gap in employment, don’t try to hide it by leaving dates off altogether.  However bad it may look, I can always imagine worse.  When you don’t put dates on your résumé at all, I can’t see when you did what.  This irks me.  Don’t irk me.

Oh, and by the way: include every job you’ve held in the field you’re trying to get a job in now.  Some people will tell you not to do this.  I’ve been told, for instance, that I shouldn’t bother with my first couple of jobs.  They were a long time ago, after all, and there isn’t much there that’s relevant to my career now.  But when I review résumés, as I said above, I’m going to jump to the end at some point and look at the date on your oldest job.  That’s how long you’ve been in the business.  If you leave off your first job in the field, then I don’t know how long you’ve been doing this.  Do you not want me to know how long you’ve been doing this?

Now, don’t get me wrong: I don’t need to see (and actively don’t want to see) your jobs outside the field.  It doesn’t matter that you were a dishwasher or a pizza delivery guy or a construction worker or a paperboy.  I could care less.  But if it’s related to what you want to do—even tangentially—put it in there.  Be very brief in your description, since it doesn’t much matter and I’m likely not going to read it anyway, but put it in there.

Tip #4: Nobody cares about ...  Remember how, in high school, your teachers and your principal and your guidance counselor told you that your school record would follow you around for the rest of your life?  They lied.  I have never told a single person in my entire life what my high school grade point average was.  I never even put it on my college applications, although I’m sure they got it from the high school records upon request.  I have also never told a single person what my college grade point average was.  I don’t even remember what either of them were any more, to be honest.  I used to tell people what I made on the SATs every now and again, until I realized there were plenty of people in the world who had done better than I had and I should just shut up about it.  But I’ve never told an employer what it was, and I’ve never been asked.

I do not care what your grade on anything was.  It’s beyond irrelevant.  I also do not care what your hobbies are.  Some people will tell you that interesting personal details like this make you stand out.  They do not.  They make reviewers wonder why the hell you are telling them this.

One other thing: I have never called a personal reference.  Ever.  And I never will.  If you put them down on your résumé, they like you.  No, more than that: they adore you.  If you put someone down on your résumé as a personal reference who does not adore you, then you are a moron.  If you are a moron, I’m not going to hire you anyway, and I don’t need a bad personal reference to figure that out, so it’s a waste of time to call them.  If you are not a moron, any personal reference I call is going to tell me how utterly awesome you are, and I know they’re going to say that ahead of time, so it’s a waste of time to call them.  I don’t have time to waste.  I have hundreds of résumés to review, remember?

Tip #5: But they do care about ...  Every field is going to have a few unique things that don’t fit into a standard résumé format.  For me, it’s a link to my blog (my technical blog) and a list of the CPAN modules I maintain.  For you it might be professional organizations, or certifications, or who knows what all.  Put yourself in the reviewer’s shoes.  Pretend that you were going to hire a coworker.  If you had to work with someone for the next several years, what would you want to know about them besides all the other places they’d worked?  Would you really care where they went to school and what they majored in?  (There are perhaps some jobs where you would, but probably not.)  What about articles they’d written?  (Probably so, but then again maybe not.)  Only you, or someone else in your field, can answer this question.

Tip #6: Contact info.  Please, for the love of all that is holy, put your phone number and your email address on your résumé.  And absolutely under no circumstances allow your recruiter, if you must use one, to remove them.  Nothing frustrates me more than a résumé for someone I can’t contact.  And do not put either one or the other.  Put both.  Some people like phone calls.  Some people (like me) prefer emails.  You don’t know which type is going to end up with your résumé; don’t risk pissing off half of your potential reviewers.

Tip #7: Review.  Everything you ever write you must review.  Never, ever, under any circumstances, let a single thing that you write leave your possession without rereading it.  Nothing.  Not a letter, not a report, not an email, not an instant message.  And absolutely positively not something as vital as a résumé.  A résumé should be reread several times.  In fact, you should reread it before you send it to anyone.  Every time you send it to anyone.  You will constantly find mistakes or areas of improvement in your résumé, even when it’s been around for years and you’ve read over it hundreds of times.  Read it again.  You’ll find something else.  Pick apart the spelling, the punctuation, the grammar.  Give it to friends to read for you.  Pick the people you know who write the best and make them help you.  Read it aloud to yourself and listen to yourself.  Any time you hear yourself stumble over something, change it.

Tip #8: Don’t be afraid to experiment.  There is something to the idea that your résumé can be too over-the-top.  But there’s a long way to go before you go too far.  Résumés are depressingly similar, and when you have to go through hundreds of them, they all start to blur.  Anything that sets yours apart is far more likely to be positive than negative.  Look at it this way: even if the reviewer doesn’t like the risks you take, they’ll remember them.  I got a résumé once completely written in a strange, futuristic font.  I made fun of it mercilessly, but I still remember that candidate’s name.  Moreover, in the process of making fun of it mercilessly, I showed it to everyone in the office.  That’s the sort of exposure you can’t buy.

Once upon a time, people might recommend that you put your résumé on some sort of unique paper: pink, perhaps, or a heavier bond.  Nowadays everything is electronic, though.  Of course, you can do things with an electronic format that would be difficult or impractical to do on paper, if you have the skills.  You could, for instance, make your own watermark.  Or add a detailed image to your résumé, if that might have value.  You can definitely take this one too far—if you could somehow rig it so that, whenever I opened your résumé, a .wav file of the 1812 Overture played, I would consider that to be the résumé equivalent of the dreaded blink tag, and I would see you in hell before I saw you in the workplace.  But there’s a hell of a lot of room to play in before you reach that point.  Try it out on your friends before you try it out on an employer, if you’re worried.

Putting it all together.  So do I practice what I preach?  Well, here’s my résumé so you can judge for yourself.  Note that it all fits on one page, despite having quite a few years to fit on there.  In order to make that happen, I went with the two-column format, which is the experimental part.  I included a few things that some résumés don’t; I excluded a bunch of things many résumés have.  All my programming jobs are listed, and they all have dates.  Every job (except the first few, which are listed last) also includes exactly what technical things I was doing, so that anyone can see how old my experience with this or that is, or how long I’ve been continuously working with something.  My technical skills section has gone from being a long list of long lists to being a short, singular batch of bullet points, with only the top-tier skills listed.  And Perl is first, because that’s the sort of job I want to get.  And I’ve read it over and over again a hundred times.  At least.

In fact, the only piece of my own advice I didn’t take was including my phone number.  This is because I am a grumpy old man who doesn’t particularly care for phone calls, and I can afford to eliminate those people who can’t operate their email.  But this is definitely one of those do-what-I-say-not-what-I-do things.

So, there’s some advice on how to present your résumé, from someone who has some experience in those sorts of things.  Take it or not, as you please.  In fact, now that I think on it, the more people who listen to this advice, the fewer résumés I can toss aside without having to do phone screens.  So, actually, don’t take my advice.  Haven’t I told you not to read this damn blog?  Stubborn bastards.

Sunday, April 28, 2013

The Barefoot Philosophy: Final Thoughts


[This is the final installment of an 8 part series: The Barefoot Philosphy.  It is based on my experiences as the founder of a business—Barefoot Software—which I ran for 12 years.  Please start with the intro.]


For the past seven weeks I’ve been telling you how awesome this philosophy is.  But it can’t be all good, can it?  No, of course not.  There are some downsides, and it’s only fair to point out what they are.

The first question that gets asked a lot is, if this is so cool, why doesn’t everyone do it?  My first answer is, this ain’t the way to get rich, and a lot of people seem to want that out of a business.  To be more explicit, I believe that you can use these techniques to build a very successful business, and the business will make a lot of money.  But not you personally.  There is a lot of sharing built into this model, and some people don’t like to share.

The second most obvious answer is that it’s hard.  It takes a lot of work to do all these things, especially since you’re going against the grain.  A lot of people will tell you you’re crazy.  Sometimes the talent you want to attract won’t be able to handle your “weird” business practices.  If you need to attract venture capital, you almost certainly won’t get it, or else you’ll have to compromise the model to do so.  People may applaud mavericks in public, but in private they want to hear the same old shit that’s “worked” for centuries.  They don’t hear it, their pocketbooks snap shut.  So following this philosophy is not going to be a walk in the park.  Valve puts it thusly:

... it’s really hard.  Mainly because, from day one, it requires a commitment to hiring in a way that’s very different from the way most companies hire.  It also requires the discipline to make the design of the company more important than any one short-term business goal.   And it requires a great deal of freedom from outside pressure—being self-funded was key.  And having a founder who was confident enough to build this kind of place is rare, indeed.1

Notice how I put “worked” in quotes when I talked about the business practices that are considered tried and true.  This is because I don’t feel that those practices do work, in the long-run.  Of course, your average venture capitalist isn’t in it for the long haul.  There’s a fairly short window where they build the business up, then they sell it or go public, make themselves a tidy sum, and proclaim the process a success.  How often have you seen advice on planning your exit strategy when starting up your business?  If that’s your goal, this is definitely not the method for you.  It won’t work, first of all.  But secondly, it’s contraty to the spirit of the whole thing.  What happens to the poor employees after you’ve made your millions and absconded yourself off to the Caribbean?  The “tried and true” business practices may work for the venture capitalists and the founders looking for an exit strategy, but they don’t work for the employees, and that’s what this is all about.2

In fact, this methodology is pretty crappy at any short-term goals.  Giving employees the freedom and latitude to explore their own ideas means not being able to predict where they’re going to end up with any great accuracy.  On Valve’s list of “What is Valve Not Good At?”, number 5 is: “making predictions longer than a few months out.”3  You’re going to have to accept a little short-term volatility in exchange for long-term stability.

And, of course, never forget what I said at the very beginning: none of this is a substitute for having good sales and marketing.  You still need that stuff.  Only now you need to find salespeople willing to sign up to your crazy ideas on culture.

Can this work for all kinds of employees?  Hard to say.  My experience is primarily with technical people, mostly with managing programmers.  Valve and Netflix (and Google) are the same.  Netflix even draws a distinction explicitly:

In procedural work, the best are 2x better than the average.  In creative/inventive work, the best are 10x better than the average ...4

On the other hand, SRC, who is often credited with starting the move toward financial transparency and is certainly a proponent of employee ownership, is a manufacturing business, and Zappos5 is primarily a customer service business, so that at least gives us some belief that these are ideas that can be put to use regardless of what type of workers you primarily employ.

It’s also fair to note that most of my employees were doing hourly billable work.  If you’re charging your customers by the hour, it’s much easier to sell your employees on getting paid by the hour.  We experiemented with variations on the hourly pay—specifically a “salary bank,” where employees still got paid hourly, but that pay went into a virtual account from which they drew a regular salary—to help alleviate concerns over paycheck instability.  But it’s admittedly a harder sell to pay modern workers hourly when you’re not charging by the hour, and it makes determining profit figures (for calculating bonuses) tougher too.

The final question, of course, is “can it scale?”

Both Netflix and Valve are concerned with this question.6  As well they should be: according to Wikipedia, Valve has 400 employees and Netflix has 2,348.  SRC has 1,200.  Google has 53,861.  So at least some of these ideas actually are scaling.  Of course, no one is doing all the things I propose here, so I can’t answer the question definitively.  And even those success stories have their flaws: at least half of the things on the aforementioned “What is Valve Not Good At?” list are scaling problems.  But hiring high-performance employees and keeping them motivated (not to mention deliriously, ecstatically happy) goes a long way toward solving pretty much any problem—because the employees will solve the problems for you.  And I have no reason to believe scaling problems are somehow an exception to that.

But there is actually another question, one which might be the most interesting of all.  Would I use this philosophy again?

Well, in part that question devolves into “would I ever want to start my own business again?”  I’ve ruminated on this question before, and I didn’t come to a firm conclusion.  So I’m not sure about that aspect of it.  But I can say with absolute certainty that if I were to do it again, I would definitely use the Barefoot Philosophy.  The one thing that my experience taught me which I hold more dearly than any other lesson is that it is possible to create a company where the employees have fun, value their customers, focus on the bottom line, and still love coming to work every day.  It’s hard, but it’s possible.  And, once you achieve it, those same employees will fight fiercely to keep it going.  There will be never be a need to inspire them; they’ll show up that way every day.  There will never be a need to have them fill out surveys trying to ascertain their satisfaction; you’ll see it in every one of their smiling faces.  There are many things I do not miss about running my own business, but that one I do miss.  A lot.  Almost all my former employees are three thousand miles away from me now, so I rarely get to see them.  I miss seeing those expressions of delirious, ecstatic happiness that told me that, no matter how bad the stress was, it was all worth it.  So far, I haven’t found a place that could replicate it.  I want to see it again, that transportive joy to be at work with people you love, doing work that that you value, with respect, trust, and the freedom to make things happen.  I want to see it badly.

Perhaps one day I will.


Part: << 1 2 3 4 5 6 7 8



1 Valve Handbook for New Employees, page 49.

2 In fact, I just read an article that shows me that at least some tech entrepreneurs are starting to understand the downsides of the exit strategy, even for themselves.

3 Valve Handbook for New Employees, page 52.

4 Netflix Culture: Freedom & Responsibility, slide 36.

5 I didn’t go deeply into the Zappos business philosophy, but it’s focussed on employee happiness.

6 Netflix Culture: Freedom & Responsibility, slide 76, Valve Handbook for New Employees, page 42.

Sunday, April 21, 2013

The Barefoot Philosophy: What Employees Want


[This is part 7 of an 8 part series: The Barefoot Philosphy.  It is based on my experiences as the founder of a business—Barefoot Software—which I ran for 12 years.  Please start with the intro.]


We’ve described all the cornerstones of the Barefoot Philosophy.  So, when you put it all together, what does it all mean?

That’s a tough question.  As I say, at the time I was involved in “the Grand Experiement.”  I was interested in proving a bunch of people wrong, and making a bunch of other people happy, and providing a kickass workplace (and a comfortable living) to as many people as I could manage.  I didn’t look much beyond that.

Now that I’ve had time to reflect, and now that I’ve gone back to working for others, and had a chance to find a few not-so-terrible (if still imperfect) workplaces to compare against, I think I can finally put my finger on what it all means.  I think that all employees want three things out of their jobs:

  1. Respect
  2. Trust
  3. Freedom

And, when you think about it, those three things are not so much to ask.  They’re essential to basic human dignity, in fact.  But they’re mighty rare in today’s corporate workplaces.

Of course, none of those things can be unconditional.  Respect and trust must be earned; it isn’t just handed out to anyone who walks in the door.  Freedom is not absolute: it doesn’t mean that anyone can do anything they want.  There are caveats aplenty with all three.  But let’s consider each one briefly.

Respect means you listen to what people have to say.  In my line of work, we’re talking about programmers, or other technical professions.  In general, these people are highly trained, and very well-compensated.  In other words, you’re paying them a shit-ton of money.  Why would you not listen to them?  You don’t always have to do everything they suggest.  (In fact, they wouldn’t respect you if you did that.)  But when you ignore them, you make them crazy.  They’re not going to be content with just earning a bunch of money and not caring whether you ignore their highly trained advice.  And if they were content with that, why would you want people like that working for you anyway?

Trust means you believe that people want to do their jobs.  You don’t stand over them to make sure they’re doing it.  You don’t micromanage.  You don’t tell them they can’t work from home when they need to, or when they just feel like it.  You don’t insitute silly policies to try to control them.  You don’t ask them to justify every hour of their day.  I left my last job because of lack of trust, and, when I leave my current job, it will be for the same reason.  So if you’re trying to figure out how much trust is going to cost you, better factor in how much distrust is going to cost.

Freedom means giving people latitude to pursue their own ideas.  How can you expect to have any innovation without allowing freedom?  Google is probably the leader in this particular area, with their formalized “20% of your time on personal projects” policy, but very few companies have followed that lead.  Trying to direct the every move of your employees is doomed to failure on so many fronts: it’s distrustful, as we already covered, and it takes up way too much of your time.  Don’t you have better things to do?  And, in the end, you close off the avenues of exploration that lead your company to new and exciting places ahead of your competition.

You want highly motivated employees.  “High-performance people,” as they are referred to both by Netflix and Valve.  In fact, both the documents we’ve been dissecting contain this exact phrase: “high-performance people are generally self-improving.”1  In other words, the best thing you can do to encourage these employees is just leave them the fuck alone.  As Netflix points out (emphasis in the original):

Responsible people thrive on freedom, and are worthy of freedom.2

What would you rather have: people that need constant coddling, or people who will take initiative, innovate, and get things done?  If you want the latter, you have to give to receive.  And what you have to give is respect, trust, and freedom.

And beware of rules.  Policies, and guidelines, and structure.  It has a tendency to multiply uncontrollably; don’t let it get a foothold.  We already talked about what what Valve thinks of corporate structure.  Netflix is more blunt:

Process-focus drives more talent out3

All those little rules and policies are going to drive your top employees—the ones who think out of the box and aren’t willing to be constrained by your rules—absolutely batshit crazy.  To people who think Netflix’s policy on vacation tracking (“there is no policy or tracking”) is insane, they respond:

There is also no clothing policy at Netflix, but no one comes to work naked

Lesson: you don’t need policies for everything4

Think about that for a minute.  I know, it sounds flip—it sounds like it’s supposed to be cute, and a little amusing, but not to be taken seriously.  But actually think about it.  Do you need to tell your employees not to come to work naked?  No?  Now go back and think about how many of the company policies you do have implicitly treat your employees like idiots.

In my experience, too many managers think their employees incapable of getting anything done on their own.  Even if they don’t believe that consciously, their actions scream it.  This why they come up with artificial deadlines, and guilt trips, and threats, and austerity policies.  These things are designed to put pressure on employees in order to get them to complete their work.  But these things are stupid: properly motivated employees don’t need pressure to do their work.  They want to do the work.  Now, perhaps you’re not properly motivating them (although that’s what the last 5 posts have been about, so you really have no excuse at this point).  But that’s not their fault.  It’s yours.

The only “pressure” I ever put on my employees was to foster some competition amongst them.  And even then I was very careful.  What you want is constructive competition, not destructive competition.  What’s the difference?  Simple:  Destructive competition is working hard to look better than the next guy.  Constructive competition is working hard to be better.  Looking better is most easily achieved by making the other guy look worse.  Being better requires self-improvement.  Merit-based pay and open pay rates and anytime raises and self-forming teams foster constructive competition.  Calibration and empty titles and infrequent compensation rewards and salary secrecy foster destructive competition.

At Barefoot, employees had a workplace that they valued.  They would do anything to protect that.  They understood the financial situation well enough to know how to protect it.  They knew where they needed to save money, and they knew exactly how valuable each customer was.  They fought to keep those customers: to keep them happy, to deliver top value, to go above and beyond and add personal touches.  When there was no work, they didn’t get paid, so they did everything in their power to make sure the work kept coming in.  I never had to stand up at a company meeting and remind everyone that it was their job to make the company successful; they knew it.  It was their company, after all.  There was no one “above” them whose job it was to take care of those things; it was their job.  Each and every one of them.  Every single one was a benefactor of the Grand Experiment, and they would do anything to keep it from failing.

I thought I was creating a utopia for workers.  It turned out I was creating a productivity juggernaut.

Next week we’ll climb down off our high horse and look at whether there are any downsides to this philosophy.


Part: << 1 2 3 4 5 6 7 8 >>



Sunday, April 14, 2013

The Barefoot Philosophy Cornerstone #5: Employee Ownership


[This is part 6 of an 8 part series: The Barefoot Philosphy.  It is based on my experiences as the founder of a business—Barefoot Software—which I ran for 12 years.  Please start with the intro.]


It’s time for the final cornerstone.  (Yes, I know that makes five cornerstones.  It’s sort of a pentagon thing.)  Merit-based pay and no salaries gave our employees a sense of financial independence and responsibility.  Financial transparency gave them the knowledge of how to run the company themselves, and no org chart gave them the ability to do so.  Now they just need the motivation to do it.

So give them the company.

I can’t tell you how many times I’ve heard people running a company say that they were frustrated because they couldn’t get their employees to act like this was their company.  I can, however, tell you how many times I’ve heard people running a company suggest that they solve this problem by actually giving their employees an ownership stake in the company: zero.  It’s done, obviously; I started out with cornerstone #1 talking about Jack Stack and SRC, which is an employee-owned company.  But none of the corporations I ever worked for considered it.  Occasionally, stock options were offered, but it’s just not the same thing.  Giving up ownership means giving up control, and giving up equity, and those are two things that most entrepreneurs just don’t cede.

Of course, I’m not most entrepreneurs.

I say, if you want your employees to act like this is their company, make it so this is their company.  Here’s how we did it at Barefoot.

When you first came to work at Barefoot, you were a probationary employee for 90 days.  At the end of that period, you were awarded one share of stock.  Not a stock option; an actual share.  It wasn’t much, but you were now a shareholder.  You had the right (and, again, the responsibility) to vote at the annual shareholder’s meetings, where we elected board members and occasionally approved tweaks to our articles of incorporation.

Of course, there isn’t much you can do with a single share of stock.  We were always privately held, so you couldn’t trade it on the open market.  You could sell it, but only to another shareholder—never to an outsider.  You could sell it back to the company for the current stock price (set by the board),1 although the company could decline to buy it if it was economically infeasible.2  You could vote it, but one vote didn’t carry much weight.

But every year, at the end of the year (before the annual shareholder’s meeting), every current employee received another stock bonus.  This bonus was based on how long you had been with the company, and whether you held multiple roles (e.g., employees got stock, and board members got stock; if you were both, you got double shares), and a few other factors.  This stock distribution was mostly additional stock added to the general pool, so it diluted everyone’s percentage, but then everyone also received more stock, and in practice everyone always came out ahead.

Of course, the majority shareholder was me.  But, every year, I proxied the majority of my stock to the employees.  I split the proxies evenly amongst them, based on their current percentages.  So if you owned 10% of however much stock I didn’t own, you’d get 10% of the proxy.  I kept enough for myself that I was still a significant factor in the votes, but never so much that no one else’s vote mattered.  It would take a pretty serious coalition to go against me, but it was possible.

Also, every year I donated a chunk of my stock back to the company, which it used for part of the new shares it distributed.  I was slowly handing my company over to its employees.  I did it slowly and carefully, because I wanted to make sure I had the system right before I lept into it; the ability to squash any vote in an emergency situation was my safety net.  But, as the company finally ended, I was right on the verge of becoming a minority shareholder in the company I founded.

Is this crazy?  Jack Stack apparently doesn’t think so.

I don’t own 100% of SRC. I own 19%. The rest is owned by the employee stock ownership plan and various employees. I could have had more, but that was plenty for me. Not wanting to be accused of being greedy probably had something to do with it. But more important, I didn’t want to be alone. I was going to be leading the charge up the hill. I wanted to make sure that when I got to the top of the hill and turned around, there was a bunch of people coming with me.3

Netflix has a different approach.  Employees can choose to receive part of their compensation as stock options (not stock).4  Netflix points out that this lets the employees decide how much they want to invest in the company’s future.

But I didn’t want my employees to have to decide that.  I didn’t want them deciding that they didn’t care, or not having the money to invest.  So I just gave them the stock, whether they liked it or not.  I didn’t say to them, “act like this is your company.”  I said, “here: this is your company now.”

Now you see why I never worried about my employees ripping me off, or doing something that would be detrimental to the customers.  They would have been ripping off themselves; it was their customers they were looking out for.  With great power comes great responsibility, as the mantra goes, and I put that to work for my company and my customers.  Which were now my employees’ company and my employees’ customers.  Their reputation was on the line as much as mine was.  It was their money as much as mine that they were playing with when they made financial decisions.  They were not only earning top pay rates, plus a commission-based bonus, but any profit left over after all that was partially theirs too.

Did it work?  Well, I can prove that it did.  Because I had employees who would do some work for free.

In any company, there’s work that needs to get done that it just isn’t practical to pay someone to do.  Typically, the founders of the company do this work themselves.  This is why starting a business is such a time sink: you not only can’t pay anyone else to do it, you can’t really afford to pay yourself to do it either.  So it’s just extra work that somebody has to do after hours.

But, at Barefoot, there were no salaries.  Remember: if you’re working, you’re getting paid.  If that extra work was going to get done, either someone had to get paid, or ... someone had to agree to work for free.

Naturally, I was constantly putting in free work.  But I certainly never expected any of my employees to join me.  And, yet, that’s exactly what happened.

At Barefoot, you were allowed to work for free on company business as often as you liked.  You would still run a timer and track that time; you just attached the timer to a special internal “customer” which guaranteed that that time never hit your payroll.  At first, it was nothing more than a mark of pride: self-forming teams might take it into consideration when trying to decide between two close candidates (go with the person who’s more dedicated to the company), but it was mostly just for bragging rights.  We did eventually start using that time for other things, though: put in enough unpaid time and the company would start covering part of your health benefits; put in even more, and you’d increase the amount of stock you got at the end of the year.  We had to start adding these perks, because there were so many people doing it towards the end there that I was starting to feel guilty about it.  So if you ask me if know that my employees felt like this was truly their company, I can answer without a single doubt or hesitation.  Yeah, they knew it was theirs.

I set out to make my business employee-focussed.  To make it employee-owned was a natural outgrowth of that.  I never questioned whether that was the right thing to do or not.  I never meant to get rich, so I didn’t care about giving up the money.  I never wanted to be in charge, so I didn’t care about giving up the control.  I just wanted to love coming to work every day, and I wanted my employees to love it too.  The fact that it made my company financially stronger—because all the employees were now focussed on making their company run more smoothly and earn more money—was just a bonus, as far as I was concerned.

That’s all five cornerstones.  Next week we tie everything up and put a little bow on it.


Part: << 1 2 3 4 5 6 7 8 >>



1 In fact, technically you had to offer to sell it to the company first.  That is, the corporation retained “right of first refusal.”

2 Technically the company could decline.  In practice, I don’t think that ever actually happened.

3 “Being the Boss”, Inc., Bo Burlingham, October 1989.

4 Netflix Culture: Freedom & Responsibility, slides 103, 110.

Sunday, April 7, 2013

The Barefoot Philosophy Cornerstone #4: No Org Chart


[This is part 5 of an 8 part series: The Barefoot Philosphy.  It is based on my experiences as the founder of a business—Barefoot Software—which I ran for 12 years.  Please start with the intro.]


Valve has a more colorful phrase for this: “Welcome to Flatland!”1  Either way, it amounts the same thing: there’s no real corporate structure, no titles, no heirarchy.  No org chart.

For Barefoot, this was an oversimplification.  The truth was, we had managers, just like anyplace else.  But your position as a manager was on a given project.  Today you might be a manager; tomorrow you might be back to a grunt coder, and the person you were managing yesterday is now your boss.  Even more weirdly (well, it was weird for some people), you might be both a manager and a managee at the same time, if you were working on two projects at once (which happened sometimes).  So we actually had titles, and positions, and structure; it was just fluid, and not really relevant in the bigger picture.

There are a hell of a lot of advantages to this approach (just as there are for the other cornerstones).  For one thing, it gives people a chance to try out new things.  Maybe you think you’d like to try your hand at project management.  In a corporate system with a traditional org chart, you’d need to give up your current job and try out for a new one as a project manager, possibly in a whole different department, with a whole new boss, and all new politics to learn.  At Barefoot, if you wanted to try out being a project manager, you just had to convince a self-forming team that you could handle the job, then you did it for one project.  If you liked it, and were any good at it, it would be easy to convince the next team to let you do it again.  If you didn’t like it, no worries: you never had to do it again.

It also further reinforces the theme of equality.  There were many occasions when I was working right at the bottom rung of a project team.  Sure, I was often the boss, but I was just as often (okay, almost as often) working for one of my employees.  See, we’re all the same here.

In fact, our positions within the company were so fluid that we actively discouraged nesting.  That is, no one had their own desk.  All the computers were basically just terminals: all your files and configuration and all the technical bits that make your workstation yours were on the network, so you could walk in, pick any old computer, and just get to work.  Of course, this wasn’t ideal; some people felt a bit too transient, not having a permanent place to call their own.  I notice that Valve solves this problem rather neatly: everyone has their own desk, but all the desks have wheels.2  Instead of moving from desk to desk, you just move the whole desk around.  If I were going to start a new company today, I’d totally steal that idea.

What’s wrong with corporate structure?  I can’t say it better than the Valve handbook:

Valve is not averse to all organizational structure—it crops up in many forms all the time, temporarily. But problems show up when hierarchy or codified divisions of labor either haven’t been created by the group’s members or when those structures persist for long periods of time.  We believe those structures inevitably begin to serve their own needs rather than those of Valve’s customers. The hierarchy will begin to reinforce its own structure by hiring people who fit its shape, adding people to fill subordinate support roles. Its members are also incented to engage in rent-seeking behaviors that take advantage of the power structure rather than focusing on simply delivering value to customers.3

If you’re completely wedded to the idea of the org chart, this may seem bizarre to you.  What about performance evaluations, you may ask?  With no bosses, who evaluates the employees?  Well, the way we did it was that evals were done quarterly, and were conducted by three of your coworkers.  One of the employees had to be someone who had managed you that quarter, unless no one had.  One of the employees had to be someone you had managed that quarter, unless you hadn’t managed anyone.  And the final employee had to be someone who had worked alongside you in a parallel position.  (If you were only at the top or bottom of your projects, we filled in with another of your reports or another of your parallels, as appropriate.)  Nowadays we’d call that “360-degree feedback”.  At the time, we weren’t aware of that term; this just made sense.

Even more crucially: without organizational structure, how are decisions made?  Well, generally we made decisions by concensus.  This is easier to arrange than you might think.  But, if we couldn’t reach concensus for a project decision, the manager for the project made the call (after all, that’s what they were there for).  But what about decisions on the company’s future in general?

We’ll have to start with the staff meeting.  Staff meetings at Barefoot were held monthly.  All employees were required to attend (contractors could attend if they chose, but didn’t have to).  It was more than just required attendance though: it was required participation.  Participation in staff meetings was considered akin to voting: not just a right, but a responsibility.  Every staff meeting followed a simple, three-point agenda:

  1. What are we doing right?
  2. What are we doing wrong?
  3. What can Barefoot do for you?

Point #1 is #1 for a good reason: always lead off with the positive feedback.  Get everyone in a good mood, give out those well-deserved kudos right off the bat.  Recognition is important.

Point #2 is where we did our soul-searching, what some businesses will call a “retrospective” or a “post-mortem.”  Only this isn’t for a particular agile iteration, or even for a whole project.  This is for our everyday, day-to-day business activities.  And we resisted the need to rephrase it to “what could we do better?”  If we’re wrong, let’s admit we’re wrong and not try to couch it in softer words.  More important that identification of the wrongs, however, is figuring out how to do better in the future.  This is really hard to do.  In every other corporation I’ve worked with, this has always been the stated goal, and it always devolves into the blame game.  Since I’ve moved from the East Coast to the West, it’s changed from open finger-pointing to an odd little dance where we try to point out that it wasn’t our fault while carefully not offending whosever fault it actually was, but that’s not materially different.  Only at Barefoot have I seen people actually put in the effort to avoid discussion of whose fault it was (which, after all, doesn’t really matter, as long as they’re aware of their mistake) and concentrate on how to make it better.

Point #3 is simply a verbal suggestion box.  What are we not doing at all that we should be doing?  What can the company do to make you a little happier?  What new policies would you like to see?  What new resources would you like to see the company buy?  (And here you can see how the financial transparency comes in handy; every employee knows that they need to—and how to—figure out whether the company can afford something before suggesting that we buy it.)

Everyone is (or at least can be) involved in every decision.  Valve puts it more succinctly: “it’s your job to insert yourself wherever you think you should be.”4  Now, we also had meetings of our executives, and we also had board meetings.  But employees were always invited to attend those too, if they liked, and offer their input.  (And sometimes employees would get elected to the board and participate even more directly.)

I’ve likened my own role at Barefoot to open-source “benevolent dictators” such as Larry Wall or Linus Torvalds.  At the end of the day, it was my company and I could make the call if I wanted to.  But everyone got a chance to contribute, and really be heard, and actually influence the direction, if they so chose.  And even my benevolent dictatorship was open to change, as we’ll see next week.

Lack of an org chart meant that everyone was responsible for the success or failure of the company.  And everyone took that responsibility very seriously.  Next week we’ll look at the final piece of the puzzle that explains why.


Part: << 1 2 3 4 5 6 7 8 >>