Tue Jun 23 17:37:55 -0700 2009

Sharing values is the most important part of effective collaboration. If you don’t have significant overlap on values between you and your teammates, you’re going to have a tough time getting anything accomplished.

For example: little gets done in Congress when the seats are evenly divided among Republicans and Demoncrats. Lack of synchronization on core principles means endless arguing over the tiniest details. (Whether or not it is a good thing for Congress to be productive - that is, produce a lot of legislation - is a separate question.)

At a startup, sharing values means that the engineers, ops, designers, managers, sales, and marketing all agree about the core principles that drive the company’s grand vision and daily operation. If you’re Google, that means values like it has to be fast. If you’re Apple, that means focusing on how the product makes the user feel above all else.

Programming languages tend to have communities with shared values around them. Python and Ruby are almost identical syntactically, yet they have different values. For example, Python folks prefer explicit over implicit, while Rubyists tend toward convention over configuration (basically, the opposite).

Do you find yourself continually frustrated at work, like you can’t get things done? Do you feel that the people around you don’t care about the same things you do? Then you probably don’t share values with your teammates. (Which means that perhaps it’s time to move on; values don’t change much over time.)

On the other hand, sharing values with your collaborators is an exhilarating experience. Everything seems to flow. It’s natural, easy, fun. It’s you and your team against the world - bring it on.