Tudor Girba Profile picture
13 Apr, 31 tweets, 12 min read
#MoldableDevelopment is a way of programming through which you construct custom tools for each problem.

What does that mean exactly?
Where does it come from?
Why is it relevant?

Read on.

1/
The original idea of #MoldableDevelopment came from the work on Humane Assessment through which I argued that we need custom tools to reason about software systems effectively.



2/
The idea of custom tools is a significant departure from the typical software engineering canons which often argue the opposite.

Still, it is relevant because it tackles the single largest expense in software development: figuring the system out.



3/
At first, we applied this to inspecting systems. This alone had implications for the development process. For example, for steering agile architecture.



3/
It was only a few years later that @Chis_Andrei and colleagues showed that we can apply the same principles to the whole development lifecycle:

(a thesis worth going through)
scg.unibe.ch/archive/phd/ch…

4/
Specifically, @Chis_Andrei's thesis says that:

"... software development tools need to support inexpensive creation of domain-specific extensions, and automatically select extensions based on the domain model and the developer’s interaction with the domain model."

5/
Note how context is defined both in terms of the domain and of the developer's interaction with that domain. In particular, the latter emphasizes that the tool must match the individual *after* the problem is known.

6/
Because software is highly contextual, we cannot predict the specific problems people will have. We can predict classes of problems, but not specific problems. That's why ready made tools are never enough. We need to construct tools after we know the problem.

7/
What's a custom tool?

A query can be a custom tool.
A visualization can be a custom tool.
A browser can be a custom tool.
A constraint can be a custom tool.

The key is only that it's made to match the question, and not that the question is made to match the tool.

8/
For custom tools to be practical, they need to be inexpensive to create. This, in turn, requires an appropriate environment. A moldable environment.

#gtoolkit shows how this can work in practice.

gtoolkit.com

12/
First, we applied it to inspecting. Then to debugging. Then to search. Then to documentation. Then to editing.

And now, we apply it to adjacent domains.
(I am so looking forward to talk about this one)

13/
(A note: What you see at gtoolkit.com is the second generation of the project.

Also, we actually left the code editor to the very end because we knew we wanted an experience that does not start and is not centered around an editor. More on that another time.)

14/
#gtoolkit is also the first significant system built through #MoldableDevelopment. It is not only the medium to experience moldable development, it is an extensive case study, too. Learning #gtoolkit is essentially indistinguishable from learning #MoldableDevelopment.

15/
We also applied and validated #MoldableDevelopment in industry for more than a decade.

Before @feenkcom, I even took a job to lead the development on the scariest legacy system I could find around just to live with the consequences of my decisions. 3.5 years. It worked.

16/
At @feenkcom we got the chance to work with many challenging situations and systems. Some systems were old. Some systems were brand new. Some were large. Some were small. All required explaining. And all were critical.



17/
An example of a legacy challenge.

A large central database needed to be migrated to a new structure. The challenge: what applications need changing and how? How did we answer? We built a custom tool with which we navigate and query the landscape.

18/
Another example of a legacy challenge: Reverse engineer and port a core part of a critical system.

We were given 1 year. We did it in 1 month.
In the video here @thorgch from Lam Research describes the experience of working with us.



19/
And here is an example for a new system. In this case, we tell a story about privacy by showing the inside of the system. This serves both as a vehicle for dsicovering the domain and as a means to replace a business presentation deck.



20/
These are rather diverse situations. Yet, in all cases, we used exactly the same tools and techniques. Why? Because we are stubborn. And because this is the only way to validate that #MoldableDevelopment works. And it just works.

21/
All this work is tightly related to #gtoolkit. It is the vehicle with which we do our work and it is what we use to teach. We built it because only talking about these ideas was not enough. And because it's just pure fun.

22/
It's also worth noting that along the way we built a few other adjacent things.

For example, we replaced tests with examples and created live documentation.



23/
We even built our own graphical stack just to be able to express new interactions.



