There are problems with little randomness and number of moving parts: these problems are either easy to reason about, or easy to solve by analytical means (think of systems that can be reduced to few equations).
Then, there are problems with either/both: large number of elements and high degree of randomness. These problems can be dealt with statistics.
Then there is a ball of mud between - medium number of elements/randomness. The number of interactions is too high to be able to reason about them effectively, yet too little to derive solution by statistical means.
Most of the software, especially poorly written one falls in this realm- the more interactions between elements, the harder to reason about. Mastering algorithmic wizardry just moves you slightly right on this plot- being able to decrease the number of interactions makes the system easier to reason about [1]
0: https://www.amazon.com/Introduction-General-Systems-Thinking...
1: http://article.sapub.org/image/10.5923.j.ajss.20150401.02_00...
- You are talking about the application of general systems theory. https://en.wikipedia.org/wiki/Systems_theory
- You would like to learn to apply 'systems thinking' principals and analysis in many domains or to new problems
- You would like to learn to model systems
- It is also important to note in many domains there are specific branches of systems theory that may be more applicable. https://en.wikipedia.org/wiki/List_of_types_of_systems_theor...
- You could spend an entire lifetime learning in this field as many have done.
Types of systems:
Systems can be broken down by multiple dimensions:
- Complex
- simple
- unitary
- pluralist
- coercive
Systems thinking approaches:
- Hard systems thinking
- Systems dynamics
- Cybernetics
- Complexity Theory
- Soft Systems
- Emancipatory systems thinking
- Postmodern systems thinking
Learning More about Systems Thinking:
- A great website is the systems thinker, that covers quite a bit of topics. The articles are actually archives of a newsletter called "The systems thinker" https://thesystemsthinker.com/
- To get an overview of various approaches to systems thinking from an organizational perspective:
Systems Thinking: Creative Holism for Managers by Michael C. Jackson. https://www.amazon.com/Systems-Thinking-Creative-Holism-Mana...
- For general systems theory: An Introduction to General Systems Thinking by Gerald M. Weinberg https://www.amazon.com/Introduction-General-Systems-Thinking...
- For systems thinking and the learning organization:
The Fifth Discipline: The Art & Practice of The Learning Organization by Peter Senge https://www.amazon.com/Fifth-Discipline-Practice-Learning-Or...
- There is a great course that covers soft systems methodology, specifically to solve social problems: https://www.plusacumen.org/courses/systems-practice
- Habits of a systems thinker: https://www.watersfoundation.org/systems-thinking-tools-and-...
- Systems thinking resources: http://donellameadows.org/systems-thinking-resources/
* Update added additional resources.
A Pattern Language, Alexander and Ishikawa and Silverstein http://amzn.to/2s9aSSc
Advanced Programming in the Unix Environment , Stevens http://amzn.to/2qPOMjN
Algorithmics: the Spirit of Computing, Harel http://amzn.to/2rW5FNS
Applied Crytography, Wiley http://amzn.to/2rsULxS
Clean Code, Martin http://amzn.to/2sIOWtQ
Clean Coder, Martin http://amzn.to/2rWgbEP
Code Complete, McConnel http://amzn.to/2qSUIwE
Code: The Hidden Language of Computer Hardware and Software, Petzold http://amzn.to/2rWfR9d
Coders at Work, Seibel http://amzn.to/2qPCasZ
Compilers: Principles, Techniques, & Tools, Aho http://amzn.to/2rCSUVA
Computer Systems: A Programmer's Perspective, O'Hallaron and Bryant http://amzn.to/2qPY5jH
Data Flow Analysis: Theory and Practice, Khedker http://amzn.to/2qTnSvr
Dependency Injection in .NET, Seemann http://amzn.to/2rCz0tV
Domain Driven Design, Evans http://amzn.to/2sIGM4N
Fundamentals of Wireless Communication, Tse and Viswanath http://amzn.to/2rCTmTM
Genetic Programming: An Intrduction, Banzhaf http://amzn.to/2s9sdut
Head First Design Patterns, O'Reilly http://amzn.to/2rCISUB
Implementing Domain-Driven Design, Vernon http://amzn.to/2qQ2G5u
Intrduction to Algorithms, CLRS http://amzn.to/2qXmSBU
Introduction to General Systems Thinking, Weinberg http://amzn.to/2qTuGJw
Joy of Clojure, Fogus and Houser http://amzn.to/2qPL4qr
Let over Lambda, Hoyte http://amzn.to/2rWljcp
Operating Systems: Design and Implementation, Tanenbaum http://amzn.to/2rKudsw
Parsing Techniques, Grune and Jacobs http://amzn.to/2rKNXfn
Peopleware: Productive Projects and Teams, DeMarco and Lister http://amzn.to/2qTu86F
Programming Pearls, Bentley http://amzn.to/2sIRPe9
Software Process Design: Out of the Tar Pit, McGraw-Hill http://amzn.to/2rVX0v0
Software Runaways, Glass http://amzn.to/2qT2mHn
Sorting and Searching, Knuth http://amzn.to/2qQ4NWQ
Structure and Interpretation of Computer Programs, Abelson and Sussman http://amzn.to/2qTflsk
The Art of Unit Testing, Manning http://amzn.to/2rsERDu
The Art of Unix Programming, ESR http://amzn.to/2sIAXUZ
The Design of Design: Essays from a Computer Scientist, Brooks http://amzn.to/2rsPjev
The Effective Engineer, Lau http://amzn.to/2s9fY0X
The Elements of Style, Strunk and White http://amzn.to/2svB3Qz
The Healthy Programmer, Kutner http://amzn.to/2qQ2MtQ
The Linux Programming Interface, Kerrisk http://amzn.to/2rsF8Xi
The Mythical Man-Month, Brooks http://amzn.to/2rt0dAR
The Practice of Programming, Kernighan and Pike http://amzn.to/2qTje0C
The Pragmatic Programmer, Hunt and Thomas http://amzn.to/2s9dlvS
The Psychology of Computer Programming, Weinberg http://amzn.to/2rsPypy
Transaction Processing: Concepts and Techniques, Gray and Reuter http://amzn.to/
Types and Programming Languages, Pierce http://amzn.to/2qT2d6G
Understanding MySQL Internals, Pachev http://amzn.to/2svXuFo
Working Effectively with Legacy Code, Feathers http://amzn.to/2sIr09R
Zen of graphics programming, Abrash http://amzn.to/2rKIW6Q
http://www.amazon.com/Introduction-General-Systems-Thinking-...
http://www.amazon.com/The-Systems-Bible-Beginners-Guide/dp/0...
http://www.amazon.com/Ackoffs-Best-Classic-Writings-Manageme...
I really enjoyed these books, but I am not super well-read in this area, so there may be better ones out there. You could try searching for "systems theory" and see what other resources are out there.
Systems theory is a very broad topic, so you'll find it attached to many specific disciplines, but the general idea is that you can take a bunch of simple things, hook them together, and produce a "being" that has totally weird behavior in aggregate.
Second learn stuff thats in this book: http://www.amazon.com/Introduction-General-Systems-Thinking-...
Third,The general idea of good education is to prepare you for the future rather than learning about the past
[0] https://www.amazon.com/Introduction-General-Systems-Thinking...