How to neutralize office politics

nixon-i-am-not-a-crookEveryone I know hates office politics. Most folks can’t define it, but, in the oft-quoted words of Supreme Court Justice Potter Stewart, they know it when they see it. I’ve gotten to the bottom of what it is that we all actually hate, and I even have some easy to understand steps to take to neutralize office politics once and for all.

Politics in the world

Let’s start by trying to simply define “politics”. The typical definitions deal with politics as the mechanism of collective decision making, and politicians as the executive agents within such a system. There’s nothing inherently worthy of our hatred in those pure definitions. For politicians in all but the smallest jurisdictions, the voters outnumber a politician so vastly, most of them cannot possibly know the politician personally and perception comes to matter more than the actual facts.  At that point, since it’s mostly a game of perceptions anyway, and if you’re guaranteed to have detractors no matter what, it’s best to simply embrace the game and behave in ways that strengthen positive feelings toward you with your supporters, even if it means stronger negative feelings among your detractors. Simplistically, if 51% of people have a strong to moderate positive perception of you, it doesn’t matter how much the other 49% of people hate you—you’re going to get (re-)elected, which is the entire reason you’re in the game to begin with.

Although I’m hoping that there is some good way to pull politicians back to selflessly fighting for justice and progress, Clay Shirky predicts that technology will make the asymmetry of fame even worse, which probably means we’ll have to make some very fundamental changes to the incentives around politics before we can get politicians to behave like real people instead of ruthless game theorists.

Politics in the office

“But wait!”, you may object—that analysis doesn’t map very cleanly to the workplace. After all, in the workplace, we don’t keep score at all like we do in the politics of government—instead of voters who have collective and indirect power to elect us or oust us, there are individuals who control our destiny much more top-down in the form of hiring, firing, and directing. While it’s certainly true that the scoring system is much different, it doesn’t change the human tendency to attempt to game the scoring system. In fact, with the hierarchical scoring system that exists in the office, it’s even easier for a ruthless game theorist to determine with whom he should focus his perception-management efforts!

Since one’s bosses and other senior colleagues have a disproportionate amount of control over one’s advancement and influence, it doesn’t take a game theory expert to figure out whose perceptions to spend time and effort managing and whose perceptions one can afford to neglect.

For those whose perceptions are not being managed, the office politician is perceived at best as an overrated, underachieving brown-noser or, more poisonously, as a conniving jerk. For those (probably managers) whose perceptions are being managed, the office politician probably looks like he is always doing exactly the right things in the right ways, is getting great results on everything worth measuring, and is otherwise a great guy who ought to be given even more responsibility.

The office politician’s legacy

So is the office politician actually Captain Accomplishment? or is he a poisonous jerk. In the short term, he probably really is getting great results—the fact that he’s improving all of the metrics that he’s been asked to improve isn’t surprising. After all, by virtue of his playing at politics, he’s already indicated that he’s at least a passable game theorist and what are typical business metrics but another scoring system to be gamed?

In the longer term, the respect that he’s lost from the group to whom he isn’t pandering (his direct reports and peers), will begin to blow back. His team will start spending time maneuvering around him, they won’t rally like they used to in tough times, and they won’t think twice about jumping ship for other opportunities—all because they’re collateral damage in the workplace politician’s campaign to manage perceptions upward.

And besides, nearly every one of us knows from direct experience that the office politician is a total downer. The fact that he can be so awful and still get every promotion contributes to a jaded outlook on corporate life worthy of a film noir gumshoe.

How to neutralize office politics

The good news is that for the same reasons that it’s easier to get started in office politics than in government, it’s easier for an organization staffed with sufficiently self-aware managers to spot and mitigate the impact of those engaged in office politics.

Here’s how:

1. Value Openness and Transparency from every level

Remember that the game of the office politician is one of asymmetric perception management. Unlike in the politics of government, there are very few companies that are so large that politicians are abstract, remote actors that have to be judged through the thin context of sound bites. Additionally, while the values and motives of the collective behavior of the electorate are complex emergent phenomena that can hardly be predicted, let alone fully understood, the values and motives of the relatively few central decision makers can be observed and reasoned about if they’re willing to participate.

