DEV Community

Cover image for System Thinking
Herbert Breunung
Herbert Breunung

Posted on • Edited on

2

System Thinking

Most of us here know how good software looks like. It has a functioning distribution package, docs in order, meaningful abstractions, manageable user interface comments when needed and so forth. Naturally, if you want to uphold such a nice state you have to think a lot before doing anything, then going three steps backward and make a lot of other changes just to enable the changes you want to make and maybe even fixing stuff you discovered on the way.

Yes real programming can be tedious if not broken down in small enough tasks (release often). And there is lots written about it, that loosely fits into the category of software engineering. But instead of memorizing lots of rules, I find it far more helpful to adopt system thinking.

Programmer already (should) do that when writing tests. Then we step outside our role of an app/lib dev and try to think about all the ways the software could be broken. In similar fashion we can read our docs like someone who tries to get basic help. Yes that's not easy and also a bit silly task - just to pretend what we don't know what we know. But it is an acquired skill to blend out certain knowledge and having fun to play ignorant. In the end its way more effective than organize someone who is really an outsider and communicate with him - especially with the first 70-80% of the issues. Once you have quality docs with some issues, the game is different. Then it can be helpful to have another set of eyes, that bring up issues which have to be fixed by the author anyway.

And if we understand software building as a system of interaction between the manager, developer, user and other people, we can access if things are good simply by taking the perspective of a role - after all these are humans too.

We should see - the most important system in that of the human awareness. Things like attention span, direction of focus, amount of data that fits into the rational mind or the intuitive mind (magnitudes more) and so forth are to seldom considered and taught. But if you know a bit about it (and my next posts will talk more about it) it will be less hard to simulate other perspectives. It will also help you to stick to processes, that have your own human limits as a developer in mind. This is the core of my cellular programing method, than i want to develope also in following posts.

AWS Q Developer image

Your AI Code Assistant

Automate your code reviews. Catch bugs before your coworkers. Fix security issues in your code. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

Top comments (0)

Eliminate Context Switching and Maximize Productivity

Pieces.app

Pieces Copilot is your personalized workflow assistant, working alongside your favorite apps. Ask questions about entire repositories, generate contextualized code, save and reuse useful snippets, and streamline your development process.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay