Begin with end in mind
“Begin with end in mind” is a habit recommended by Stephen Covey in his book, The 7 habits of highly effective people.
In early stage of software development when it is easy to get into a rabbit hole of investigation, it is especially important to remember the “end” to avoid spending too much time side-tracked.
In a recent project we were tasked to find out how to use AWS SAM(Serverless Application Model) with AWS AppSync to enable developing graphql micro-services locally. There are plenty of resources online aboutAWS services but not many talk about locally build, test and debug serverless applications, which is essential for productive development. Since SAM allows local development and AppSync provides graphql as a service, we timeboxed 1.5 days to build a simple working app as a proof of concept.
It is easy to get side tracked during the investigation phase due to the sheer amount of unknowns. How do I set up SAM? What is included in the SAM template? If not careful, I would possibly spend the whole day following along the tutorial and not achieving the end goal.
What is the end goal? To use AppSync with SAM?
No.
The end, the Q directing you to the end, should be ‘How to locally develop and test graphql serverless apps?’ The fact that an AWS architect recommends using AppSync and SAM does not mean this is THE WAY. Given there is no resources online about using AppSync and SAM, using AppSync with SAM could be one investigation option. That also happens to be one common rabbit hole that developers can spend weeks on trying out different way to get it working and forget about exploring other viable options.
There are 2 valuable tools to keep us on track to the end goal: 1. Timebox 2. feedback discussion. By timeboxing to this short 1.5 day period, we would be conscious of the time spent on each investigation option. Having an immediate feedback discussion after timebox period would keep us on our toes to investigate with the ultimate end in mind (locally developing graphql serverless apps) and not too side-tracked to other sub-end tasks (connecting SAM and AppSync).
Nobody succeeded in using SAM and AppSync together during the timebox period and we proceeded with using a proven approach with Lambda and SAM instead. Without this process explicitly put in place, we could potentially spend many more days learning about other AWS services, diving into SAM+ AppSync. Begin with end in mind and constantly asking ourselves what our ultimate end goal is during the journey is the most effective cost saving approach that everyone can use!