Another good rule is click-to-cancel. Just a couple of days ago I logged into my Dish Network account to cancel it (after they hiked prices). There is no way to cancel online. There is no way to cancel via chat. You have to call. As soon as you call you're told the wait time is over 45 minutes. There is no call back option. Why should a consumer have to be on the phone for 45 minutes to cancel? (Typically they will drop the call after 45 minutes and you have to call again.) If you call Dish to sign up service the wait time is 0 minutes: they answer immediately. If you then tell that you're actually calling to cancel, they forward you to the cancellation number with the wait. This is an abusive business practice, and banning it should not be controversial.
Microsoft had three personas for software engineers that were eventually retired for a much more complex persona framework called people in context (the irony in relation to this article isn’t lost on me).
But those original personas still stick with me and have been incredibly valuable in my career to understand and work effectively with other engineers.
Mort - the pragmatic engineer who cares most about the business outcome. If a “pile of if statements” gets the job done quickly and meets the requirements - Mort became a pejorative term at Microsoft unfortunately. VB developers were often Morts, Access developers were often Morts.
Elvis - the rockstar engineer who cares most about doing something new and exciting. Being the first to use the latest framework or technology. Getting visibility and accolades for innovation. The code might be a little unstable - but move fast and break things right? Elvis also cares a lot about the perceived brilliance of their code - 4 layers of abstraction? That must take a genius to understand and Elvis understands it because they wrote it, now everyone will know they are a genius. For many engineers at Microsoft (especially early in career) the assumption was (and still is largely) that Elvis gets promoted because Elvis gets visibility and is always innovating.
Einstein - the engineer who cares about the algorithm. Einstein wants to write the most performant, the most elegant, the most technically correct code possible. Einstein cares more if they are writing “pythonic” code than if the output actually solves the business problem. Einstein will refactor 200 lines of code to add a single new conditional to keep the codebase consistent. Einsteins love love love functional languages.
None of these personas represent a real engineer - every engineer is a mix, and a human with complex motivations and perspectives - but I can usually pin one of these 3 as the primary within a few days of PRs and a single design review.
Mort == maker Elvis ==? hacker Einstein == poet