Most organizations don’t prioritize making decisions in the framework of transparent values and motives because it’s easier for senior leaders to simply publish decisions in the form of an opaque and capricious decree along with a “trust us, we’re smart and we’re fair, but we’re too busy to elaborate”.

In a transparent organization that values openness, it’s both possible and extremely healthy for central decision makers to communicate early and often about the organization’s core values—what behaviors and results should those outside the inner circle expect will be recognized and rewarded? Why are those who are installed into leadership positions chosen and how will they be measured?

Making even a small, but sustained, investment in outward flow of candid information will help tremendously with making decisions more understandable and predictable, and keeping upward and downward perceptions aligned. And it’s really just a matter of making it a priority for senior leaders to put in the effort.

2. Make sure feedback flows up at least two levels

In addition to communicating more openly downward, those near the top of the organization should make sure that candid information can flow upward as well. In an organization where everything a senior leader knows about their extended organization comes to them from only one level down, there is opportunity for perception management to emerge. If open communication downward brought downward perceptions closer to matching the complex reality of difficult situations, open communication upward is even more important in aligning upward perception with the spin-free truth. As a senior leader takes time to get candid feedback from those in his organization and even his organizational nephews and nieces, he should gather as much perspective on as much of the organization as possible—the primary goal being to learn how things appear from below, and sideways. He should further take the time to square what he’s hearing with what he hears from his directs and his peers. The political incentives are such that he and his peers are almost sure to be getting heavily biased information from their directs, but the truth surely lies somewhere in between.

3. Eschew zero-sum scorekeeping

With the first two steps addressing the cases where perception doesn’t quite capture the truth, there’s still at least one failure mode in the incentive structure that exists around a typical organization—namely that of zero-sum scorekeeping. Going back to the theme of politics-as-game-theory, if it’s possible to improve one’s standing by driving others down, the ruthless game theorist will occasionally make such a play. As a manager, this behavior can be moderated by encouraging collaboration—i.e. encourage folks in your organization to construct stories of the form “I and my peer over there worked together to do X” or “these specific individuals on my team improve Y—I simply enabled it”. Zero-sum scorekeeping discourages both of those templates, but if your organization makes it a conscious point to recognize and reward them specifically, it’ll go a long way to encouraging universally beneficial behavior inside your well-communicating company.

Now for the hard part

So you’ve read my rant about what defines office politics, what causes it, and even three easy-to-understand steps that can be taken to neutralize it. But the hard part still remains—actually executing on this theory. Remember that the reason office politics manifests itself in exactly the same ways in nearly every company above a certain size is that it naturally arises from the way we humans operate in an organization. Busy senior leaders find it difficult to make time to communicate downward or to spend time gathering high-quality feedback from deep within their organizations. It also takes effort for them to their directs to spend effort on making things better together with their peers. None of this behavior is natural in a typical organization, and may even be a net loss for the first to adopt them in the short term.

If you’re an individual contributor, ask for a monthly 30-minute 1:1 with your boss’s boss (perhaps clearing it with your boss first if you’re in that kind of organization). Make sure they hear your perspective on how things are going both in your immediate team and in peer teams throughout the organization. Make sure you ask questions about what thinking went into the recent big decisions that affect your daily work. Make sure they understand that you’re representing other opinions as well, and encourage them to get the answers out on their own so that everybody understands their perspective.

Whether you’re a senior leader, an individual contributor, or somewhere in between, the best way to make sure that your office transcends the noise of workplace politics, is to foster a company culture that values Openness and Transparency in all directions and recognizes and rewards collaborative behavior instead of falling into the usual lazy traps of communicating as little as possible and enabling zero-sum competition.

Dreading Apple’s upcoming sandboxing

Screen Shot 2012-02-16 at 11.55.08 PM

