Let's get the caveat out of the way first. My perspective here is about businesses. There are certainly different tradeoffs and values in other types of organizations, but I'm talking specifically about businesses that employ software engineers to build software that customers pay for.
Even within businesses there are sliding scales on tradeoffs, but typically, time spent by people costs money. What engineers spend their time on is an investment, and investments are meant to have a return.
Healthy Organizations
Healthy organizations are pragmatic. Not just on the engineering side, but on the business side as well. Ideally, they don't even refer to themselves as "sides" of the company. That language implies you're working against each other, not together. But it happens a lot.
There are a lot of idealistic engineers out there. I think it's good to be idealistic, but only in places where you have time that doesn't directly cost money, and that is almost certainly not at your job. Being pragmatic means understanding what tradeoffs exist and how to make them. It also means being idealistic on your own time, where you can explore ideas, experiment, and hone your skills without those constraints.
Idealistic engineers who understand when to be idealistic and when to be pragmatic tend to become champions of things like strong culture. They rally their teams. They know how to balance progress with technical debt. They find compromises. They put data together to convince partners outside of engineering why certain investments are worth making. Over time, they build trust and bargaining power because leadership sees that they understand the broader context. Trust is powerful.
When Idealism Breaks Down
The problem is when idealistic engineers can't come to terms with pragmatism in a business environment. When there isn't unlimited time, because time costs money. In my experience, those engineers don't become champions. They don't rally the team. When they don't get their ideal outcome, frustration turns into negativity, and that negativity seeps into everything. It drains the joy out of the work. Negativity kills teams.
There are, of course, roles inside businesses where people can take more time, go deeper, or move at their own pace. But realistically, businesses paying those salaries aren't doing it out of the goodness of their hearts. They're still betting on a return. Open source investments fall into this category, and that isn't a bad thing. Businesses investing in open source can be a win-win. It's good for the company and good for others. But it still needs to be good for the company first.
I've worked with idealistic engineers who were incredibly smart but not pragmatic at all. They often felt “other than” the rest of the organization. Some of them looked down on the product engineers who were focused on supporting and shipping the product. Once that happens, the team stops listening to their advice. But add a dose of pragmatism, and you get someone who is still pushing standards, while also meeting the team where they are.
Culture
Product engineering is what most employed software engineers in businesses are hired to do, and successful product engineers are pragmatic. I'll work with a pragmatic product engineer any day of the week. But an idealistic product engineer who is also pragmatic tends to be the kind of person teams rally around. They work with partners outside of engineering to deliver what needs to get delivered, while also working with their engineering peers to do those things well.
For as long as I can remember, I've told my teams that everything is a negotiation. We're there to deliver what's prioritized, but it's also our responsibility to speak up and make the case for the tradeoffs we think matter.
So by all means, be idealistic. Just make sure you can also be pragmatic, where and when it counts.
Top comments (0)