Working, Good, Easy!

Make it work, Make it good, Make it easy!

While I have had this framework in my head for a long time, I recently shared it with my product team so that they also could have it and use it to make decisions about priorities.

  1. Make it work!
  2. Make it good!
  3. Make it easy!

The product that the team is working on is a service orchestration tool, with a UI to define the integration points and another to build the orchestrations.  Everything we do is to make it easy for someone else, but how do we prioritize?

From our internal perspective, I want to define how we apply each of these concepts, so that we can all try to apply them the same way.

Make it work – The product doesn’t blow up.  The product does the right thing, when given a valid input.  The product behaves consistently.  The product tells me when I have made an error.

Make it good – The product user experience is “intuitive”.  The product provides intelligible or comprehensible messages when valid input is not available.  The product prevents me from entering invalid input.  The product presents information in a way that makes choices reasonable.  The product has default values for things that meet an 80/20 rule.  The product doesn’t let me pick things that will never work.

Make it easy – The product allows convenient navigation that does not require “back tracking”.  The product is sensitive to context; “reduces” options based on prior decisions (filters lists based on earlier inputs).  The product presents an intuitive flow of activity to support frequent use cases.

What I would like us to do, as we create ideas (e.g. generate/elaborate stories and identify bugs), is to think about which of these categories each idea falls into.  Probably there are a hundred scenarios that I haven’t contemplated here.  I am sure that over time we will think of many.

As we implement each new feature, I want us to continue to work in this order, and to have the freedom to resist when we are being encouraged to work in a different order.  Obviously, if the cost/effort difference between working and good is “insignificant” we should make it good.  Likewise if easy is not significantly more than good, we should make it easy.  Sometimes, we will decide to make it easy, because it makes it easy for ourselves, (e.g. message ingest) however this should be the exception rather than the rule.  All of you will ask about the meaning of the word “significant” – and of course I will say it depends.  What I want is for us to have a framework to ask the question “is it worth it?” before just doing it because we thought of it.