[Update: Apple gave us a 3 month reprieve. I'm still dreading this, though.]

I’m not looking forward to Apple’s impending move to sandbox all apps delivered through the Mac App Store. At the very highest level, I understand the technical motivation for doing it—one of the biggest reasons people don’t download software is that it’s nigh on impossible to know what software one can trust. And sandboxing makes the already well-policed App Store into an environment worthy of nearly implicit trust. The bottom line is that barring significant security defects, a sandboxed app just can’t do nasty crap to your computer. (Prior to the sandbox, an app only has to trick you personally, not your OS, before getting to do arbitrarily evil things.)

Unfortunately, like many well-intentioned technologies, sandboxing comes with some trade-offs. The biggest one for me in this case is that certain Mac App Store software that I have purchased and love simply can’t continue to work. Case in point: Flexiglass. I absolutely love the powerful desktop layout management features that it provides. And I enthusiastically purchased it through the Mac App Store so that I wouldn’t have to worry about creating a user account with yet another software vendor and remembering how and where to go to download it when it’s time for a computer upgrade. None of those good parts matter because the application fundamentally needs deeper access to the system than even the most generous application sandbox could possibly provide. This means that I’ll have to switch to directly downloading Flexiglass from its author’s web site, if they even have a way for me to transfer a record of my purchase over from the App Store.

Another thing that isn’t yet clear is if Apple’s first-party App Store apps will be granted additional entitlements. There doesn’t appear to be any way for third party applications to allow plug-ins written by other developers. And I can’t even imagine how something as complex and permission-intensive as XCode could possibly do its job without special immunity from sandboxing restrictions. (There’s absolutely no doubt in my mind that now that XCode ships via the Mac App Store that it’ll continue to ship that way—the experience is just too good. And getting so much better with each release.)

So I’ll probably continue to love the improvements that the App Store makes when it comes to maintaining my software collection, but I really don’t think that I’m going to love sandboxing, at least in its first incarnation when it hits next month. In the end, though, I remain hopeful that we can find some sort of happy place here—Apple is nothing if not stubborn and opinionated, but they have showed at least a few times that they’re capable of working with developers when their usually well-intentioned policies get in the way of actual user experiences.

Will they compromise on sandboxing? (Can they compromise on sandboxing and still manifest the ultimate PC security that they’re fighting for here?) I’m not sure. But I’ll be watching, with baited breath, as this story unfolds. I can hardly wait to see where 2012 takes us in the tech world!

Python package management

Like most good geeks, there are a few things about which I’m a little bit obsessive-compulsive. The desire to bring order to chaos is probably the same thing that attracted me to software in the first place.

One of my strongest compulsions is to want to keep my hard disk squeaky-clean. Don’t get me wrong—I’m really bad at it just like everyone else. But I like to feel like I at least have control over what’s on my hard disk. Every time I install a new piece of software, something inside me worries about whether it added some untracked file that won’t be automatically cleaned up if I ever decide to uninstall the software.

I remember back in the old days, when this compulsion was even more, umm, relevant due to hard disk size constraints. The best you could do for installing the latest whiz-bang software from freshmeat.net was “./configure.sh && make && make install”. Good luck figuring out what files that sprinkled all over your file system, when the time comes to later clean them up by hand.

The General Rise of Package Management

The good news is that things have come a very long way since then. Most Linux distributions have package managers that can conjure up almost any software that you might want with just a few keystrokes. With approximately the same number of keystrokes, you can reverse the installation and rest assured that your disk has been restored to at least close to its initial state.

And it’s not just operating systems that have package managers these days. It’s becoming a de facto requirement for programming languages to have a solid package manager as well. Perl has CPAN, C# and the other .NET languages have NuGet, Ruby has gem, and Python has PyPI.

Every perl whiz knows about CPAN—it’s been around for more than 15 years, and is probably one of the largest contributors to perl’s historical success. Same for Rubyists and gem. Hell, most developers of any sort know about those two package managers even if they’ve never touched perl or ruby as languages. On the other hand, it’s shocking to me how often I encounter a python user who doesn’t understand all of the tips and tricks for making the best use of Python’s equally robust package management tools and distribution ecosystem.

Python Package Management, Specifically

Python has had its own package repository for a very long time.

There seem to be two widely used package management tools in the world of Python. easy_install is the better known one for at least two reasons: 1) it has been around longer, and 2) it is preinstalled with nearly every python distribution (for example, it appears to ship with Mac OS, and is available as part of a default python install on Ubuntu 10.10).

