DEV Community

Cover image for System Thinking
Herbert Breunung
Herbert Breunung

Posted on • Edited on

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.

Top comments (0)