title | seoTitle | seoDescription | datePublished | cuid | slug | cover | tags |
---|---|---|---|---|---|---|---|
How to Improve as a Software Developer by Embracing Ultralearning Principles |
How to Improve as a Software Developer Embracing Ultralearning |
I will provide an overview of the key ultralearning concepts and discuss how you can apply these principles to the software development practice |
Sat Feb 08 2025 20:56:18 GMT+0000 (Coordinated Universal Time) |
cm6wodu1x003809k0h6c52m8i |
how-to-improve-as-a-software-developer-embracing-ultralearning-principles |
software-development, programming, learning, self-improvement-1, learning-journey |
How can you be certain that your career is secure? Given how rapidly the world is changing, is there a safe job?
The capacity to change course, pick up new skills, and adapt is more crucial than ever in the current world, particularly with the development of artificial intelligence. This ability is a meta-skill: a skill that allows you to learn other skills more efficiently, thus making it a highly valuable asset.
In this article, I want to introduce you to the ultralearning principles described by Scott H. Young in his excellent book Ultralearning. I will provide an overview of the key concepts and discuss how you can apply these principles to the software development practice to learn new skills and stay ahead in a rapidly changing industry.
The first of those principles is meta-learning. Meta-learning is like stepping back before you start walking. It is a preparation stage where you build a map or mental model of the learning process. You ask these three questions:
-
Why do I need to learn something?
-
What do I want to learn?
-
How am I going to learn it?
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1738704956219/e15c11a9-a2cb-4a52-bbee-1ec8a86b6fa9.png align="center")
In order to answer the first question ("why") you should ask yourself why you want to learn this specific thing. For example, are you learning it for yourself, like for fun or to improve your skills, or is it because someone else wants you to learn it for a job or to earn more money, etc.? You need to reflect on where you are in your job or in your life, so what's the next thing that you need to learn, and should you learn more about something you already know, or something completely new?
To answer the second question ("what") you need to break down the skill or topic into its components. What does the skill consist of? This could include concepts, tools, facts, and procedures. Understanding the structure of the topic helps you see the bigger picture and identify the key areas you need to focus on.
For the third question (“how”) you should ask yourself how you will learn this thing, so are you going to take a class, start a project, or do something else? There are many ways to learn something, thus you should spend some time researching your options. Scott Young, the author of Ultralearning, says you should spend roughly 10% of your total learning time just on research.
I work as a software engineer and recently realized that my knowledge of cloud services is quite limited. I wasn’t specialized in any cloud platform, despite its growing importance in modern software development. Therefore, I found my "why": I wanted to improve my understanding of cloud services. The "what" was defined by breaking down the subject into the main topics that I needed to learn: knowing the different types of cloud services and their applications, how they can be used in system architecture, and how to create and maintain them. To answer “how”, I explored the major cloud providers (AWS, GCP, and Azure) to find the best way to get started. I decided on AWS and a course from the KodeKloud platform with hands-on labs. It was a good entry point to get hands-on with cloud services and build a solid foundation, so it helped me to achieve my learning goals.
The second ultralearning principle is focus, which is related to the quality of one's practice. Focus can be divided into two components: getting started and maintaining concentration.
Here are some tips for overcoming procrastination and getting started:
-
Design your work time deliberately and schedule dedicated time blocks for deep, uninterrupted practice
-
Start small. Break your task into small chunks to overcome the initial resistance. Instead of writing a blog post, consider delivering one paragraph. Thus, a good trick here is the 5-minute rule: tell yourself you'll work on something for just five minutes. This simple mental trick makes it easier to start and get into the flow of an activity that you initially find overwhelming or unpleasant.
Sustain focus can be achieved by preparing an environment free of unnecessary distractions.
-
Turn off Slack, put your smartphone out of reach, and create conditions for deep work, so you can focus on the task at hand.
-
Use techniques like the Pomodoro (working in focused intervals, e.g., 25 minutes of work and a 5-minute break) to defend your deep work time and give your brain periodic rest. This will allow you to return to the task with renewed energy.
You also need to understand that different types of problems require different types of focus. Simple problems require narrowing your focus and breaking the task down into small pieces. On the other hand, for more complex problems sustained effort is often required, but it is also important to back off and switch to a diffuse mode of thinking. After a period of intense focus, you should allow your brain to work on the problem from a broader perspective. It often leads to new insights or solutions. Balancing these modes of thinking can significantly enhance your ability to tackle challenging tasks, and therefore it is essential to develop this skill.
The third ultralearning principle is directness. It means to practice in a way that is as close as possible to the way you'll use the skill.
In the traditional education system, we spend a lot of time learning things indirectly. We attend lectures, read materials, or do exercises. However, these are not the same as using the skill in real life. The problem with indirect learning is that you need to transfer (and transform) gathered information from one context to another.
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1738704975044/2e655a0b-aea9-4d16-88cd-259d8e2f631f.png align="center")
This transfer is usually difficult and inefficient. Let's take learning a foreign language as an example. You might use a language app like Duolingo to learn some vocabulary and grammar rules, but that won't make you fluent. Therefore you need to practice speaking and listening directly to comfortably carry out a conversation.
The direct approach is usually painful because it pushes you out of your comfort zone. Think about how uncomfortable it is to speak in English when you only know a few words. However, that discomfort in immersion can lead to much faster learning.
How would this principle apply to my learning? If I want to learn about cloud services, I cannot just read about them or watch videos. I have to design and implement real software systems to use the cloud. For example, I need to do a side project that will use cloud databases, queues, load balancers, and so on. My learning environment will be quite similar to the setting in which I utilize learned skills in the future.
While direct practice is an excellent way to get started, there are times when you need to focus on specific aspects of a skill to improve performance. This is where the principle of drill comes into play. Drilling involves breaking a skill into its components, identifying your weakest points, and targeting those areas with focused practice. One weak component of a complex skill can hold back your overall performance, so addressing it quickly can lead to significant improvement.
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1738705056802/bf7ef302-adab-4508-9f08-19ac4ed65159.png align="center")
There is a natural tension between drill and directness, but they complement each other when used in the right sequence. A good approach might look like this:
-
Start with direct practice to immerse yourself in the skill and understand its real-world application.
-
Analyze your performance during direct practice and identify the weak components that need improvement.
-
Isolate those weak components and work on them in focused drill sessions.
-
Return to direct practice to integrate the improved components into the overall skill.
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1738940861151/ca4e3bcf-cefe-45ba-bc78-781c205c1554.png align="center")
For example, I could develop strong cloud knowledge, but it would be of little use if I could not code and implement solutions effectively. In this case, I would need to drill my coding skills to ensure I can apply my cloud knowledge in real-world scenarios. Drill sessions are like sharpening your tools - they help you refine the areas that slow you down.
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1738943961986/39d903d9-210a-44b7-a17c-cb742b5e643c.png align="center")
Drill and directness are most effective when based on active knowledge retrieval rather than passive activities like reading or watching. The authors of Uncommon Sense Teaching: Practical Insights in Brain Science to Help Students Learn argue that retrieval practice is the most powerful method for improving knowledge and skills in the long run.
To truly engage with the material, avoid simply reading or watching—actively retrieve key ideas, explain concepts in your own words, or attempt to solve complex problems without referring to your notes. Before an exam, instead of passively skimming notes, practice self-testing and recall exercises. While passive review may provide short-term benefits, it fails to support long-term retention.
Of course, it doesn’t mean passive activities should be eliminated. There needs to be a balance between passive and active learning. Before you can retrieve information, you first need to acquire it. The key is to recognize that both aspects play a crucial role in the learning process.
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739006179346/c8151669-b148-4a74-bb7a-a70a48e170b2.png align="center")
Taking an AWS cloud course is a great way to gain foundational knowledge, but real learning happens when you apply it. Setting up a project helps reinforce concepts and troubleshoot real-world challenges. Hands-on experience is what truly makes the knowledge stick!
Gaining immediate feedback on one’s performance is a crucial factor in reaching expert-level proficiency. Improvement is difficult if we don’t know what we’re doing well or where we need to adjust. However, not all feedback is equally helpful. Feedback works well when It provides useful information that can guide future learning.
-
Outcome feedback is the most prevalent kind; it offers a broad evaluation but doesn't go into specifics about what was done well or poorly.
-
Informational feedback provides detailed insights into errors, helping you identify areas for improvement. The drawback is that it doesn't tell you how to fix your mistakes.
-
Corrective feedback is the most beneficial kind of feedback because it not only points out mistakes but also offers advice on how to correct them.
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739023037714/731d16f2-0b6f-4592-a077-6a1de739560a.png align="center")
Most often, coaches or other reliable specialists provide corrective input. You should accept mentorship if it is available. However, these individuals are often difficult to reach. There are other ways to get input if you don't have that chance.
Considering my cloud initiative, what other options do I have?
-
get assessed by an independent authority by taking an AWS exam,
-
get comments by writing a post about integrating AWS services,
-
setting up an open-source project that can be developed with support and advice from a community.
You’ve likely seen students cram the night before an exam, pass the test, and then forget everything within days. This happens because they successfully store information in the hippocampus as short-term memory but fail to consolidate it in the neocortex, which is essential for long-term retention.
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739012608121/a5e35f6d-78da-44a4-9dfa-3573e417af8c.png align="center")
Two techniques that significantly help retention are proper spacing and proceduralization.
Spacing is about distributing your learning efforts over time, which is much better than cramming. Even very short, focused periods of effort are better than long but infrequent practice sessions. The key is figuring out the optimal spacing between sessions to reinforce what you have learned and prevent it from fading. Consistency is crucial for long-term retention.
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1738705026098/cef52aae-f296-4821-a04f-c007becf7668.png align="center")
Proceduralization, on the other hand, is about converting knowledge from declarative (knowing what) to procedural (knowing how). Procedural skills, like riding a bike, are much harder to forget because the knowledge becomes entrenched through practice.
Returning to my cloud project, I decided to spend on it a few hours each evening for at least a month. Instead of just watching tutorials, I focused on implementing concepts from scratch. If you’re unsure what you can build, I highly recommend checking out Build Your Own X, where you can learn by creating compilers, databases, version control systems, and more. It’s an excellent way to transform theoretical knowledge into real, practical skills.
Intuition often feels like a magical ability, something reserved for exceptionally gifted people. However, in reality, it is usually the result of extensive experience and a broad base of knowledge. Experts approach problems by looking at deeper principles, while novices tend to see things on a more surface level. Great thinkers and problem-solvers often have an intuitive grasp of solutions because they’ve spent years solving similar problems and have built mental models of how things work.
Malcolm Gladwell, in his book Blink, explains that intuition stems from the brain’s ability to recognize patterns based on prior experiences. It’s not magic—it’s the unconscious mind drawing on a vast reservoir of stored knowledge and past observations. Intuition is essentially the result of experience combined with a deep understanding of the fundamentals and core concepts.
Building intuition takes time. The more you learn and experience, the more you realize how much remains unknown. This awareness should foster humility and modesty, as it reminds us that expertise is a journey, not a destination.
![](https://cdn.hashnode.com/res/hashnode/image/upload/v1738705087658/cfb6a876-d8a5-49f1-83ab-0d8af0584494.png align="center")
So, how can you develop deep intuition?
-
Don’t give up on hard problems easily. Struggling with difficult challenges helps you build the mental models necessary for intuitive problem-solving.
-
Prove your understanding. Recreate solutions, explain concepts to others, and ensure you truly grasp the material rather than just memorize it. For me, a good way to try to recreate and explain my understanding is by writing a blog post.
-
Be honest about your knowledge. Avoid falling into the trap of the Dunning-Kruger effect, where beginners overestimate their abilities. Recognize that at the start of your journey, there’s still a lot to learn, and that’s okay.
Intuition is not an innate gift - it’s a skill that grows with time, effort, and a commitment to understanding the deeper principles behind the problems you face.
When starting out, it’s best to follow the example of someone more advanced. As you gain experience, begin experimenting and forging your own path. Once you reach a certain level, you can decide whether to focus on deep expertise in a specific area or expand your skill set more broadly.
Experimentation is key to growth. You can refine your skills by changing methods, introducing constraints, or combining seemingly unrelated disciplines—such as software development and public speaking—to enhance your overall abilities.
Going back to the cloud project, I may use this strategy by outlining specific requirements and architectural drivers and then creating a solution that satisfies those criteria.
As we've explored, ultralearning is more than just a collection of techniques; it's a mindset. The principles – meta-learning, focus, directness, drill, retrieval, feedback, retention, intuition, and experimentation – each reinforcing the others. Mastering one strengthens your ability to apply the rest. But the driving force behind all of these is the willingness to embrace discomfort. Accelerated learning comes from setting aggressive challenges that force you to stretch, adapt, and grow. Don't settle only for passive learning; actively seek out opportunities to push your boundaries.