DEV Community 👩‍💻👨‍💻


Posted on

The thesis, antithesis and synthesis in software development

The Philosopher Georg Wilhelm Friedrich Hegel wrote that progress is not always linear, and instead is often messy, and only achieved by lurching from one mistake to another. It usually takes 3 lurches or 3 swings of a pendulum to arrive at a balanced outcome. I see this often played out in Software Development, such as through the adoption of a new development practice.

For example the enlightenment movement principle truth was the use of reason. This led to the rise of romanticism, which challenged the enlightenment with the notion that emotion was more important. Both movements contained truth but were extreme in aspects and contained distortions of the truth, leading to a clash of ideas. This clash was necessary to form ideas that closer resembled the truth.

Hegel views these three stages as the thesis, antithesis and synthesis. In this case, the enlightenment being the thesis, romanticism being the antithesis and the clash of the two being the synthesis.

Growth requires the clash of divergent ideas and will therefore be painful and slow. Both overreactions are inevitable, and part of the process. They clash and interact until the best elements are formed into a synthesis.

In software development this theory often gets played out in the industry at large and also at the company level.

Take for example unit testing. Writing unit tests after code could be viewed as the thesis, but it was an extreme position. The advent of Test Driven Development proposed a new approach, but also often got applied in an extreme manner, i.e. TDD must be applied in 100% of all cases. Ideally, companies move to the synthesis stage, allowing the clash of the ideas, resulting in a synthesis whereby the right approach is applied according to context.

The synthesis is no guarantee. Often the synthesis is delayed or never reached, by repeated lurches towards extreme positions. To ensure the synthesis takes place, it requires letting go of dogmatic thinking, discussing and actively listening to alternative viewpoints, and experimenting to find the right balance.

Top comments (0)

Tired of sifting through your feed?

You can change your feed and see more relevant posts by adding a rating to different tags on DEV. Head here to adjust your weights.