Image by Jason Leem

Our guiding principles

Jan 12, 2022

We believe that good software is built by companies and teams where incentives are aligned to produce value.

We strive for this at Corso with 3 guiding principles:

Real value must be delivered as early as possible in the product development process

A product is successful when it provides value to the people using it; products and features are worthless until they are put in the hands of actual users.

Teams must collaborate from the beginning to establish value in products and features. Prototypes, proofs-of-concept, and minimum viable products should be used to confirm value as early as possible. Additional iteration should continually refine and cultivate that value.

Continually putting prototypes and proofs-of-concept in front of stakeholders and users during the development process will direct where further investment is needed. Going all the way to a final product from an initial design or idea will rarely, if ever, maximize value.

Ownership and authority must be shared between those closest to the problems, and those who deliver the solutions

The development of successful software is complex and depends on lots of variables, many of them unknown at the start of a project.

To provide the best chance of success, those who expect to receive value from the development of software products and features must have shared ownership and responsibility for the final outcome, and must be involved throughout the planning and development processes.

Product development teams must have a desire to understand real-world problems, work toward impactful solutions, and take well-informed, innovative risks. Stakeholders and leaders must understand the development process well enough to collaborate to deliver value in a way that is helpful.

Failure will occasionally happen; leadership attitudes must allow for it to occasionally occur. Each failure holds an opportunity for growth, but only if those involved in the failure feel secure and able to discuss the lessons learned.

Software quality is an intangible aspect of its value worth actively striving for

Great software products deliver quality alongside more tangible features. The results of deemphasizing quality in favor of quickly producing new features can often take a while to be outwardly visible. By the time the lack of quality is readily apparent, correcting course can require a significant effort.

Together, product development teams and stakeholders must continuously strive for excellence in software rather than settling for mediocrity.

Valuable software adapts to evolving needs, and is built with flexibility as a core principle of its design and architecture. Simple solutions are superior to complex ones despite simplicity often being harder to achieve, and are a strong indicator of genuine quality.