A Programmer's Ego

This morning I was looking out at my many, many books. I started organizing books by the date I read them some years ago, and now I have a couple of bookshelves of them. At some point the number of books in that scheme outstripped the number of books that either predate it or haven't been read yet. So I can sit in my chair and look at these books and see the rough outline of my perambulations over the years.

I have had a longstanding ego problem around books. For years, if I visited a new friend and saw that their bookshelves outstripped mine, I'd feel an overwhelming insecurity. I want to be seen as intelligent, for people to pay attention to the smart things I say and the unique knowledge I bear.

At a previous job, I once felt that I had grokked the great ideas that drove the business. Shouldn't I advocate for them? Shouldn't we constantly be shouting these priorities from the rooftops? We were in a place that was doing the great work, God's labor. Weren't we?

My CEO would talk to me about this as we wandered the neighborhood. I thought I was the Apostle Paul to his vision. That wasn't the way he viewed it, though. "Just do something useful," he'd say.

What does that mean? How can we be useful?

When I landed in a big company in Silicon Valley, nobody was asking that question. That company was doing what I had wanted to do: hammering away every day from the highest levels of leadership at a grand vision. Every part of the business was oriented around the big save-the-world hypothesis.

My programmer's ego loves this. It wants to know everything. It wants the big solution. It wants to walk into a discussion and understand not just the systems I personally hack on, but also the systems my collaborators hack on. My programmer's ego wants to be like Richard Feynman on the Manhattan Project: walking into a meeting with the uranium refinery architects and immediately pointing out a flaw in their plans, all from alchemizing logic and instinct. It wants to walk into the new job and immediately talk about the right way to do everything. It wants to figure it all out.

My eye settled on another stack of books: a set of video codec books from my last job. I never became an expert on video codecs (my work didn't require it), but I learned enough to be reasonably fluent with others in that world.

I work on Cash App now. Totally different domain. What do I know about it? What books could someone find on my shelves about that domain?

The problem with the programmer's ego isn't necessarily that it wants to act as an authority, or exercise leadership, or solve important problems. Technical authority and leadership are both necessary and powerful, and solving problems is why we were drawn to this field. The problem with the ego is that it wants to defend itself: it grasps desperately at leadership, even where it is not necessary. Where new leadership brings risk and uncertainty, it may shirk leadership. It may discuss the great solution as a fait accompli before it has been built, or fail to engage honestly with its critics. It wants to be anywhere other than where it stands at that moment.

The release valves for the misfit ego sit at our connections to the two great pressures our work is concerned with: the real world, and other people. Either the system works, or it doesn't. Either people need it, or they don't. Perfection will elude us, but given a grand hypothesis and the willingness to hammer away at the code and at the people, some utility will emerge.

And maybe some humility, as well: to take all that I've read into my work today as a contribution, to take all that I haven't into it as curiosity, and to honestly meet every bump that pops up when reality and society don't perfectly match up with my imperfect essay into them. And for the day, that will be sufficient.