Despite its ubiquity, it’s disqualified from receiving my enthusiastic support because it is incapable of uninstalling packages. (Remember how I started this post off complaining about how that shortcoming makes me twitchy?)

Fortunately, there’s a package manager for Python that does support uninstallation in addition to installation. Its name is pip. (It looks like it may be the case that pip is good for other reasons, too.)

Using pip

To get started with pip, you probably first need to install it. To do that, you’ll bootstrap using the package manager that you probably already have installed:

sudo easy_install pip

Now that you have pip installed, you probably want to install a package or two:

sudo pip install simplejson

sudo pip install e

And to uninstall later if you decide you don’t want them:

sudo pip uninstall simplejson

(You should keep the ‘e’ package—it’s very slick! More on this later.)

Uninstalling pip

I don’t really understand why you would want to do this, but because you installed pip using a package, you can use pip to uninstall it:

sudo pip uninstall pip

For bonus points, you can use pip to uninstall easy_install as well. (I understand even less why you would want to do this, but this actually came up on Stack Overflow.):

easy_install pippip uninstall pip setuptools
Other pip tricks
I’ve got a few other Python tricks up my sleeve in pip’s neighborhood (there’s virtualenv, and remember the ‘e’ package above?) which we’ll talk about next time.

Awesome referer hack

I was talking to Roy Leban the other day about how a particular domain registrar of his makes it check-box trivial to redirect from a naked domain (say example.com) to www.example.com, but doesn’t do anything whatsoever to redirect from example.com/someurl to www.example.com/someurl. I was teasing him about needing to get a real domain registrar, but it turns out he has a really slick hack to manage the redirect on the www.example.com side (which happens to be hosted on Google App Engine) since App Engine isn’t cool with naked domains.

