System Thinking in Software Development
Published: 2023-03-09 06:34:05

Key to making the ultimate software applications

## Under the Hood
The story begins when I was introduced to system thinking by my developer friends who had studied with me during graduation days.

He is doing a crazy shit thing for the past 4 months, not working anymore in any of the companies and he started reading Upanishads and Sanskrit.

## Upanishads
It’s a belief that Upnishads have the answers or the key to living a better life. Most of the profound people in India and the world believe that Upanishad is the ultimate source to have a better life in the 21st century.

My friend once read Upanishad he switches to reading about different thinking patterns such as Lateral thinking, system thinking, inversion thinking and so on.

We use to do a lot of meeting mostly 4 times a week and he share all of his knowledge so that he also understand and learn better.

If you want to start with Upnishads then I would suggest starting with Mandukya Upanishad. Watch the below video you will understand why I am emphasising it a lot on it.

{% youtube eGKFTUuJppU  %}

## System Thinking
Let’s begin the story now, system thinking is not a modern world concept. It is a concept that has an explanation for almost everything in the world.

Why world war II happened, why things behave in a particular fashion, how an atom is found, what is the universe and what is god is all explained or can be answered using System thinking.

The entire universe is a system that contains a small system within it and each and every system has its own components working together interconnected and individually to achieve the desired objective of the corresponding system.

You only need to understand in system thinking are 2 things

- Each and every component has a contribution to the system
- Each and every component are interconnected together
- System has components and each component has its own functions or properties and each component is interconnected to the other.

## Human Body as a System
Take your own body as a system.

The brain, lungs, liver, and heart are the components.

Each organ is a component and has its own application or function.

Each organ cannot survive on its own or perform better on its own, each organ/component needs another component to connect each other in order to work well or achieve the desired outcome for the system.

When these components are put together, aligned together and interconnected together to perform better the desired objective for example walking or running or playing this entire thing is called a system.

## System Thinking in Frontend
Frontend is also a system.

The components of the frontend codebase are Redux, Framework, modules, APIs and so on.

Each component has its function or application.

In order to accomplish the desired outcome that is to build the best frontend website you need to understand only 2 things

- How each component works &
- How each component is interconnected to each other
- How these components talk to each and so on.
Now once you understand this it becomes literally easy to design the frontend architecture.

It's not rocket science anymore to build the best frontend website and I called it the frontend system.

Frontend System
The frontend codebase is the system.

## Components of a frontend system

- Framework
- API
- Styling (HTML/CSS)
- Static files
- small modules, Lodash
These are just overviews of components, you can add new the new component whatever you feel is part of your frontend application.

## How does each component work?
Once the components are decided the next job is to understand how each component work or understand its application.

For example, Redux is for managing the same state of data throughout the application.

## How each component are interconnected?
The next and last part is how you feel each part should be interconnected to build robust, scalable frontend applications.

You can and should follow multiple iterations of components in order to reach the desired outcome.

Your objective is to put these components in such an order or fashion that your frontend application is easy to use, easy to understand, robust and performant and it doesn’t break the system.

Before this system of thinking, we all use to think somehow like this but now we have a proper structure for how to think.

I am sure this will help us in building top-notch software applications.

## Conclusion
This is only a starting or entry point for fusing system thinking in software development. I am working on fusing system thinking in the front end to develop an Ultimate Frontend Architecture.

The reference point is the human body, I am a biotech engineer and did my masters in the same.

I know what each body organ does and what its location and importance and now I will understand the human body system and map this system exactly in frontend architecture to make robust applications.

Because the human body is so a complex yet effective system, each component works very well to achieve the desired outcome and that is quite a real-world inspiration for me.

Stay tuned and subscribe to my newsletter, I’ll be sharing more such interesting stories.

Until next time, have a good day, people.

Shrey

[iHateReading](ihatereading.in)