BossaBox

This is the playbook for engineering-playbook

Engineering Feasibility Spikes: identifying and mitigating risk

Introduction

Some engagements require more de-risking than others. Even after Architectural Design Sessions (ADS) an engagement may still have substantial technical unknowns. These types of engagements warrant an exploratory/validation phase where Engineering Feasibility Spikes can be conducted immediately after envisioning/ADS and before engineering sprints.

Engineering feasibility spikes

The following guidelines outline how Microsoft and the customer can incorporate engineering feasibility spikes into the day-to-day agile processes.

Pre-Mortem

A good way to gauge what engineering spikes to conduct is to do a pre-mortem.

What is a pre-mortem?

This input is used to decide which risks to pursue as engineering spikes.

Sharing Learnings & Current Progress

Feedback loop

The key element from conducting the engineering feasibility spikes is sharing the outcomes in-flight.

The feedback loop is significantly tighter/shorter than in sprint-based agile process. Instead of using the Sprint as the forcing function to adjust/pivot/re-prioritize, the interim sharing sessions were the trigger.

Re-prioritizing the next spikes

After the team shares current progress, another round of planning is done. This allows the team to

Adjusting based on context

During the sharing call, and when the team believes it has enough information, the team sometimes comes to the realization that the original spike acceptance criteria is no longer valid. The team pivots into another area that provides more value.

A decision log can be used to track outcomes.

Engineering Feasibility Sprints Diagram

The process is depicted in the diagram below.

Engineering feasibility spike feedback loop

Benefits

Creating code samples to prove out ideas

It is important to note to be intentional about the spikes not aiming to produce production-level code.

For example, supposed the team was exploring the API choreography of creating a Graph client with various Azure Active Directory (AAD) authentication flows and permissions. The code to demonstrate this is implemented in a console app, but it could have been done via an Express server, etc. The fact that it was a console app was not important, but rather the ability of the Graph client to be able to do operations against the Graph API endpoint with the minimal number of permissions is the main learning goal.

Targeted conversations

By sharing the progress of the spike, the team’s collective knowledge increases.

Increased customer trust

This process leads to increased customer trust.

Using this process, the team

Conducting engineering feasibility spikes sets the team and the customer up for success, especially if it highlights technology learnings that help the customer fully understand the feasibility/viability of an engineering solution.

Summary of key points