I have noticed that there are two ways that I tend to engage with new programming problems and paradigms. The first is a controlled and stable descent into a new idea, this method is usually guided by a class or book and tends to reveal new ideas sequentially and in an a particular order. It progressively exposes the concepts so that it naturally builds on information your receive in prior lessons.
That is the ideal, that is right way.
Unfortunately my job and my interests often require me to approach new ideas in less formal ways. In fact I am often encouraged to dive head long into problems and just kind of figure it out. This is less like a steady descent and more like plunging into the abyss. This feel is exacerbated when I have suddenly found myself in a new layer of abstraction, where part of the assumptions of my current abstraction was to hide other complexity this new idea. In fact it kind of reminds me of Alice tumbling down the rabbit hole.
“First she tried to look down and make out what she was coming to…”
You lose a certain sense of direction when your foundations are suddenly torn away and the first thing your mind tries to do is establish a new normal based on existing ideas. If I am learning a new language for example, I try to solve a problem I understand with the new tools I have been given. This does not always work, old references may only confuse you without an appropriate starting point.
“‘Well!’ thought Alice to herself, ‘after such a fall as this, I shall think nothing of tumbling downs stairs!’…”
At some point you will start to make ground in your new environment and that can results in a new sense of normalcy. You can actually see how your study can now apply to situations you may have already encountered. That is the point at which you are home in your new abstraction because you start to extrapolate how it can help in a variety of different ways. In fact you may start realize that the struggle has revealed even better ways to solve issues that you once considered intractable.
There was a fascinating quote in the film Spectre, “You’re a kite dancing in a hurricane”. It was supposed convey a sense of dread, but if you can make it through you gain a perspective for having made it through the storm. It is one of the reasons why I continue to engage with communities like CodeNewbies because it constantly reminds that not knowing is both frightening, exhilarating and rewarding. That while we yield a certain level of control for a short period of time the gains far outstrip the temporary discomfort, growth sometimes requires us to get accustomed to uncertainty.