Being In Between
- relating to a transitional or initial stage of a process.
- occupying a position at, or on both sides of, a boundary or threshold.
Mastering new concepts and skills isn't just a matter of adding on to your existing abilities. Often you need to transform the way you understand and interact with the world. This is especially true when learning to program. Be prepared to spend a lot of time floating between the certainty of old knoledge and the promise of new understanding. This is called the liminal zone, and it's a very different experience from simply being confused or lost. Those new understandings are called Threshold Concepts.
To understand why programming is so difficult to learn, and to understand our approach to teaching development, you should first understand what a threshold concept is.
- After mastering a threshold concept, you will perceive the world in a completely new way. This audio illusion makes the point better than words ever could.
- They aren't the fabric, they aren't the thread. They are the pattern used to weave thread into fabric. Threshold concepts are the unique ways experts in different disciplines assess and integrate new information. An artist and a programmer can be given the same instructions, the same materials, and the same grading criteria but will produce very different products.
- Facts can be forgotten, skills can fade, but threshold concepts are forever - they represent changes in the very way your mind process information. Listen again to the audio illusion and try to hear it as garbled noise, it's almost impossible.
- These different approaches to understanding the world are what define different types of careers or vocations. You could read every textbook on psychology, but if you approach patients like a coding challenge to be solved you're still not practicing psychology.
- Threshold concepts are particularly difficult to learn because they can't explained directly. They are a way of doing things, not the thing that you do. For this reason, to master new TC's you have to focus on how you work not what you produce. To help you learn the TC's of development, we have designed projects & process templates that you can apply to any programming domain, language, or framework.
Learning To Code
Learning to program means mastering the fundamental thought process of an expert programmer. But what are those ways of thinking? Below is a short list of concepts to be aware of, if you find yourself getting stuck on them don't panic. They're tricky and absolutely worth spending more time on.
- Source Code vs Runtime Code
- Tracing Code
- Variables and Pointers
- Definition vs. Execution
- Are Objects and executable procedures
- Scope vs. Context
- Asynchronous Execution
To learn more about how to identify, learn, and teach threshold concepts in programming you can get a start with these two articles:
So there you have it. Learning to program is not just a matter of learning some syntax and solving lots of problems. Unless you naturally think like a programmer, you will have to make an effort to transform the way you integrate new information and approach new challenges.
This learning process can be off-putting. To really make it as a programmer you will have to learn to embrace being uncertain, and learn to trust yourself to make it to the next plateau. And once you get there, it's just the start of your next transition!
Many of these resources are directed at teachers, aiming to help them build curricula. Read them carefully! From now on you are your own teacher, curriculum designer, and grader. You should constantly be aware of what you're learning and how you're learning it. It won't be enough just to write code all day.
- Threshold Concepts: Article, Video
- Be Liminal
- Decoding the Disciplines: Video, WebSite
- Learning is Liminal
- Learn to Synthesize
- Dr. Ray Land: Podcast, Presentation