What he does is this:

  1. checks the box on his domain registrar to forward from example.com/* to www.example.com/
  2. once the user’s web browser arrive at www.example.com, he checks the HTTP Referer1 header to see if the user came from example.com/something, and, if so,
  3. redirects the user one more time to www.example.com/something based on the Referer (in this case example.com/something).

I’m not sure that solution would have ever occurred to me, but I love it for the hack value.

  1. Merriam-Webster says that should be spelled “Referrer”, but RFC 2068 codified the misspelling “Referer” as the actual header name way too long ago to fix. []

A new kind of Browser compatibility pain?

It’s a pain in the butt to ship a web app that works in all of the relevant web browsers today. It seems that crafting stylesheets that works in all of them at once requires as much specialized knowledge today as writing a compiler did a decade ago.

As the rate that browser vendors are shipping updates keeps getting faster and faster, it’s becoming almost impossible for web developers to keep up. Despite that most of the browsers with fast release schedules are well-behaved and make every effort to be as standards compliant as is practical, each micro-release provides a moving target that requires attention and ongoing effort for each developer to keep in his sights.

As a developer, I’ve certainly been in a situation where someone’s platform changed out from under me, and it didn’t jump to the top of my priority list to fix whichever of my features they broke. Not that my customers care whether it was my fault or a platform vendor’s–I’m sure they were frustrated at me, not at Facebook or Microsoft or Google or Netflix or whoever just made the breaking change in question.

Even Google, who with their Chrome browser, set the bar for frequent, high-quality browser releases, is having trouble keeping up with Firefox’s Chrome-inspired rapid release process. I have two recent examples: 1) the Google Toolbar is not yet compatible with Firefox 5, and 2) Google Docs lost drag and drop support post Firefox 3.6, and they still haven’t fixed whatever broke.

I’m willing to assume good things about Google’s intentions here, and figure that it just isn’t a high priority for them to keep up with the Firefox release treadmill. Surely they’re not being proprietary buttheads and being intentionally incompatible in subtle ways with their competitors’ platforms. After all, that would be evil, right?

As browsers begin to ship faster than ever before in an effort to keep pace with the capabilities provided by iOS and other native platforms, we should, at least in the short run, expect to see much more churn and many more breaking changes (some accidental, some intentional). It’s unfortunate that the churn will be worst in exactly the features that are most interesting and innovative–the features most needed to bring web experiences up to par with their tightly integrated, and much more mature desktop application competitors. (The aforementioned drag and drop into Google Docs is a fantastic example of this.)

I don’t think there’s any perfect short term solution here–I think that we’ll have to continue to trade off which side of the “seamlessly integrated” vs. “web-style application delivery” chasm our projects will be built on. Meanwhile, we know that the browser vendors are (mostly) fighting to make web applications feel as native and integrated as possible, while the native platform vendors continue to snicker to themselves at our browser compatibility pains. Maybe someday we can have the best of both worlds.

Stale blog is stale

Hey, everybody. Been too busy between new kid, move to California, lots of fun work with Cooliris, move back to Seattle, and getting our house cleaned up to make time to get any blogging done. Well, I’m motivated to change that. I’ll have something interesting up by July 1. If not, please hassle me.

A week and a half later

They say adjusting to life with a new baby is hard and mainly due to lack of sleep.  Well, the lack of sleep bit is definitely right, but thanks to many helping hands the transition is going a little bit smoother.  We actually have clean dishes, clean clothes, home cooked food, and can keep our eyes open for most of the day.

Nicholas has been doing great if getting up a bit more frequently than Mommy or Daddy are used to in the middle of the night.  Before he was born, we expected him to be a big baby since we were both over 9 lbs at birth, so we were surprised with his long and lean frame.  In fact, his Grandma T even got him a preemie outfit that he has worn a couple times.  But over the course of the week, he got his first bath, lost his umbilical cord, and is starting to round out a bit.  He has also christened Jennifer into the ranks of motherhood by managing to leak all kinds of bodily fluids onto her and her clothes during diaper changes and feedings. :)   He is a pretty awesome kid and it will be fun for more of the family to meet him.

 

We’re headed home

Everything’s looking good for both Jennifer and Nicholas, and we’re convinced we’ll get twice as much sleep at home as at the hospital (where doctors, nurses, foodservice folks, and even birth certificate clerks are waking us up even if Niko is not).

So we’re headed out. Here are the two who are doing all the work dressed and ready to go:

IMGP6033

Happy zeroth birthday!

Around 6:30 last night, Jennifer was experiencing what seemed to be increasingly serious contractions and suggested that we begin to make our way to the hospital. We wrapped up dinner (turned out she didn’t have much of an appetite by the time food was ready), and then headed up the hill to OHSU around 8:30pm. By 10:30pm, in between contraction-induced grimaces, a resident physician under the supervision of Jennifer’s regular doctor was convinced that Jennifer was definitely in active labor and admitted her to the hospital.

We transferred to a delivery room, moved quickly through full dilation with a well-timed epidural right around where Jennifer started to get belligerent from the pain, and by 2:30am were in the final stages of delivery. At 5:17am, Nicholas Steven Blomquist was born, weighing exactly 7lbs and measuring 21 inches in length.

Having pulled the first non-puzzle-related all-nighter in recent memory, Jennifer and I are absolutely exhausted, but everyone is in good spirits and doing well.

We have been very impressed with the entire OHSU staff, and would like to thank all the nurses, residents, and doctors that have made this experience good so far.

Favorite t-shirt series: Windows Genuine Advantage

20090803-1As it often goes, I managed to get really busy with things other than my blog, and I began to neglect my favorite t-shirt series. The good news is that I had my wife help me take a bunch of t-shirt photos this morning, so I’ll be able to queue up enough to hold us over for a few months.

Today’s shirt is another Microsoft shirt. It’s actually one of my most-worn t-shirts of all time. For some reason I just like wearing it. I think it’s because it goes over well both with my colleagues from my days at Microsoft (“more free swag—wonder where he got it”) as well as with the crowds that don’t tend to like Microsoft so much (“his intent must be irony, right?”). For example, it went over quite well as a humor piece the day I wore it to Open Source Bridge a couple months ago.

The story of how I got it is even a little entertaining. When the Windows Genuine Advantage campaign launched back in the Windows XP days, their marketing team asked for stories on how Windows Genuine Advantage helped me in exchange for a t-shirt. I knew I wanted the t-shirt, but I couldn’t think of any times it actually helped with anything, but despite that I dusted off my creative writing pencil and scribbled up a few sentences. It arrived in inter-office mail a week or two later, and I’ve worn it proudly ever since.