Abstract cartography for skill acquisition
Posted on Mar 20, 2025I’ve been doing some deliberate engagement with my learning process lately. One of my goals for 2025 is to build several personal projects with Ruby on Rails. My ultimate goal for Rails is to either get a job working with it or build something that brings in enough to live on. However, to accomplish this I need to first teach myself Rails (and Ruby).
I had attempted to learn Ruby and Rails late last year. The effort ended in defeat. My interest in Rails has not diminished. However, by working counter to the subconscious learning process I’ve developed over years of technically demanding jobs, I had run out of motivation.
PostcardRSS
After the collapse of my first learning attempt, I paused to reflect. What was different between the high-speed learning I do at work and my attempt to learn via the Odin Project’s coursework? I identified several key attributes that were missing from the false start - Autonomy, creative control, and a meaningful yet achievable challenge. The coursework didn’t connect to what I wanted to do with Rails in a concrete way. Without the ability to explore, the lessons didn’t stick and I lost interest.
Instead of restarting the coursework, I instead spent a few days designing a real project (codenamed PostcardRSS). It’s an RSS to email service that mails a newsletter summary of your feeds each week. This time, my learning efforts have been a success because the project gives me control, and is something that I want to use for myself. I’m almost through with the UI for the app, and in the coming weeks I’ll be implementing the rest of the backend. I know more now about Ruby and Rails than I gained in the Odin Project course, and I’m on track to hit my goal for the year.
If I am to achieve my goals for the year, I must work with my current learning process, not against it. The only logical question to answer is: what exactly is my current process for learning? Having both a failure, and a success in the same goal has afforded me a golden opportunity to figure that out. It became apparent to me that my learning is not a single path to be walked once.
Instead, it is more akin to the growth of an evergreen tree. Vital knowledge and skills are added, outdated knowledge is judiciously pruned, and the tree is always adapting to find new ways to overcome challenges in its environment. In applying this growth oriented metaphor to learning, we can see that it occurs in three interconnected stages.
Spiralling upwards towards competence
The ultimate goal for a student is to build a strong intuition so your work simply flows. My process for achieving this is imitation, integration, and intuition.
These are not necessarily discrete steps to be ticked off on a list. I’ve found that I inevitably spend time moving forwards and backwards through these stages. The difference is that the trend of competence in any given skill moves upwards towards intuition. With each cycle, the subject area I’m studying gets smaller, and the time spent in the first two stages gets shorter. In short, I learn by spiralling upwards as my ability to maintain an unbroken flow increases.
Imitation
Knowing what you do not know is the foundation of all self directed learning
The first step in growing new skills and knowledge always starts with imitation. By repeating the thinking of others we can build up a set of fundamental building blocks for the new skill. This is achieved by following tutorials and coursework. By working through these, we eventually build up a small set of principles, and a knowledge of what we do not yet know (to be used to self direct our learning as we go). This map of everything we don’t yet understand can feel overwhelming, but it is a valuable part of our learning process. Without it, we are unable to properly self direct our learning.
Of all the stages, this map is one of the most valuable things you will create for yourself while learning. Don’t make the classic blunder of dismissing the imitation stage as just for beginners. Your abilities as an abstract cartographer are the foundation of all other learning.
In my second attempt at learning Rails, I began this stage by working through the Rails “Getting Started” guide. This guide provided me the map I needed to be able to explore the problem space effectively by using the API docs and the other guides on the Rails site.
Integration
Interrogate what you learn to internalise the principles behind the specifics
In order to integrate the knowledge we’ve blindly accepted by following tutorials, we must examine and question it. Ask yourself why – why did the author build it this way and not another. What were the problems this method solves? Knowing why a thing is the way it is leads to a deeper understanding of the thing itself. By being curious about what you’ve learned, you gain the ability to self correct, to critique your own work dispassionately and to improve as a result. Tutorials fall away, replaced by reference material and experimentation (with a reasonable degree of success). Part of this process of questioning will often result in you being able to drop older techniques that no longer serve you. Use the map of known unknowns to explore the skill space in depth, always asking why so that you understand the abstract problems each element solves.
As I began to build my own project in Rails, I inevitably wound up with a lot of questions. How do I do X? Why is it done like this? These questions, and the process of research and experimentation to answer them formed the integration stage of my Rails learning. As I progressed, I cycled between integration and imitation until understanding began to emerge.
Intuition
Experts act from experience and accumulated knowledge. Amateurs try to follow a recipe. The mark of learning success is your ability to read the environment and adapt your actions accordingly to meet your goal.
The final stage is intuition. You can now set the grand strategy for your output, and you work without thinking – a flow state of action to get things done. This is not to say you know how to accomplish everything before you start. Rather you know what done looks like, and what the key concerns you need to solve are. The specific techniques are not as important as your ability to define what good looks like for yourself. You can adapt the abstract principles of your learning to overcome any novel problem you may face.
I can’t say I have a fully developed intuition for Ruby and Rails in the same way I do for Javascript. I am seeing flashes of brilliance, instances where I make choices that are supported by testing. It’s always rewarding to see my understanding solidify like that.
Wrapping up
From this experience, I’ve come to realise that both process and environment are important for faster, more concrete learning. A good learning environment is one in which the student has the autonomy to explore, the creative control to express themselves with the fruits of their learning, and challenging enough to be interesting.
On a process level, I’ve found that the cyclic interwoven stages of imitation, integration, and intuition weaves a strong foundation of understanding. The cycle repeats for every part of the problem space you do not yet understand. Knowing that ahead of time not only makes you feel better about being a beginner, but turns the list stuff you don’t know from a discouragement into a guide, and a place to explore.
Overall, I have found a new sense of enjoyment in my learning as a result of explicitly considering how I learn. Like leveraging the habit loop to improve my daily life, knowing the learning process allows me to better target my efforts. Give it a try – everyone deserves to have their curiosity rewarded with the satisfaction of understanding.