Programming is all about problem solving. It requires creativity, ingenuity, and invention.
It’s not that the teacher teaches; it’s that the student learns. The learning is always up to you.
Wetware – human brain cells or thought processes regarded as analogous to, or in contrast with, computer systems. That is, using the model of a computer as an analogy to human thought processes.
Everything is interconnected: the physical world, social systems, your innermost thoughts, the unrelenting logic of the computer— everything forms one immense, interconnected system of reality. Nothing exists in isolation; everything is part of the system and part of a larger context. For instance, you might consider a tree to be a single, discrete object sitting on the visible ground. But in fact, a tree is a connection of at least two major systems: the processing cycle of leaves and air and of roots and earth.
Debug your brain
Intuition is a fantastic skill, except when it’s wrong. There are a large number of “known bugs” in human thinking. You have built-in biases in your cognition, influences from when you’re born and from your cohort (those born about the same time as you), your innate personality, and even hardware wiring problems.
Dreyfus model of skill acquisition
The Dreyfus brothers looked at highly skilled practitioners, including commercial airline pilots and world-renowned chess masters.
Their research showed that quite a bit changes as you move from novice to expert. You don’t just “know more” or gain skill. Instead, you experience fundamental differences in how you perceive the world, how you approach problem-solving, and the mental models you form and use.
Stage 1: Novices
Novices don’t particularly want to learn; they just want to accomplish an immediate goal. They can be effective if they follow a rule book (e.g. recipe)
Stage 2: Advanced Beginners
Advanced beginners 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.
Stage 3: Competent
They can troubleshoot problems on their own and begin to figure out how to solve novel problems—ones they haven’t faced before.
Stage 4: Proficient
Proficient practitioners need the big picture. They will seek out and want to understand the larger conceptual framework around this skill. The proficient practitioner knows what can possibly break—or more correctly, what is likely to break.
Stage 5: Expert
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. These are the folks who write the books, write the articles, and do the lecture circuit. These are the modern wizards.
Statistically, there aren’t very many experts—probably something on the order of 1 to 5 percent of the population.
Journey from Novice to Expert according to the Dreyfus model
- Moving away from reliance on rules to intuition
- A change in perception, where a problem is no longer a collection of equally relevant bits but a complete and unique whole where only certain bits are relevant
- Finally, a change from being a detached observer of the problem to an involved part of the system itself
Most people are in Stage 2: Advanced Beginners
Sadly, studies seem to indicate that most people, for most skills, for most of their lives, never get any higher than the second stage, advanced beginner, “performing the tasks they need and learning new tasks as the need arises but never acquiring a more broad-based, conceptual understanding of the task environment.
Anecdotal evidence for the phenomenon abounds, from the rise of copy-and-paste coding (now using Google as part of the IDE) to the widespread misapplication of software design patterns.
How to Learn Deliberately?
Learning isn’t done do you; it’s something you do.
Mastering knowledge alone, without experience, isn’t effective.
A random approach, without goals and feedback, tends to give random results.
- Create a goal
- (SMART) – Specific, Measurable, Achievable, Relevant, Time-Boxed (with a deadline)
- Create a pragmatic investment plan
- Consider your skills and talents as a knowledge portfolio
- Model your knowledge portfolio with the same care as you would manage a financial investment portfolio
- Add areas of knowlege or skills that you haven’t explored to help diversify your portfolio
- Survey: Scan the table of contents and chapter summaries for an overview.
- Question: Note any questions you have.
- Read: Read in its entirety.
- Recite: Summarize, take notes, and put in your own words.
- Review: Reread, expand notes, and discussion with colleagues