I have been quiet, rather, I have immersed myself in a lot of reading recently (most of them belong to very random subjects).
There is one related to software, “Pragmatic Thinking & Learning – Refactor Your Wetware” by Andy Hunt (recommended by my colleague ty). It is a nice book, I would recommend it to anyone (particular software developer) who is interested in learning the limitation of our thinking. With the awareness of the limitations, you may improve the important thinking and learning skills, which would naturally lead to productivity and active and efficient discovery of unknown unknown.
Things can work, but not as good as if your thinking had been better. Learning can be fruitful, but not as effective as if we spend time tuning the skill of learning.
The book has a strong dialect towards "software" in general. At the same time it takes many references or pointers from various other fields (healthcare, cognitive science, behavioral psychology, education theory, investment thoery etc) to give different perspectives and combine the ideas from those disparate fields.
It discusses the importance of context, the growth pattern from novice to expert (Dreyfus model: novice, advanced beginner, competent, proficient and expert), the balance (or interplay) between logical (L-mode) and creative (R-mode), the (good or bad) habitual tendency of human mind (cognitive biases, generational affinity, personality tendencies). Given the above backdrop, Andy Hunt prescribed (in the convention of the “Pragmatic Series”) numerical ways and techniques to improve thinking and learning skills (learn deliberately, SMART, SQ3R, learn by teaching, gain experience, embrace error, manage focus, etc)
I like the discussion on context and the repeated assertion that context is the king. This is particularly relevant for the world of software development (from solution artchitecture, to feature design, to library design, to design of data structure and algorithms). Software traditionally emphasizes "encapsulation”. That is to allow nothing but different level of abstractions, or context.
Taking an extended analogy, if every problem (low level or high level) is designated as a context, we essentially perform “context switch” within our brain. Our brain is similar to an OS. The OS should spend more time in crunching the context itself (solving the actual problem); rather in switching the context (the switching latency has to be measured in terms of retrieving and reloading of the entire working memory). When the context is fully loaded, we will decompose the problem into “system calls” which could be handled by the OS.
Therefore, important metrics of the OS are
-
Latency of context switching (also discussed in this part article)
-
Clarity and maturity of “system calls” (organized experience)
-
Stability and reliability of OS (bugs in thinking or even in experience?)
This OS is not open sourced, neither could be virtualized, it belongs to your and me, ourselves. However, it does allow to insert breakpoint for some verification, and allow to perform a core dump for introspection. After all, there is only one rule, there is no substitute for thinking, and there is no substitute for improving our thinking.
Posted
Nov 24 2008, 12:46 AM
by
blackinkbottle