I often find myself in situations where I spend more time thinking about how to execute something rather than actually doing it. It could be a document at work, that I know it could be better and I’m trying the best I can to format it into a good layout, with descriptive images and tables. Or even picking the perfect and most complete Blog template, with RSS feeds, good performance and SEO scores and markdown support… ah and also being visually pleasing 😌.
If you fall into this scenarios constantly, let me tell you, you’re probably a perfectionist too. WAIT!… you might think as well:
Its not that I’m a perfectionist, I just care about the quality of my work
- Engineer explaining why spent 2 weeks refactoring a already working code
Thriving for the the best quality of your work is something that we should always aim. Besides showing what you are capable of, this also might produce benefits that might be beneficial in other efforts in the future. For example, a really good documentation, a modular clever code that is easy to maintain and debug, or even a well written Jira task that helps other engineers and PMs join an ongoing project.
We, as engineers, often go back and forth between the role of Software Engineer and the field of Computer Science. In Science, we strive to understand through exploration and discovery how things work and how they could work better or ideally, sometimes extending this work for months, and most commonly, years. On the other hand, engineering is centered on applying this knowledge to solve practical problems, focusing on outcomes and solutions.
Pragmatism is a practical approach to problems and affairs that focuses on achieving effective results and making decisions based on what works in real-world situations, rather than adhering strictly to theoretical principles or ideals. It emphasizes the importance of practicality, efficiency, and outcomes over abstract concepts.
Pragmatism—this was the advice my mentor once gave me: ‘Be pragmatic, Breno!”. This made me think about how many things I was worrying about or trying to improve that maybe wouldn’t even be noticed. Being already used as title of a big Software Engineering book - Pragmatic Programmer
. It represents how we should see our work as engineers and most importantly as business contributors. If we were to represent a perspective of a pragmatic person vs a perfectionist we would see:
In a pragmatic approach, once we achieve the desired business value, we might do some final touchups, ensure the work is well-settled, and then move on to the next project. But for an perfectionist
We reach the ‘good enough’ level, but we continue refining the work until we achieve a great outcome, only to start questioning, ‘Why are we even doing this?’. Meanwhile, Project 2, which would add more value to the company, is on hold, and we’re just wasting time…
This extends to other domains in business, such as startups. In this TEDx talk, “The Single Biggest Reason Why Start-ups Succeed”
, research shows that the main reason for a business to succeed is timing. So, iterating over and over to achieve what you—or maybe your customers—want can make you lose this precious factor. An advice
from the former Y Combinator President, Geoff Ralston, is:
The first thing we always tell founders is to launch their product right away.
And by “product”, this can mean the code pull request you’ve been working on for weeks, trying to think of the best code structure, or maybe that document where you want to cover all scenarios before sending it to your teammates for review. Do it, iterate, improve, but most importantly, deliver the value.
So now, I’m on a Saturday night after a week of thinking about a great topic to write and post on Monday. Don’t think to much, bring the value to the people you want.