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.
You optimize the single largest expense in software development: figuring the system out.
You build a tool that shows your current problem in a way that makes it easy to grasp. It's like data science, but for software.
You need new skills: the facilitator constructs custom tools; the stakeholder knows what to do with them. And, you'll want to change your organization, too.
Moldable Development has a broad range of applications. In fact, we believe it should be an integral part of approaching all software engineering problems. Here are a few examples:
Software engineering is primarily a decision making activity.
Software should be explainable when we need it.
Any boundary in software is arbitrary.
There is no single dominant representation of anything in software.
Once a human deems a representation as meaningful, it is the responsibility of the system to carry it forward.
Software architecture is an emergent property.
When programming, "reading" has distinct needs from "writing".
The choice of the development environment is as important as any other major decisions about a system.
Moldable Development must be experienced. We created Glamorous Toolkit, the moldable development environment, so that you can do just that.
Learning is always better together. Join us.
What's the difference between Moldable Development and Literate Programming?
They are similar in that they both promote the use of narratives for depicting systems. However, Literate Programming offers exatly a single narrative, and that narrative is tied to the definition of the code. Through Moldable Development we recognize that we always need multiple narratives, and that those narratives must be able to address any part of the system (not only static code).
Isn't Moldable Development like model-driven engineering then?
Not quite. It's more similar to model-centric engineering: one system and multiple views on it.
Ok, then isn't it more like visual programming?
No. Typically, visual programming entails a graphical notation with which you create programs. Through Moldable Development, you construct views orthogonally to how the program was defined. Furthermore, the visuals are not limited to code, but we apply it throughout the whole system, including objects, logs or data.