- Session type
- Technical level
This talk is aimed at introducing a slightly different way of thinking about many of the complex trade-offs that are involved in creating and shipping useful software, and the way those trade-offs influence the evolution of a piece of software over time.
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 more than 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.
The views presented in this talk are based on my personal observations of the open source development community and the defence sector over the better part of a decade.
A version of this talk is also being presented at PyConAU 2012.