Are any of your features the steak on the menu?

Monday, January 8, 2024

At my first job, we were a distributed team and would get together often. When we went out to eat, one of my coworkers would always order the steak if it was anywhere on the menu. Every single time we went to some Ohio restaurant that had truly lackluster steak, he'd order it anyway.

He knew it was going to be bad! He'd done it before, and we talked about it. So I asked him, "Ming, if you know it's going to be bad, why are you ordering it?"

What he told me stuck with me: "If it's not good, they shouldn't put it on the menu." They put it there because they felt the menu needed it, but it wasn't good. So he got his steak and complained about it, as usual.

It's not just about steak

I mean, that story actually happened, and it was literally about steak. But this happens in so many other places, too.

At work, I ran into a feature in our product that didn't work well for me as a user. This turned into a discussion with product, engineering, and design, where we talked about why that feature is there and what to do about improving it. And someone said that we don't necessarily need people to use it, there are other ways of doing the same thing, but it has to be there.

That's the steak on our menu: that feature that we know isn't working great, but we insist that we need it there anyway. And just like the steak, if it's not good, we shouldn't put it in the product!

What do you do about the steak feature?

If you find steak on your menu, what do you do about it?

You really have two good options, and one practical-but-unpleasant one.

  • Get rid of the feature. This is the one you go with if you know the feature is bad and it's just there to check a box, but you don't need to check that box. This is the best choice if the feature isn't necessary, because it reduces your maintenance and rework burden.
  • Fix the feature. This is what you go with if you know that you truly do need the feature and it could provide value but is sorta broken right now. If you're able to fix it, then you end up delivering new value to your users. Yay!
  • Ignore the problem. You know, this is a practical option that's sometimes okay. There's a reason that feature's there, and if you're not hearing a lot of complaints (you'd know), then is it that bad? It could be a lot of work to fix it, and there are bigger fires, so you can just ignore it sometimes.

If you're able to get rid of it or fix it, that's the best option. But sometimes that's not possible, and you're left just dealing with having the steak on the menu for the few people who come through who do like the tough old puck. And for Ming.

Go ahead, order the steak

Sometimes you need to go to where the problems are. If you write software, you should use it, and you should know where all the dark corners are that have problems.

Go find the steak on your menu, order it, and chew it. Let it sit, and figure out what you're going to do about it.

And maybe you'll find yourself like Ming: ordering the steak everywhere, complaining about it, but secretly actually enjoying that tough old puck. Or just enjoying the griping.


If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts and support my work, subscribe to the newsletter. There is also an RSS feed.

Want to become a better programmer? Join the Recurse Center!
Want to hire great programmers? Hire via Recurse Center!