Learning In Sprints

February 22, 2025

The last lecture finished by three in the afternoon. Yet on most days, I did not leave the St Xavier’s college campus until five – I recall spending two hours at the central library reading William Stallings’ Operating Systems or Jim Kurose’s Computer Networking – sometimes even choosing the library over my future wife.

Contrary to that, I never enjoyed classroom studies while I was in school. I would not want to go to school, and I would often get reprimanded for not paying attention in class.

From a boy who did not want to go to school to someone who spent hours at the library reading drearily dull texts, what changed?

Intuition Drives Learning Better than Classrooms

A significant difference between school and college education was my understanding of the value proposition of a subject. I never fully grasped the the whole point of learning topics that were solely taught for passing an exam, with little connection to the world I saw outside the school grounds.

I understand now that I learn best in an intuition-driven methodology – when focal point of a lesson is its applicability. In this Nature article, the authors highlight the gap between academic and applied mathematics:

Many children from low-income backgrounds worldwide fail to master school mathematics; however, some children extensively use mental arithmetic outside school.

Nearly all these children used complex arithmetic calculations effectively at work. They were also proficient in solving hypothetical market maths problems and verbal maths problems that were anchored to concrete contexts.

However, they were unable to solve arithmetic problems of equal or lesser complexity when presented in the abstract format typically used in school.

Looking Back at the Classroom

While I did miss intuition in my school education, the classroom did leave an indelible mark on me about the structure of learning. The classroom taught me two things about learning effectively:

  • Time: Our semesters and our day-to-day in school were time-bound. The fact that we knew we had only a finite amount of time to learn Mughal Indian history was habitually the only reason I sat down to study.
  • Direction: We had a predefined syllabus every semester. This syllabus brought about the direction of the entire six months. It focused our attention to one single area instead of the various unrelated topics in the subject.

Learning in Sprints

In school, I spent more hours studying, yet in college I learnt better. This dichotomy is quite puzzling. Combining both works really well for me, especially now with an 8-hour day-job that leaves little time for learning.

Since 2023, I have been following a method for learning new things - I define learning in sprints by:

  • Time-boundedness: As a rule, I put a time-cap on what I learn – either imposed externally (like a call for papers) or a internally by myself (like this side project).
  • Immediately applied: My goal is not to learn, but to apply what I learn to something. I start with a problem or question – seeking the answer to that becomes the focal point of I am studying.
  • Proof of work: At the end of the allotted time, I produce an artefact of learning – often in the form of blog posts, side projects or talks. This is a critical tactical step because it acts not only as proof-of-work but also helps internalise the concepts I learnt (similar to the Feynman Technique).

Things I learnt in Sprints in 2024

The proof is in the pudding. Following are five topics I did following the learning in sprints way. With some overlap, that amounts to about ten months of learning in a calendar year.

Project 1: Separation of Concerns

In the fall of 2024, I got the opportunity to explain the topic of “Separation of Concerns” to a group of new graduates. I learnt many things about Object Oriented design while preparing for this workshop. While some were not new to me, re-learning about them had the benefit of viewing these topics in a completely different light of work experience in the industry.

I presented a 2-hour workshop on Separation of Concerns, and here is a screenshot from the presentation. It shows about how with composing simple parts with their own concerns, we can build complex products that add value to the users.

Image Description

Project 2: Modernization of Tech Stacks

For the most part of 2024, I worked on a project to rearchitect some old systems using latest technologies. The deepest learnings about this project presented itself when I had to articulate why we even invest in improving system architecture:

Here is a slide from a talk I did about the modernization plans - it talks about the project paradox – many more choices are available at the beginning of a project than at the end – although at the beginning of a project we have many unanswered questions.

Image Description

Project 3: Flow Metrics Applied to Microservices

In March, I will be presenting a talk at Monster Scale 2025. I chose the topic of what flow metrics teaches us about building resilient systems. Preparing to share the stage with some of the best speakers of the industry like Martin Kleppmann, Dominik Tornow and Gwen Shapira, I really needed to brush up on many topics:

I built a Spring Boot application to illustrate the concept of avoiding congestion using using flow metrics. Below is a screenshot that shows a server (top) that allows congestion to build up compared to a server (bottom) that uses flow metrics to detect and mitigate congestion.

Image Description

Project 4: Project Liliput

In April of 2024, I took a two-day course on AWS technologies. I learnt about many things but I learnt few things well enough to build something with them. So when the course concluded, I decided to build a URL shortener based purely on serverless technologies in AWS. In doing so, I learnt many topics which were not specifically about AWS:

Shown underneath is the flow of how authentication works in Liliput using AWS Cognito, OAuth and PKCE. Check out Liliput here: liliput.mourjo.me.

Image Description

Project 5: REPL Driven Development

For the first five years of my professional life, I worked with a Lisp called Clojure. Among the many great things about the language, what I miss most in my day-to-day is an interactive REPL. I presented the topic of bringing the interactivity of the REPL into the Java world in November 2024 at a company tech conference. Yet again, I learnt many eye-opening topics:

  • Importance of exploratory feedback loops in a talk by Avdi Grimm: REPLs all the way
  • Identifying that the needs for developer interactivity are not the same as the users’ interactivity needs
  • Java’s REPL called JShell - which also works for Spring applications
  • Perl’s REPL called “Reply”

The diagram below highlights the need for developer-centric tools for interacting with the application, and that user interactions do not have the same needs as developer interactions. Image Description

Summing up

In school I saw how direction and time allocation form the structure of learning. But what I missed in the classroom was the applicability of the things I learnt. As a software engineer, I am privileged to see the application of many theoretical topics right before my eyes. I found great results in combining the classroom method of time-bounded learning with the direction of applicability.

See anything to improve? Edit this post!