Moldable Development

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.

Why is it important?

You optimize the single largest expense in software development: figuring the system out.

How does it work?

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.

What does it entail?

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.

Examples

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:

Moldable Development: Guiding Technical Decisions Without Reading Code

Read more

Evaluating the Feature Toggles From Open edX

Read more

Moldable Development by Example - QCon Plus 2021

Read more

WTF is Moldable Development

Read more

Principles

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.

How to learn moldable development?

Play with Glamorous Toolkit

Moldable Development must be experienced. We created Glamorous Toolkit, the moldable development environment, so that you can do just that.

gtoolkit.com

Join the community

Learning is always better together. Join us.

Frequently asked questions

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.