Yesterday I talked about how much I like programming, and how tempting it is as a job.

After a conversation with Sandy, I realized there’s a bit more nuance to explore.

When I’m given a task, I want to understand its context and make sure that it’s the right thing to be doing, given the larger goals. This is why I tend to drift, within a given job, from a more-technical role to one that’s less so. Figuring this out requires talking to people, aligning work with future plans for your own team and others. Basically, product management and/or team management.

Taken to its extreme, you might even ask whether the company is doing the right thing, and start your own.

Young children are notorious for asking “why” repeatedly, and parents know that once you get a few levels deep it’s a very difficult question to answer. As an adult, in a workplace, you need to find some level of explanation, of values, that satisfies you as an abstraction, and do productive work under that layer. It’s extremely distracting to be in “what to value” mode at all times.

The best engineers I’ve worked with, though, were able to navigate many levels of this – improving their implementation work – without getting too sucked into the larger discussions. Maybe you need to develop that discipline to stay an engineer forever.