Development Process

Compendium

What Is A Development Process?

Development process commonly refers to a system for planning, executing, and tracking software development work. An effective iterative development process enables a team to maintain a queue of work and incrementally service that queue in a way that allows them to not only deliver work, but to also provide projection for work farther back in the queue.

Outcomes

There are four key outcomes that an effective process should provide. Anything that hinders or prevents these outcomes should be considered for removal from your development process.

Roles

While there are only a few roles in effective development process, understanding those roles, their charters, and their interactions with one another is crucial.

The API for Teams

Having a level of commonality across the development process for teams is key to orchestrate product development at scale. The API for Teams is my metaphor for that basic commonality.

Categories

The nature of software development varies enough that no single process can address all types of work. Most iterative development processes fall into one of two major categories, either Batch or Continuous.

Both Batch and Flow types of development process fall within the category of Empirical Process Control. Healthy implementations in either category will provide the three pillars of Empirical Process Control: transparency, inspection, and adaptation.

Batch

Batch processes are suited to software development work where the items in a team's queue vary significantly from one another in size and workflow. Scrum is the most well-known Batch System of Delivery, but XP's planning approach is another one.

Continuous

Continuous processes are suited to software development work where the items in a team's queue are all relatively similar to one another both in size and in the steps of a workflow they must move through. The Kanban Method popularized by David J. Anderson is perhaps the most well-known continuous development process.

Selection

The selection of a development process should be primarily guided by the characteristics of the team's work. Regrettably, selection is sometimes guided by affinity for a personality, movement, or mindset behind the particular process.

Artifacts

In this context, the artifacts of a development process are things produced to facilitate its execution and convey the results of that execution to people in a variety of audiences beyond the mere completion of the work itself.

In my experience, the artifacts emphasized by teams and organizations convey their values. Effective development processes tend to employ artifacts that foster interaction between individuals, with a focus on visualization of work in order to allow those persons to collaborate more effectively.

Metrics

Care should be taken with metrics related to development process. Few aspects of development process have the opportunity to negatively impact teams as much as misused metrics will.