Path Dependent Development: Why on Earth are you using SQL Alchemy as a JSON validator?
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
Nick is a CPython core developer and a nominated member of the Python Software Foundation.
Since June 2011, after 12+ years in the aerospace and defence sector, Nick has been working on internal tools for Red Hat, including PulpDist, a set of Pulp plugins and other tools intended to make it easier to maintain a private filtered data mirroring network on commodity hardware.