Wow, has it ever been a while. It was January, February, then suddenly it's August. How the hell did that happen?
Some challenges came up at work that I had to jump in and get involved with, and most everything in my life started going on hold... including my book, and all the community stuff I wanted to do. I got through writing chapter 4 back in February, and that's still where I'm at. But I'm excited to announce having 2 uninterrupted days per week to focus just on going after making this happen. I couldn't be more excited!
Since then the ideas started whizzing around in my head again. After going to lunch with an old friend of mine, I was reminded of an idea I had been struggling with. It had been at least a month, trying to make sense of something I didn't quite get, without words to describe what I thought was there. But like a flash in my mind, he gave me a piece to the puzzle I was missing. It was beautiful.
He was reading Thinking Fast and Slow, a book I read half of, and actually put down. He said, "Association triggers from specific to general." And that it had really struck him, "specific to general."
After reading On Intelligence, and working through the Art of Learning myself, I had been thinking about memory sequencing, and how it might impact our ability to recognize patterns. Like when you see some messed up code, why is that sometimes an idea pops into your head about how to solve it, and other times it doesn't? Why does this seem to happen more in some developer's heads than others? Is this something that can be learned? And can we learn how to do it faster? This was the puzzle I was working on.
Specific to General.
We teach developers design patterns by handing them a book of design patterns. A collection of "aha" moments from our predecessors. But then armed with our new knowledge, we don't seem to have an ability to apply them. When we see our own code, with our own problems, that flash of insight just doesn't happen. Then for some, with experience, it happens.
Well, you could just say it's experience. But couldn't we tailor the creation of the right experiences so that you would learn what you need to learn faster?
My friend had the key to my puzzle. Specific to General. The memory sequencing is critical, and the specific sequence of recognition is the opposite of what we teach.
If I want to have insight that leads to a design pattern, I need to experience specific problem instances that map to the more general pattern. When I scan the code, the similarity of structural pattern to my specific memory should trigger recognition.
Going to have to pick up that book again I think. :)