Path Dependent Development: Why on Earth are you using SQL Alchemy as a JSON validator?

Summary

The PulpDist project uses SQL Alchemy as part of a custom JSON validator. This could be seen as an unusual choice, so it's worth exploring the way this approach came to be adopted. Practicing iterative development means coping with the tension between "doing the simplest thing that could possibly work" to meet immediate project requirements and avoiding "reinventing the wheel".

"/>

Description

The PulpDist project uses SQL Alchemy as part of a custom JSON validator. This could be seen as an unusual choice, so it's worth exploring the way this approach came to be adopted.

Practicing iterative development means coping with the inevitable tension between "doing the simplest thing that could possibly work" to meet immediate project requirements and avoiding "reinventing the wheel" in order to take full advantage of existing software components.

This means that iterative software designs are inevitably path dependent: decisions made in early iterations can shape later aspects of a project in unexpected ways. These early influences may even predate the project itself, instead being a consequence of wider organisational policies and the personal preferences and abilities of key developers.

Understanding some of these factors can help with understanding why:

  • "good enough" is usually a better target than "perfect"
  • "Not Invented Here" syndrome is not always the villain it is frequently made out to be
  • the need to extensively rewrite existing components is not always a sign of past failure