Part 3 – Small Scale Development with Practices

In the previous part, we introduced how Essence helps teams evaluate their current state, plan and progress toward achieving the next state. However, how to actually get to the next state is not provided by Essence.  This is knowledge that you need to have or acquire on top of what Essence gives you.  This knowledge can be tacit, or explicit.  Tacit means it is known by the team, but not necessarily written down. Explicit means it is written down. When facing simple development endeavors, like the one described in part 2, you just need to rely on tacit knowledge. However, in other situations due to team members coming from different backgrounds, experiences, and/or competencies, it is useful to have some tangible and explicit practices for them to fall back on. Essence helps here as well. The Essence language allows you to define practices on top of the Essence kernel providing explicit guidance to teams in how to get to the next goal state(s) or how to maintain the health of the current state(s). By “on top of” we mean using Essence, the kernel elements and the language, as a vocabulary to describe practices, or in other words using Essence to essentialize practices.  Moreover, teams usually need many practices and these need to be merged or composed to remove overlaps and conflicts.  Thus, the Essence language includes a composition mechanism that is described later in this part, to allow teams to create a method including many practices of their choice. 

In this part, we will motivate the need for explicit practices and discuss how explicit practices described on top of Essence are used by small development teams to help solve common challenges teams often face.  As an example, we have chosen a team that uses an agile approach, but we could have chosen a team that uses a more traditional approach, such as a waterfall approach. Agile development, of course, is the mainstream approach to delivering software at the time of writing this book and is utilized in many organizations.  Agile development is not just a method, but rather it is a mind-set, with principles as well as practices. Over the years, common agile practices have been codified (e.g. written down) and we explain in this part of the book how to modularize them as practices using Essence. In particular, you will learn how a small agile team makes use of scrum, user stories, use cases and microservices practices to solve specific challenges they face during their development. This development typically takes several weeks to complete and we will see how this team evolves their way of working practice-by-practice while working on a list of changes.

Part Objectives:

  1. Appreciate what practices are, and the types of challenges teams often face where practices can help. We will describe practices including scrum, user stories, use cases, and microservices.
  2. Appreciate the value that representing practices in an essentialized form give in order to help you find the right practices for your team.