DEV Community

Akkarapon Phikulsri
Akkarapon Phikulsri

Posted on

Theory of Humanistic Architecture

Humanistic Architecture Learning to See Problems Differently

I had the opportunity to attend a class called “Humanistic Architecture” by Mr. Chakrit Riddhagni.

The class was about applying humanistic principles to software development.

Before talking about what I learned, I would like to share a little about my own perspective on software development.

Personally, I have a quote and a belief about software development: it is both a science and an art.

I see software development as something that has an artistic side, while being grounded in logic, with almost endless possibilities.

“Crafting software requires artistry, guided by imagination, grounded in logic, endlessly enduring.”

This quote has been one of my inspirations since I started working as a developer.

What I mean by this is that I have always liked thinking about software development as a kind of literature. We are not simply writing code. We are solving problems. We are developing and creating something to solve a problem that either we or our customers are facing.

Because of this, as a developer, I naturally work with problems every day.

But… I never really thought much deeper about what a “problem” actually is.

Usually, when we solve a problem for a customer or develop software for them, we receive an issue or a scope of work and then start working on it.

We know that something is a problem, so we focus on solving it.

But we do not always stop and ask

  • What is the actual structure of this problem ?

  • Is this really the problem?

  • And does the solution we are building actually address the problem we are trying to solve?

That changed when I attended the “Humanistic Architecture” class.

One of the biggest things I gained from this class was a new perspective and a set of tools for defining what a “problem” really is.

Anatomy of a Problem

We can look at a problem through the Anatomy of a Problem, which consists of three parts:

  • Current State — where we are now
  • Gap — the difference between where we are and where we want to be
  • Desired State — where we want to go

The Current State is our situation at this moment.

The Desired State is the situation or outcome we want to reach.

And the Gap is the space between them — the part that needs to be changed in order to move from the Current State to the Desired State.

Beyond understanding this structure, I also learned more about how to find solutions that address the root cause of a problem as much as possible through psychological models.

One of them is Satir's Iceberg Model, where one of the most important concepts is Yearning — our deep desire, motivation, or inner need.

Another model is the 3 Centers Model

Heart, Head, and Body

  • Heart — using our feelings and values to determine direction
  • Head — using our thinking to make plans
  • Body — taking action and putting those plans into practice

The Anatomy of a Problem, together with these two models, became the main tools I learned for analyzing problems and finding solutions.

And I don't think these tools are useful only for software development.

I can also see how they can be applied to everyday life and many other situations.

For example, whenever we are not satisfied with our Current State and have a Desired State that we want to reach, a Gap exists between them.

And that Gap is where the problem lies.

This simple way of looking at problems has changed the way I think.

Overall, this class really resonated with me.

It is something that I can actually apply in my work, and I believe it will also be useful in my everyday life.

After coming back to work, I don't think I can look at problems in exactly the same way anymore.

Instead of simply seeing an issue and thinking about how to fix it, I will probably have this structure in my head first:

Current → Gap → Desired

And somehow, I think that's the biggest thing I took away from this class. 😆

Top comments (0)