Value-Oriented Development: Ensuring Your Teams Work on What Matters Most

In the world of software development, there are many ways to ensure that your teams are working on what matters most. One popular technique is known as "value-oriented development." This approach focuses on ensuring that each and every investment made by your firm provides the greatest possible reward. In this article, we will discuss how value-oriented development can be used to make sure your teams are working on the right projects, and provide some tips for getting started.

Whenever starting a new project it can be beneficial to identify the outcomes you're hoping to achieve. At first, these outcomes may not be very specific or measurable. However, given some refinement you should be able to produce variations of your desired outcomes that are not only specific, but realistic and measurable. These outcomes may generally include targets that aim to improve performance, increase reliability, reduce cost, mitigate risk, and other ambitious goals. This is where most teams will stop, and will use these objectives and outcomes to determine the opportunity cost for engaging in one activity versus another. This is where a "value-oriented development" approach can help improve that decision making activity for more effective results.

All activity within an organization is in service of the goals and objectives of the firm as a whole. As a result it is imperative that work be done which advances the organization towards those goals. A "value-oriented development" approach helps to ensure that this occurs by identifying and then prioritizing work which will have the greatest impact on meeting those desired outcomes.

In order to practice a value-oriented development approach, there are several steps your team can take:

  • Make sure your team is aligned and supportive of the organization's goals. This should go without saying, but too often than not it's a fairly abstract connection. This is a frequently overlooked role of a leader which is to do more than communicate objectives, but build support for them.

  • Ensure a clear, and simple link to how the work your team is doing advances the organization's goals. This means a value proposition which is clear and easy to understand. Make it easy for everyone on your team to see how their work connects to these overarching goals. This can sometimes best be accomplished by having a narrative to which people can relate, sometimes from the point of view of a customer or client of the organization.

  • Make sure the work your team is doing is directed at improving key performance indicators. This will help to ensure that the value of the work being done is clear, and that it's easy to track progress. Engage in regular review and reflection. This will help to ensure that your team remains focused on the goals which matter most, and allows for course correction when necessary.

Following these steps will help to ensure that your team is focused on the work which provides the greatest value to your organization. By doing so, you can be confident that you are making the most of your team's time and talent, and ensuring that your organization remains successful for years to come.

The Golden Mean: Finding Balance in Extremes

In any decision we make, there are usually two extremes to consider: the ideal option and the pragmatic one. On one side you may find the perfect solution, while on the other is the most practical choice. But it is only in the middle that we find what creates the most value. It can be a challenge to find this balance, but it's an essential part of making sound decisions. Whatever approach you take, it's important to be aware of both ends of the spectrum so you can make the most informed decision possible.

In software engineering or similar disciplines there is a constant balancing act between pragmatism and idealism. This is often manifested in observations one might make around designs being overengineered, too sophisticated for the intended use cases. On the other extreme the designs could be too tactical, too dependent on assumptions and chance, or too focused on delivery timelines than sound engineering. There is a tension here that can never be fully resolved, and it's one that teams constantly have to negotiate, but I've found the best solutions exist in the middle of those extremes. Sometimes the compromise is a matter of finding the midpoint along that distance between the two opposing extremes.

Some of the most effective engineering teams are those composed in such a way that they allow for that natural tension, and when high functioning, can produce the outcome at the midpoint, which quite often is the most balanced overall. This happens practically through design, code, and architectural reviews. It happens during pair programming sessions, or feedback during a demo. It should happen all the time. This is not always easy, mostly because building that kind of team composition can be challenging, and once built it is imperative that the tension be a healthy one, devoid of personal egos and motivated by a common, shared objective.

Finding a balance between any two extremes is never easy, but it's always worth it. It's an essential part of making informed decisions and creating value. The next time you're faced with a choice, take a step back and consider both ends of the spectrum. By doing so, you just might find the perfect solution in the middle.