Context Matters
A big part of my job is to talk, either as a discussion, or simply reverting answers for questions. But no matter the nature, it all begins with a bunch of questions from me.
Some calling it to set the stage, but I like to call this “the construction of proposition”. Give it a thought on what it meant when you are being asked, “Could we develop a web service that expose products on our website?”
We will come back to this question and let me explain on why I start off any discussion with a bunch of questions. Albert Einstein once said,
“If I had an hour to solve a problem I'd spend 55 minutes thinking about the problem and 5 minutes thinking about solutions.” -- Albert Einstein
I agree very much with what he said. There are so many times, that the answer which we give, turns out is irrelevant to what is being asked. Thus, before I even start thinking about the solution, I start off with questions, which help both myself and the counterpart to frame our context. What I mean by context is, the boundary of the topic we discuss; what is relevant and what is not.
Boundary can be defined with the famous 5W1H,
- What is it about?
- Why does it matter?
- Who does it relevant to?
- When should it take place?
- Where should it occurs?
- How should it be done?
So when I listen, I will try to ask questions covering angles of the above, link it all up which gets me to a very important step.
Explain the whole thing again in my own words.
This help to switch the role between myself and the counterpart. And by reiterating what I have heard, it helps us to conduct a reconciliation.
Look at the imaginary question I proposed earlier on again - “Could we develop a web service that expose products on our website?” Let’s put in some context from two different aspect, one as a pure technical decision and one as a business decision. Let’s see where would it lead us to from both scenario.
- What is it about?
- Technical Context : It is an architecture decision for lowering the coupling in code.
- Business Context : It is a business decision for product advertising.
- Why does it matter?
- Technical Context : We could shorten our release cycle as individual service is released instead of as a big mass of code.
- Business Context : This enable affiliate partner to promote our product in their channel which could increase our sales.
- Who does it relevant to?
- Technical Context : Internal technical staff.
- Business Context : Technical, Business Development, Partners.
- When should it take place?
- Technical Context : No definite time line. By iteration.
- Business Context : First API should be available in 3 months, as contract with partner has been signed.
- Where should it occurs?
- Technical Context : As is, since there won’t be big changes in terms of resources consumption.
- Business Context : Probably additional resources is needed. And due to the project timeline, we probably need to leverage the cloud in speeding things up.
- How should it be done?
- Technical Context : Microservice approach, using Docker container …
- Business Context : RESTFul API, access control, QoS
As you can see, the solution for the two context will be very different. Besides, it’s only the beginning of the story, as the Business Context has yet to cover additional questions like,
- Passive Crawling (Product Catalog) vs Active Notification (Change in price or inventory)
- Product Level vs SKU Level
- Public to all vs Selected partner only
Next time, make sure you have reserved enough time in asking question, before giving out a single answer.