24/
All this to say that #gtoolkit is interesting for multiple reasons. Still, the most interesting is how it documents the approach with which it was built. If you let it, it can teach you.



25/
An important lesson we learnt while building #gtoolkit is that any boundary in software is arbitrary. The corrolary of it is that once we can make a level explainable (e.g., user interface), we can make any level explainable.



26/
#MoldableDevelopment works at any level of abstraction and for any single development problem. It's for large problems. It's for small problems. And, it just works.

27/
Ah, who is #MoldableDevelopment for?

First and foremost, for developers. Oh, are you worried you do not have time to learn it? Legitimate. Then again, think of all the time you spend reading. And then think how that makes you feel. What if you could smile while debugging?

28/
But, it's also for business people and managers. Business people and managers?

#MoldableDevelopment adds a new feedback loop. You should care about it because the previous feedback loops changed the business. This one will do the same.



29/
Want to learn more?

Play with gtoolkit.com.

Join the conversation here:
discord.gg/FTJr9gP

Or just ping us.

30/

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Tudor Girba

Tudor Girba Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @girba

11 Apr
Interviewing new employees is a two-way street. On the one hand, you want to know them. On the other hand, you want them to know you, too.

It's also useful to remember that the interaction is also an investment on both sides.

1/
While both parties are invested in similar ways, the conversation is not symmetric. For example, the interviewee is likely significantly more emotionally invested.

That's why as an interviewer, I prefer to compensate.

2/
Typically, interviews are optimized for the act of filtering interviewees. In these situations the organization gains the most. The interviewee can at most get in. However, in the worst case scenario is that nobody learns anything.

3/
Read 10 tweets
12 Mar
A while back, I asked “what is architecture?” and I got many responses within just one day. Some serious, some more (bitter-sweet) joking. We can identify some cluster of responses, but even so, there are certainly a dozen distinct perspectives.



1/
That there are many perspectives is not a surprise given that the literature is full with competing definitions. For example, it's not atypical for architecture books to say something like: “there exists many definitions, so here is ours”.



2/
The search for the perfect definition of architecture captured the imagination of several generations by now, yet it still seems to remain elusive. But, what if it’s Ok to have many of them?



3/
Read 22 tweets
3 Mar
Tell us about programming languages that people might perceive to be extinct, but are still around today.

Let’s see how many we get.

👇
Read 4 tweets
28 Feb
The monolith vs microservices debate…

By now there is plenty of evidence that both architectures can lead to a “mess”. This only shows that we should not look at these as mechanisms for controlling the said mess” in the first place.

The answer lies somewhere else.

1/
“It’s the people!”

Well, as long as it’s people building the system, of course it’s the people. But, saying that does not get us closer to figuring a way forward though.

2/
Now, what exactly does “mess” mean? The famous spaghetti code?

Mess tends to assume that there is a clean way. And by clean, people typically mean easy to understand and change.

3/
Read 11 tweets
22 Jan
“Developers spend most of their time figuring the system out."

Let’s dissect this a little.

🧵

1/
The oldest reference on the topic I know of dates back to 1979:

Zelkowitz, Shaw, and Gannon. Principles of software engineering and design. Prentice-Hall Englewood Cliffs, 1979.

2/
It said that most of the development time was spent on maintenance (67% in the book).

Granted, the book does not specify how the figure was obtained. Still, it was deemed an important enough problem to attract significant research attention since then.

3/
Read 18 tweets
5 Apr 20
The governor of New Jersey called explicitly for COBOL programmers to help with the development of the unemployment system:


This is how the software environmentalism crisis looks like. An explanatory thread. 1/
In the software development industry, we focus exclusively on building systems. The conversations are dominated by new languages, new frameworks, new deployment options. And the body of software grows exponentially. At the same time, we are unable to remove old systems. 2/
From this perspective, our software industry behave not unlike the plastic industry: we focus on building without any regards to recyclability. That is not sustainable. And, given the breadth of software’s reach, it is not responsible either. 3/
Read 44 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!