How to learn better and faster as a software engineer?

Watch the video explanation ➔

In the rapidly evolving domain of software engineering, it is crucial to continuously learn new skills to stay relevant. Learning better and faster as a software engineer requires following five key strategies that ensure continuous learning and personal growth. This article presents a concrete timeline and actionable steps to help software engineers enhance their learning process.

  1. Register your curiosity
  2. Jumpstart
  3. Do the laundry
  4. The inverse power law
  5. Juggle and time box

Register Your Curiosity

As humans, curiosity is inherent in our nature. Whenever you come across something fascinating in your field, it’s essential to acknowledge and explore it further. When you encounter a topic or concept that sparks your interest, make a note of it immediately. Use a note-taking app to document what intrigued you and why. By registering your curiosity, you create a personal motivation to delve deeper into the subject matter. Revisit your notes periodically to remind yourself of the topics you want to explore further.

Jumpstart

Overcoming laziness and procrastination is crucial to accelerate your learning. Instead of waiting for the perfect time or the best resources, start learning right away. When embarking on a zero-to-one learning journey, any resource is valuable. Don’t waste time searching for the best resource; instead, dive into the available materials. It’s important to begin building your knowledge and familiarity with the subject matter. Starting immediately allows you to gain momentum and make progress.

Do the Laundry

Instead of building castles in your mind, focus on hands-on implementation. It’s easy to get lost in the excitement of conceptualizing and envisioning ideas without taking practical action. To avoid this trap, get your local development environment set up and start coding. Whether it’s learning a new programming language, exploring a database, or any other technology, actively engage in practical implementation. Avoid falling into the cycle of tutorial hell, where you consume endless tutorials without implementing what you learn. By doing the laundry, you ensure that your ideas and knowledge translate into practical skills.

The Inverse Power Law

To grasp advanced concepts effectively, it is essential to establish a strong foundation in the basics. Spending more time on fundamental concepts and gradually progressing to more advanced topics enables a deeper understanding. Starting from absolute zero and gradually increasing your knowledge and skills will make it easier to comprehend complex concepts. Don’t rush to explore advanced topics without a solid understanding of the basics. Invest time in establishing a strong foundation, and it will pave the way for easier comprehension of advanced concepts.

Juggle and Time Box

Avoid getting bored or losing focus by juggling multiple learning pursuits simultaneously. Instead of focusing on a single topic, choose two or three areas of interest to learn in parallel. If you feel bored or stuck with one subject, switch to another temporarily. By diversifying your learning efforts, you maintain motivation and make progress in multiple areas. However, it’s important to set boundaries and time limits for each pursuit. Time boxing allows you to evaluate your progress periodically and decide whether to continue or shift your focus.

Conclusion

By following these five strategies, software engineers can enhance their learning process and accelerate their career growth. Registering curiosity, jumpstarting without procrastination, doing the laundry through hands-on implementation, applying the inverse power law to build a solid foundation, and juggling multiple learning pursuits while time boxing them can lead to continuous improvement and growth as a software engineer. Embrace these principles, stay curious, and commit to lifelong learning to thrive in the rapidly evolving field of software engineering.

Here's the video ⤵

Courses I teach

Alongside my daily work, I also teach some highly practical courses, with a no-fluff no-nonsense approach, that are designed to spark engineering curiosity and help you ace your career.


System Design Masterclass

A no-fluff masterclass that helps experienced engineers form the right intuition to design and implement highly scalable, fault-tolerant, extensible, and available systems.


Details →

System Design for Beginners

An in-depth and self-paced course for absolute beginners to become great at designing and implementing scalable, available, and extensible systems.


Details →

Redis Internals

A self-paced and hands-on course covering Redis internals - data structures, algorithms, and some core features by re-implementing them in Go.


Details →


Writings and Learnings

Blogs

Bookshelf

Papershelf


Arpit's Newsletter read by 80000+ engineers

Weekly essays on real-world system design, distributed systems, or a deep dive into some super-clever algorithm.