DEV Community

Cover image for System Thinking
Herbert Breunung
Herbert Breunung

Posted on • Updated on

System Thinking

Most of us here know what is required to be a good programmer. Having a functioning distribution, docs in order, meaningful abstractions, 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 functioning 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 60-70% of the issues. Once you have quality docs with some issues it can be helpful to have another set of eyes. Or if less important you can rely on tracker issues.

And if we understand software building as a system of interaction between the customer, 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)