How software engineers create value
High-impact engineers 10X the value they create by working on the most impactful features for users and aggressively decreasing the time it takes to get things out to users.
I was in an interview with a promising engineer. The candidate had recently passed their video screen interview.
“How does the company make money?" the candidate asked.
I responded, "We make money by helping customers get from point A to point B. Every time we help a customer meet an appointment, every minute they catch up with a train or flight they would have otherwise missed if not for our service, they pay us for the value we provide.
Likewise, every time we fail to provide that value that's satisfactory to our users, we sabotage our money-making process by losing that customer to competitors. You will be working on XYZ, which allows us to provide delightful services to our users, offer them competitive pricing, and make them come back again."
The candidate's eyes lit up. It felt like the candidate had just grasped why the role was important.
There are engineers who seek to understand the value of the code they write end-to-end. Likewise, there are also engineers who don't see beyond the code they write and how it connects to the overall company's mission.
One of the most important mental shifts an engineer can make is understanding how their work creates value for the company. Understanding this will change how you approach everything.
Your job is not mainly to write elegant code with the latest technology; your job is to use tech to create value for the company, which thus helps the company achieve its objectives.
When you understand this, you start worrying less about the means (the technology, the language, or the tools) and more about the end goal.
This shifts your thinking away from always wanting to follow the trend to thinking about the best trade-offs you can make now to deliver value to your users.
How a software engineer creates value
Software engineers create value through shipping working code that solves a pain point for users in a predictable manner.
To create value as an engineer, you have to optimise for two things:
Ship working code.
The code you ship should either solve or help solve customer problems.
Many engineers ship features they’re told to ship without asking why or how the feature will solve or help solve a customer problem. If you ship code that doesn’t solve a problem or help solve a problem, you’re not creating value by shipping it..
As engineers, we get to build stuff, change the behavior of features, improve performance, and all that stuff. All of those have to translate to customers’ benefits to be valuable.
Regardless of how elegant your code is, if it’s buggy, unreliable, or not working as intended, you’re discounting the value your code is intended to produce.
How can an engineer 10X their value creation?
High-impact engineers 10X the value they create by working on the most impactful features for users and aggressively decreasing the time it takes to get things out to users.
They don’t just jump on a feature because it’s challenging or seems interesting; they deliberately choose where they spend their time. They work on features that have the highest ROI.
Earlier, I mentioned that engineers create value by shipping working code to solve or help solve customer problems. But there is also a time factor. Imagine working on a very impactful feature that doesn’t get to users until after a year. A lot could happen within a year. Users could discover a new competitor and churn. Even if users don't churn, you lose critical time to get feedback to further improve the feature.
The value we create through code diminishes with prolonged time if it doesn't get to users. This is why elite software teams ship frequently.
Therefore, if you decrease the time it takes to ship, you automatically decrease the time it takes to create value.
Great engineers consistently work to decrease the time it takes to get their working code to users. They work continuously to shorten the time for value creation.
A working code in an engineer’s development machine is less valuable than a working code in a draft PR. If the local machine gets stolen, you have to spend time rewriting the code, thus prolonging the value creation process.
Likewise, a code sitting in a branch waiting for review is less valuable than a code that has been merged. The longer it takes to get feedback and incorporate changes, the longer it takes to create value for users.
Great engineers consistently work to decrease the time it takes to get their working code to users. They work continuously to shorten the time for value creation.
You might ask how they do it.
They seek to understand how solving a problem benefits a user. They don’t want to write the feature and later discover that customers don’t need it.
They break large problems into smaller, incrementally deliverable chunks. Rather than doing a big bang release, they do incremental releases, which shorten the feedback cycle tremendously.
When they’re blocked or need something, they proactively reach out for help to unblock themselves because they know the longer they’re blocked, the longer the value creation takes.
When their PR is stuck in review and reviewers are not forthcoming, they proactively reach out to reviewers in DMs to draw attention to it.
When the code is merged, they know their work is not finished until the feature is turned on for users, proactively following up to ensure that the feature can be turned on for users.
Exceptional engineers don’t stop at seeing the feature turned on for users; they continue to monitor how users are using the feature, checking quality and reliability metrics, and identifying opportunities and improvements to make the feature more delightful.
If you’re going to take anything from this post, it should be:
Spend your time on what matters to users. How would that feature you're working on benefit users?
Seek to reduce the time it takes to get value to users.
Continue to monitor how users are using your code and identify areas for improvement.
Push things through to completion. When you leave your code in a branch 90% done for days, you’re sabotaging your value creation process.
Instead of jumping from one task to another without finishing them, limit work in progress and complete them.
Break code into smaller chunks. Smaller code is easier to review, test, and complete.
If you’re a manager, continuously help your engineers see how the code they write connects to the company’s mission. I have written extensively about the importance of helping engineers connect to your “why” (purpose) and how helping engineers see the big picture is crucial for sustained high-performance .