Skip to content

Building Things With Other People

One of the most common errors in thinking is to make the assumption that others know what you know, and that they will do things the way you do them. After all, yours is the right way... right?

This is a problem I have struggled with from time to time, and my understanding of it has changed somewhat recently.

Feeling the Frustration

When I was first thrust into a leadership role as a software engineer, I found myself constantly frustrated with the way other engineers went about their work.

Why didn't they conform to the project standards? I blamed them for a variety of issues:

  • They used auto-formatting tools that didn't format code the way it was everywhere else in the project (made PRs extremely difficult)
  • They avoided strongly typed code like it was a plague
  • They rarely made attempts at exception handling
  • They submitted code that didn't work
  • They submitted code that broke downstream features
  • They didn't write any tests

They did everything differently than how I would have.

It felt to me like they didn't care. Sometimes this was true, but often enough they did care. So why was it so hard for them to do things right, and why was it so hard to get them to do things the right way?

Indeed, even in the opposite direction, I felt the same frustration directed at me from those I reported to from time to time, and for various reasons. It doesn't feel good to be treated as an incompetent, even if you know it's not true.

A Change in Thinking

My intuition at the time for the solution was, I believe, on the right track, but I was never really able to define the problem and the solution holistically.

What I did then, and continue to do among other things, was introduce project tooling and documentation that enforced and described the standards by which I needed people to work.

It occurs to me now, thanks in part to the concepts introduced in The E Myth: Revisited by Michael E. Gerber, that what I lacked at the time was a system that guides, and even forces, people to perform their work in the way I wanted them to.

Facing Reality

Now -- the above uses some harsh language. Force? The way I want? The ego on this guy!

Well, yes and no.

Yes in the sense that those in leadership roles are expected to make productive use of those that report to them. Additionally, in this case specifically, I was the foremost expert available for the project at the time, so is it not natural that such a person defines the rules of operation?

No in the sense that I do not see myself as the absolute expert on all things, and have absolutely no desire to become some kind of malevolent dictator. I didn't have much experience leading anybody to do anything, and I was extremely and painfully aware of that fact. I had, after all, only ever bed lead, or lead only myself.

Figuring Out What to Do

So, knowing that I knew effectively nothing about leading a team, I went to the task of learning how. I observed other leaders. I asked them questions and had frequent discussions about what I was experiencing. I read books on the topic, both about management in general, and about how to effectively build an extremely productive team of software engineers.

That took a lot of time! But at least I was gradually learning and putting into practice what I had learned, testing this idea or that to see what had the most effect -- constantly trying to persuade my direct reports to let me try some new thing.

I was building a system.

Things did get better in a lot of ways. I was less incompetent, and thus I stopped feeling the need to inflict and transfer my own incompetence onto other people (even if I only ever did so in my own head).

This process also had other benefits:

  • I became a better engineer myself
  • I learned how to objectively judge people
  • I learned what leadership was, and just as important, wasn't
  • I learned a lot about how such businesses were run
  • I became a better communicator
  • I learned how to help motivate myself and others
  • I learned that I loved mentoring (helping others grow is extremely rewarding when you get to see them succeed)
  • I became a better learner (a passion for me)
  • ... and probably a lot of other things, too

Failures: A Couple Examples

Throughout the process of figuring it out, I failed a lot. I still fail a lot.

Selling

I used to really suck at this. I hated it and refused to do it. For a long time, I thought the concept of selling was akin to the idea of a scheming user car salesman lying and tricking someone into buying something they didn't want/need. I was disabused of this a long time ago, but I still wasn't very good at selling. Here's how this problem manifested for me in my leadership positions.

People straight up refused to change how they did certain things because they didn't see the value in an idea. At first I tried hard facts, but this didn't always convince people -- they felt that the idea was bad, and that was going to be that.

How the hell do you convince irrational people that don't want to be convinced?

You convince the irrational part of their mind. Put another way, you sell them the idea of the change, and what it will do for them personally. They have to feel like it's a good idea, irrespective of it actually being one.

Weird, right?

