Values | Principles | Practices

After years of working with software-intensive systems we found what values are most important to deliver high-quality products. From those values we derived principles and practices that we apply in our daily work.

The fundamental features that we strive for

The development team should be able to deliver the results without necessity of bloated structure around them.
The well organized team should deliver results in a predictable manner. Experience and refined delivery pipeline can enable that.
Proper communication is the key. Without clear tools to bring everyone on the same page, the team will be inefficient and frustrated.
The team should be educated about the meaning of the work so that they proceed with passion and purpose.

- The principles

We believe in following the patterns that have been proven to work in our experience but also in other long-living systems.

Nothing goes to waste

All effective systems aim to minimize waste. Each step in the process should yield something beneficial, either immediately or in the future. The output of each phase ought to lay the groundwork for the subsequent phase.

The most interesting things happen on the borders

The most challenging but also the most rewarding part of system are the borders between its components. The process must be designed in a way that facilitates the communication and transparency between its elements. The most interesting ideas and solutions are born at the edges.

Every element has multiple functions

The most effective systems incorporate elements that serve multiple functions, enhancing their value and efficiency. This principle is equally applicable to software development teams. When each team member is engaged in various activities, it not only boosts their engagement and efficiency but also facilitates smoother communication flow.

There is an appointed time for everything

While it may be convenient to shut down and work in isolation, implementing feedback loops in the system is essential. There is a time for building, and a time for cleaning. Similarly, there's a time for planning and a time for reflecting on the work completed. Such a self-correcting system enables adaptation to changing environments and ensures that everyone is kept in the loop.

Patterns should scale

The patterns that everyone understands should be reusable at different levels within the system. Feedback loops can be applied at the level of an individual's work, as well as at the team level over the course of a few weeks. The same principle applies to patterns in software development.

The Practice

Following those principles we've developed a practice that allows us to deliver high-quality software in an efficient and predictable manner. We keep it simple and transparent so that everyone can understand it and contribute to it.

Learn more