Learning: Moldable Development
For the last few months I've been learning about and trying to practice Moldable Development.
From the moldable development website:
Moldable Development is a way of programming through custom tools built for each problem.
Software is shapeless. We, humans, need a shape to reason about anything. Tools provide the shape of software. By molding our tools to match the context of our systems, every problem in software can be exhibited in a way that a human can relate to and reason about.
In particular, I've been using Glamorous Toolkit (GT) as the vehicle for this learning. From its website:
Glamorous Toolkit is the Moldable Development environment. It empowers you to make systems explainable through experiences tailored for each problem.
When first picking up GT, the series of videos on YouTube that demonstrate GT concepts in 7 minutes were especially helpful, since they show how to interact with the GT environment itself.
I've also spent time with members of the community on Discord sharing what I've learned and getting feedback from Tudor Girba and others about the ways in which moldable development enables new horizons for leveraging all of the knowledge stored in the software systems that we develop.
Some powerful ideas and findings that have surfaced during this exploration:
- Your code base is a knowledge base.
- Time spent building tools that help us understand our software systems is economical because (1) developers already spend over half their time simply building up an understanding of the system (see studies linked in the Resources section), and (2) decisions based on reality surfaced by such tools save hours/days/weeks of time heading in wrong directions based on imperfect mental models.
At work, I've been using GT to build tools for interacting with Shortcut via its public API, both for my day-to-day responsibilities as an Engineering Manager, but also to build out prototypes of new features in GT. If I have some basic data analysis to do, GT's Lepiter facility (executable notebook, but moldable) provides a good environment for that as well.
Aspirationally, I'd like to be able to do code analysis and even development of Clojure systems from GT. As time permits, I'm working on creating a basic evaluator of Clojure EDN in GT, so that I can use GT as an EDN data explorer in much the way GT is already an at-hand environment for exploring JSON payloads.
Moldable Development by Example presentation by Tudor Girba