It's weird to me. I understand the psychological and neurological explanations for such behavior. I understand all the different kinds of biases that everyone possesses, and the underlying reasons for their existence, all the way down to the evolutionary aspects of it.

And all that doesn't make it not weird. My mind seems unable to reconcile reason and irrationality being kind of the same thing -- perhaps because I can only live in the universe of my own head and not in others' at the same time. Even worse, I am no different! I strive to avoid being led by my unfettered subconscious, but avoiding its influence is literally impossible.

Anyway, I digress. Selling was a hard failure to overcome, and I still suck at it by the way.

Communicating

I found occasionally that people would avoid me for reasons I was unable to discern. Even if I asked them in the gentlest of ways if they were avoiding me, and why, they'd either deny it, or make up some trivial excuse explaining it away. "Sorry, I've been busy" or some such.

But they were, and I knew it.

Eventually, I figured it out, usually after analyzing my previous interactions with them.

I tend to be very straight-forward and dry in the way I communicate -- especially in business communications, or in async code reviews.

I am also not afraid to speak my mind when I feel it's necessary. I would call out wrong things as wrong, and didn't care to placate everyone's emotional connection to things. I wasn't attacking anyone personally, but rather just stating facts and outcomes. Everyone here was an adult and should be able to handle the cold, hard truth.

Well, I was dumb.

I was making people feel bad about themselves and their work. I certainly never intended to make anyone feel this way, and almost never had a negative word to say. I was never intentionally condescending, and in fact tried to avoid that inference. Most times, I was happy with the work being discussed and was just providing feedback.

So, I changed the way I communicated with people. Async code reviews, for example, became in person (or at least over Zoom). This way, I could easily gauge someone's reaction to the things I was saying, and adjust accordingly.

I found that very often, people just didn't understand the reasons for the things I was asking them to do. When that was the case, they were almost universally accepting of my feedback after I helped them understand the reasons.

Lacking those explanations where necessary, people felt condescended to, or felt dismissed, or resented being asked to do things they thought were meaningless.

This was another hard thing for me to fix about myself. Where I eventually succeeded, relationships were better than they'd ever been before, and there was rarely any trepidation around communications with me.

In fact, this was how I really found out that I very much enjoyed mentoring others.

Putting The Pieces Together

I really like Michael Gerber's take on this. In order to lead effectively, you have to build a system that leads to the fulfillment of your goals. For me, this was establishing a system that guides engineers about developing a product, and doing so in a productive way.

Importantly, the system you build should be something that can operate without you. Teams change, people leave, companies reorganize. Whoever takes up your position next should be able to easily understand and operate the system you built, lest everything fall away again into whatever it was before, or worse (this happens a lot more than you might think). To not do this is to do a great disservice to the people you lead.

Furthermore, the process of building the system is difficult. It takes constant retooling to be made more robust and avoid the pitfalls you and others experienced while building it. You will be forced to identify and confront your own failures.

Your system doesn't need to be perfect. It can't be. It's up to you to make it the best you possibly can. Figure out what you don't know, then learn about it. Try to be accommodating where appropriate. Remember that the people you're leading are human beings with feelings and not mechanical automatons.

Final Thoughts

You know what's crazy? I never asked to be put in a leadership role, and I didn't want it. I once half-jokingly threatened to quit if my boss made me a project manager (refusing was in fact the correct thing for me to do at the time).

I just wanted to keep learning how to become a better engineer and keep building stuff I thought was cool.

In fact, some colleagues and I maintained an inside joke for quite a while. If anyone did a good job running some meeting or task, we'd joke to that person, "Hey. You did a really great job with X. I bet you'd make a great project manager!" It always made everyone laugh.

When inflicted upon me, my retort was usually, "Hey! Words hurt!"

While I still don't want to be a project manager, I am happy to take on the responsibility from time to time to help where needed.

I'm also pretty okay with working in leadership roles. I don't think of myself as a leader -- in fact, I don't really like the word's connotations -- but I do think I have the tested ability to help people learn and accomplish their goals, and I enjoy doing so. I don't need to attach a business buzz-word to it.

Maybe another lesson learned here is to never entirely close the door to a possibility. You may eventually want to go through it.