Tudor Girba Profile picture
Feb 19 19 tweets 6 min read
"Everyone in the team should know the vision. Including the technical people." Sure, says everybody.

"Everyone in the team should know how the implementation. Including the non-technical people." What?!

Yep.

Let me take you on a ride.

1/
Typically, it all starts with a vision.

2/ Image
The interface kind of reflects it.

3/ Image
But the implementation ... well, let's just say that the original idea is to be seen somewhere, but you have to squint really hard.

"Why is that a problem? Is it not the norm?"

4/ Image
Unfortunately, it is the norm. But it should not be.

Think of this: When the implementation changes how do you know it still reflects the vision? If the implementation does not reflect the vision, you really don't. But you should.

5/
So, what can we do?

Change the system to match the vision. Maintain a ubiquitous language throughout the system. The whole domain-driven design dance.

Only this perspective sees the implementation as translating the vision into technical details. A one-way street.

6/ Image
Yes, we can find ways to simplify the implementation. Yes, we can align it more with the existing vision. Investing in the domain design does pay off.

At the same time, it can be such a missed opportunity.

Bare with me.

7/
We often hear that technical aspects should be left to technical people. Outsiders should not have anything to say. They should delegate and trust.

Indeed, when the two worlds (tech and non-tech) are engaged in a transactional relationship, that can work.

8/
A transactional relationship can work just fine when you know upfront you are dealing with a commodity.

For most other things, you want a deeper alignment. Along these lines 👇


9/
For quite a while, software went by as a utility. Today however, it's hard for us to ignore how software is more like a medium. In the McLuhanian sense. This medium reflects our view of some part of the world, physical or otherwise.



10/
The medium is defined by the implementation not the vision. That's why alignment is so desirable.

But alignment never goes one way. We need to allow the implementation to affect the vision, too. When that happens we make room for opportunities that otherwise remain hidden.

11/ Image
But there is a complication.

I said that a system might look like this 👇. This implies that we can actually get an intelligible overview of the system.

12/ Image
In reality, the system most often appears opaque, especially to non-technical people.

"Of course it's opaque. It's code!"

If we want alignment, the inside of the system must become explainable.

"How?"

13/ Image
Have you ever been in a situation when you thought that something was easy to add or change only to find out much later it was not? That happened because your mental model did not correspond to the reality of the system.

14/
The thing is that the mental model will almost always be incomplete or wrong. And here is the other thing: it applies to technical people, too. The size of systems and the rate of changes inevitably lead to this.

15/
As the existing mental model is not necessarily reliable, we should first want to get an overview of the system before doing anything. It turns out that we do spend most of the development energy doing just that.



16/
We can optimize the way we figure the current system out many times compared to the current status quo without much investment. We can make the inside of our systems explainable. We just have to make it a priority.

17/
Granted, any increase in alignment will improve the situation and can even get you further than most teams today.

But you can go much further. You just have to want to.



18/
#MoldableDevelopment is a systematic method to make systems explainable.

We created #GToolkit to explore in practice the extent to which we can explain the inside of systems. More than a decade later, we still did not find the end of the road.

gtoolkit.com

19/

• • •

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

Feb 21
A beautiful example of #MoldableDevelopment. The view itself is not the most interesting part. The fact that you can write it with a screen of code is. That code is the legend of the tool.

1/
While the tool is generic, we can easily imagine customizing it for specific contexts. For example, highlight specific files that are important for a specific investigation, like those from a special folder. When every view is an extension, you enable a rich experience.

2/
In the not too distant future, we’ll look back to this age and find the present default tools rather quaint.



3/
Read 4 tweets
Jan 3
Last year we shipped a first version of #Lepiter and it felt great to see it flying out the door:


Lepiter is the latest significant step in our journey to making systems explainable. Here is a behind the scene peak of how we got here.

1/
Our guiding north star @feenkcom is making the inside of systems explainable. We spent a great deal of energy rethinking how we can figure systems out, and this led to #MoldableDevelopment and #GToolkit.



2/
#GToolkit proposes a new development experience. We see the environment as a language made out of visual and interactive operators that can be combined in many ways while working with the environment.

3/
Read 20 tweets
Nov 30, 2021
#ToolsForThought

But, what thought?

🧵

1/
The recent conversations about #ToolsForThought tend to revolve around note taking. Indeed, a note can be a representation of thought...

2/
But, a tweet can also be a representation of thought.



3/
Read 21 tweets
Nov 9, 2021
I gave a talk at #QConPlus on "Moldable Development by Example".

A summary.

1/ Image
The talk consisted mostly of two stories. Two examples.

I started with a little story inspired by our recent experience of going through the Open edX system.



2/
It went like this. Imagine you have a system written in Python and you want to split it for various reasons.

You'd first look for components that already exist. In this case, the system already seems to have top components available (as documented by top folders).

3/ Image
Read 20 tweets
May 17, 2021
Personal computing was conceived to be personal. Personal, as in experiencing computation the way it fits you. Your context should come first and dictate what is interesting. The experience should follow.

1/
For example, consider where you are reading this tweet. Or where you are writing a reply to it. It's not unlikely that you are doing it exactly in the same way many other millions of people are doing it: using the generic interface that Twitter offers.

2/
Of course, this is convenient. At the same time, it might not match your actual needs. For example, say you like writing longer threads. Longer threads imply more consideration and possibly longer time to write. And, you may want to handle multiple drafts in parallel.

3/
Read 30 tweets
Apr 13, 2021
#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/
Read 31 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

Don't want to be a Premium member but still want to support us?

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

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

:(