Pragmatic Thinking and Learning provides a broad overview about techniques and theories about thinking and learning, written by a programmer for programmers. While this broad overview is the strength of the book, it's also its weakness, as it doesn't cover the topics in depth.
Programming is all about problem solving. It requires creativity, ingenuity, and invention.
Software isn't designed in an IDE or other tool. It's imagined and created in our heads.
The two most important modern skills are: communication skills, and learning and thinking skills.
You don't get taught; you have to learn. We tend to look at the teacher/learner relationship the wrong way around: it's not that the teacher teaches; it's that the student learns. The learning is always up to you.
The essence of pragmatism is to do what works – for you.
In systems thinking, one tries to envision an object as a connection point of several systems, rather than as a discrete object unto itself.
Always consider the context.
Journey from Novice to Expert
The Dreyfus model of skill acquisition outlines five discrete stages through which one must pass on the journey from novice to expert. It describes how and why our abilities, attitudes, capabilities, and perspectives change according to skill level.
It's often difficult for experts to explain their actions to a fine level of detail; many of their responses are so well practiced that they become preconscious actions.
When experts do their thing, it appears almost magical to the rest of us.
You are neither "expert" nor "novice" at all things; rather, you are at one of these stages in some particular skill domain.
Novices have little or no previous experience in this skill area. They don't particularly want to learn; they just want to accomplish an immediate goal. They can, however, be somewhat effective if they are given context-free rules to follow.
Once past the hurdles of the novice, one begins to see the problems from the viewpoint of the advanced beginner. They can start to break away from the fixed rule set a little bit. They can try tasks on their own, but they still have difficulty troubleshooting.
Competent practitioners can develop conceptual models of the problem domain and work with those models effectively. They can troubleshoot problems on their own and begin to figure out how to solve novel problems. These are great folks to have on your team. They can mentor the novices and don't annoy the experts overly much.
Proficient practitioners need the big picture. They will seek out and want to understand the larger conceptual framework. They also can correct previous poor task performance. They can reflect on how they've done and revise their approach to perform better the next time. They can also learn from the experience of others.
Experts are the primary sources of knowledge and information in any field. They are the ones who continually look for better methods and better ways of doing things.
It's easy to derail an expert and ruin their performance. All you have to do is force them to follow the rules.
When you are not very skilled in some area, you are more likely to think you're actually pretty expert at it (also know as Dunning-Kruger effect). The converse seems to be true as well; once you truly become an expert, you become painfully aware of just how little you really know.
Use rules for novices, intuition for experts.
Not knowing just how much it is that you don't know, is referred to as second-order incompetence.
The beginner is confident despite the odds; the expert will be far more cautious when the going gets weird. Experts will show much more self-doubt.
Know what you don't know.
Teaching is an expertise in its own right; just because you are expert in some subject is no guarantee that you can teach it to others.
Learn by watching and imitating.
Keep practicing in order to remain expert.
Avoid formal methods if you need creativity, intuition, or inventiveness.
Don't succumb to the false authority of a tool or a model. There is no substitute for thinking.
In systems thinking, as in object-oriented programming, it's often the relationships between things that are interesting, not the things themselves.
Learn the skill of learning.
This Is Your Brain
Your brain is not like software. Software never ages and never degrades. But wetware must be refreshed, must be used, or it is lost.
You need to be ready to capture any insight or idea twenty-four hours a day, seven days a week, no matter what else you might be involved in because they pop up independently of your conscious activities, and not always at a convenient time.
Capture all ideas to get more of them. If you don't keep track of great ideas, you will stop noticing you have them.
Just capturing ideas is only the first step; you then need to work with the idea.
Learn by synthesis as well as by analysis.
Known problems (such as bugs in code, bad process in an organization, poor interfaces, or lame management) that are left uncorrected have a debilitating, viral effect that ends up causing even more damage.
Aesthetics make a difference, whether it's in a user interface, the layout of your code and comments, the choices of variable names, the arrangement of your desktop, or whatever.
Creativity comes from the selection and assembly of just the right components in just the right presentation to create the work.
Neuroplasticity (the plastic nature of the brain) means that the maximum amount you can learn, or the number of skills you attain, is not fixed. There is no upper limit – as long as you believe that.
Get in Your Right Mind
Add sensory experience to engage more of your brain.
Just as creativity can be stifled by trying to tie ideas down prematurely, learning can be impeded by trying to memorize minor facts when you don't yet grasp the whole.
When problem solving, learn to be comfortable with uncertainty. When creating, be comfortable with the absurd and the impractical. When learning, don't try so hard to learn and memorize; just get "used to it" first. Try to understand the meaning first; get the overall gist of it.
Part of being comfortable with uncertainty means being comfortable with something that's incomplete and unfinished.
Writing for a public audience is a great way to clarify your own thoughts and beliefs.
Step away from the keyboard to solve hard problems.
Change your viewpoint to solve the problem.
Most problems have multiple solutions or multiple "right answers".
Debug Your Mind
We make decisions and solve problems based on faulty memory and our emotional state at the time, ignoring crucial facts and fixating on irrelevant details because of where and when they occur or whether they are brightly colored.
We tend to ascribe other people's behavior to their personality, instead of looking at the situation and the context in which their behavior occurs. We might excuse our own actions more easily.
Remember that behavior is oftentimes more because of reaction to a context than because of fundamental personality traits.
Self-serving bias: if the project is a success, I'm responsible. If it tanked, then I'm not.
We are not comfortable with doubt and uncertainty – so much so that we'll go to great lengths to resolve open issues and to remove uncertainty and reach closure. But uncertainty can be a good thing: it leaves your choices open. Forcing premature closure cuts off your options and leaves you vulnerable to errors. Artificially declaring a decision, such as the end date of a project, doesn't remove the inherent uncertainty; it just masks it.
Confirmation bias: everyone looks for choice facts to fit your own preconceptions and pet theories.
Exposure effect: we tend to prefer things just because they are familiar.
The Hawthorne effect describes that people have a tendency to change their behaviors when they know they are being studied/watched
As a group, we tend to miss important developments because we're focused on the wrong thing or are asking the wrong questions.
One of the most popular misconceptions arises from declaring a cause and effect when there's only a correlation. Just because two variables are correlated does not mean that either causes the other.
Our biases make it nearly impossible to predict the future and very difficult to navigate in the present.
Watch the outliers: "rarely" doesn't mean "never".
You'll be at your peak of intelligence at the very end of the project and at your most ignorant at the very beginning. So, do you want to make decisions early on? No; you want to defer closure for as long as possible in order to make a better decision later. But that means critical issues may stay unsettled for a long time, which makes many people acutely uncomfortable.
Be comfortable with uncertainty.
Trust ink over memory; every mental read is a write.
Different generations inherently have different values, and your own attitudes and concerns change as you age as well.
Not everyone shares your deep-seated values, and that doesn't mean you're right or they're wrong.
If you are around happy, upbeat people, it will tend to lift your mood. If you're hanging out with depressed, pessimistic people who feel like losers, you will start to feel like a depressed, pessimistic loser as well. Attitudes, beliefs, behaviors, emotions – they are all contagious.
Negative thoughts can rewire your brain just as easily as positive thoughts.
What we think of as "normal" isn't necessarily so. You can be misled easily by your internal wiring, in addition to prejudices and biases of all sorts, and think everything is just fine.
Trust intuition, but verify.
To help get a bigger picture perspective and test your understanding and mental model, ask yourself something like the following questions:
- How do you know?
- Says who?
- How specifically?
- How does what I'm doing cause you to...?
- Compared to what or whom?
- Does it always happen? Can you think of an exception?
- What would happen if you did (or didn't)?
- What stops you from...?
If you expect the worst from people, technology, or an organization, then that's what you're primed to see.
Every decision is a trade-off. There ain't no free lunches. There is always a flip side, and looking closely at the trade-offs – in detail, both positive and negative – helps make sure you're evaluating the situation more fully.
Your ability to learn may be your most important element of success. It's what separates getting ahead from just getting by.
The technology itself isn't as important; it's the constant learning that counts.
Learning isn't done to you; it's something you do.
Mastering knowledge alone, without experience, isn't effective.
Use SMART objectives to meet your goals. SMART stands for Specific, Measurable, Achievable, Relevant, and Time-boxed. For any goal you have in mind, you need to have a plan: a series of objectives that will help to get to your goal.
How do you know when you're done?
Measurable goes hand-in-hand with being specific. It's hard to measure something general and abstract but much easier to measure something concrete and specific – using actual numbers. If you think you can't measure your objective, then it's probably not specific enough.
You need to give yourself a deadline. Without deadlines, a goal will languish and be perpetually pushed aside by the more pressing exigencies of the day.
Setting yourself a goal is the first step. The next step in an action plan is to create small objectives that allow you to achieve something every day or so. The more small objectives you have, the more easily you'll see where you are in relation to your goal.
Relegating learning activities to your "free time" is a recipe for failure. As you soon discover, you really don't have any "free" time.
When choosing areas to invest in, you need to make a conscious effort to diversify your attention – don't have all your eggs in one basket.
One mayor difference between knowledge investments and financial investments is that all knowledge investments have some value. Even if you never use a particular technology on the job, it will impact the way you think and solve problems.
Just because you spend a lot of time doing something doesn't mean that it's adding value to your knowledge portfolio.
Discover how you learn best.
Form study groups to learn and teach.
One of the simplest and most effective techniques to learn something is to try to teach it.
You will make mistakes; it will get messy. But those messes give you exactly the kind of feedback you need.
Play more in order to learn more.
Learn from similarities; unlearn from differences.
Errors benefit us because they lead us to study what happened, to understand what went wrong, and, through understanding, to fix it.
Explore, invent, and apply in your environment – safely.
There are two types of failure. There are the failures that are good for us that we can learn from. But there are failures that aren't good for us. This second type of failure doesn't produce any learning: it keeps us from learning in the first place, or it shuts down our learning in mid-experience.
Give yourself permission to fail; it's the path to success.
By surrounding yourself with highly skilled people, you will increase your own skill level. Some of that is from observation and application of their practices and approaches. Some of that comes from the fact that you're conditioning your mind to perform at a higher level.
Learn to pay attention.
Creativity does not function on a time clock and does not generally yield results when pressured. In fact, the situation is quite the opposite: you need to let go of the problem with your conscious mind and let the problem sit in the marinade of thought for a while.
In general, if you can't think of three ways a plan can go wrong or think of three different solutions to a problem, then you haven't thought it through enough.
Make thinking time.
Use a wiki to manage information and knowledge.
You can't pay attention to as much as you think you can.
Trying to focus on several things at once means you'll do poorly at each of them.
Establish rules of engagement to manage interruptions.
The golden rule of email: Send less email, and you'll receive less email.
Choose your own tempo for an email conversation. Your email reply speed sets the tempo for the conversation. That is, the faster you reply, the faster you are expected to reply in the future.
Exit your email client when not in use.
Change is always harder than it looks.
Remember the danger doesn't lie in doing something wrong; it lies in doing nothing at all. Don't be afraid to make mistakes.
You have to believe that change is possible. If you think you'll fail, you'll be correct.
The professional kiss of death for an expert is to act like one. Once you believe in your own expertness, you close your mind to possibilities. You stop acting on curiosity. You may begin to resist change in your field for fear of losing authority on a subject you've spent so long mastering. Your own judgement and views, instead of supporting you, can imprison you.
Grab the wheel. You can't steer on autopilot.