Egoless Programming #9: Don’t be the uncollaborative coder in the corner.

In 2001, Lamont Adams of TechRepublic chiseled what would become ten commandments of Gerald M. Weinberg’s timeless wisdom: Egoless Programming. Today we’re going to learn its ninth commandment:

Don’t be the uncollaborative coder in the corner.

For those of you familiar with the original commandments, you’ll know this was originally stated: “Don’t be ‘the guy in the room.’” It was high time we degendered this one. Referring to “the guy coding in the dark office emerging only to buy cola,” I thought we should stop talking about the caricature, and redirect our focus to what matters: participating in the collaborative software engineering game isn’t optional.

Here are a few reasons why:

Collaborating will improve your code.

I can’t remember a time my design didn’t improve after talking through a detail with a colleague.

There is a mysterious synergy that often appears when two or more engineers band together to confront a problem. Each engineer brings a unique perspective and tool belt to the chop shop. The solution that emerges represents knowledge and skill that exceeds the sum of their combined offerings.

Collaborating will expand your perspective.

You are most likely not a part of your software’s target audience, so you can’t write software for those humans without spending time trying to understand them.

My most powerful example of this truth was my one stint writing software in retail. During my first week as an architect, I was an entry-level store trainee for two days. Twenty meetings with store subject-matter experts could not exceed the learning I received during those two days.

Collaborating will propagate your knowledge.

You code, and you know things. That knowledge is worth a little to you but a lot to your organization.

Do you want to leave a significant impact on the organization that will endure long past your departure? Your code will have an impact. But the knowledge and dedication to craft that you share with others will leave a legacy.

Collaborating will teach you new skills.

I can remember the exact moment I started learning many of my most frequently-used skills. Because I learned them as a side effect of collaborating.

People love to talk about their favorite tools and techniques. I never hesitate to ask the “hey, what’s that?” question when working on a task with a colleague. Those moments are seared in my memory.

Collaborating will improve your life.

My code rarely has the ability to cheer me up when I’m down. But the friends I’ve made collaborating absolutely do.

I really love writing software. I do. But when I found myself in a paralyzing depression, I didn’t feel like writing anything. I’m forever grateful for the friends I’ve made over the years simply bumping into each other as we played this collaborative game. They helped pull me through.

Collaborating is 100% in your self interest, if not your comfort zone.

I skew to the introverted end of the intro/extro scale. Being social absolutely exhausts me. Being collaborative only amplifies that.

But I’ll never stop collaborating.

Previous
Previous

Egoless Programming #10: Critique code instead of people

Next
Next

What I Learned Helping My High School Senior with a Physics Project