Are you a fool? Are you ignorant? Are you so self-involved that you act without context or consideration? Only a fool believes running around in circles gets you anywhere. Only the ignorant confuse being busy with being valuable. Only the self-involved think that what’s important to them must be important to others.
Doing something can be better than doing nothing. However, activity is not impact. We learn this lesson early in childhood. Tossing flour isn’t the same as baking a cake. Splattering stains isn’t the same as painting a picture. It’s great to play and relax, but doing so doesn’t typically earn a paycheck.
As adults, we realize that not every cake is equally delicious and not every painting is equally moving. Cakes must be tailored to taste and occasion. Paintings must touch their audience with a stirring point of view. The same is true in every field, including software. More code isn’t better code. More hours don’t ensure higher customer value. We know this, yet engineers still believe coding is the source of all productivity, and managers still reward workaholics, even if that work is mostly fixing past mistakes. It’s foolish, it’s ignorant, and it serves us instead of our customers. It’s time to grow up.
For more on what’s important to customers and the business, read Is it important?
There’s no I in team
Code is at the center of software products and services, but it’s code with a purpose of delivering customer value, not code splattered across a repo. Agile practices and continuous delivery have become the standard of excellence in software because they focus on iteration and feedback.
You write code to gain feedback from your teammates and customers on how well it serves them, not because more code equals more good (ugh). And that’s why software development is a team effort, not an individual one. (“Don’t go dark” and “Beware of a [programmer] in a room” are two lessons Jim McCarthy warned about 25 years ago in his classic Dynamics of Software Development.)
Can’t take the heat
When you’re feeling under pressure to fix a bug or deliver a feature, there’s a strong impulse to do something fast. However, doing the wrong thing only makes the situation worse. That’s why you should stop coding and start thinking.
What’s the actual customer, business, or live-site problem? If you can’t determine the root cause immediately, what small code correction can you make to buy you the time you need? In other words, how do you do the least to improve things the most (as opposed to the reverse)? In a crunch, you’re not seeking activity—you’re seeking positive impact through calm, thoughtful, minimal action.
You’re making it worse
Even in quiet times, too much activity can make the situation worse. Too many features make products unusable and bury their best attributes. Too much code provides more opportunities for bugs and vulnerabilities. Too many APIs and entry points expose more surface area to attack.
The goal of software development isn’t to produce code; code is a byproduct. The goal of software development is to deliver value to customers—value that customers will appreciate enough to reward you for your efforts with engagement and revenue.
If you’re a program manager, seek customer value, not features. If you’re a developer, seek improved code, not more code. If you’re a leader, reward impact delivered, not activity logged.
For more on measuring quality from the customer’s perspective, read Quality is in the eye of the customer.
Software companies that seek sustained success and customer loyalty need to stop measuring productivity by hours spent coding or amount of code written and start measuring it by customer value delivered. Developers are happiest when they are coding, but this isn’t playtime. If you’re seeking that promotion or larger bonus, stop listing your activity and start highlighting your impact. We’re here to make customers happy. If we’re happy too, all the better.
Deeply understand and empathize with your customers and stakeholders. Design complete solutions with seamless experiences that solve top problems. Code only enough to fill gaps, deliver value, and gain feedback. Iterate until you’ve constructed the entire solution for delighted customers and partners.
Don’t brag about activity. Don’t reward activity. Don’t put activity on a pedestal. Instead, brag about impact. Reward delivered customer value. Put the customer on a pedestal. You might get customers to love you and still finish work in time for dinner.