From Labs to Learning: How Hands-on Practice Has Changed Our Thinking About Online Education

For years, the debate about online education has centered on one question: can digital content replace the classroom? We measured success by video completion rates and quiz scores. We celebrated when students completed modules and received certificates, and we tracked engagement by the number of minutes someone spent watching.
We were measuring the wrong thing.
When I started building Coursera’s Labs platform, I thought the technical challenge would be the hardest part. Browsing the isolated computing environments of millions of students at the same time, ensuring every second of latency across the entire global infrastructure, maintaining security while allowing people to run arbitrary code. These problems kept me awake at night. What I don’t expect is how the presence of hands-on labs will reshape our understanding of what online learning can be.
Watching someone write code on video creates an illusion of understanding. The syntax looks straightforward. The logic goes well. The instructor’s explanation made everything click. The reader then opens an empty editor and the illusion folds. They cannot remember the exact username. They are not sure which library to import. The error message says something cryptic about undoing. Learning activities can be divided by spectrum from passive to interactive, with the most significant jump in learning outcomes occurring when students move from passive to constructive engagement, where they have to produce something new.
This is consistent with what we have seen on a large scale. Students who watched only the video content showed similar patterns of completion as before reported across the industry: Self-paced MOOCs typically see completion rates between 10-15%. But something has changed when we introduced organized manual parts, and learning became sticky.
The infrastructure challenge in this learning transition needs attention because it is invisible when done well. All obstacles between the intention and execution of the learner end engagement before learning begins. Locale setup, dependency conflicts, version mismatches, and operating system questions. This is not a teaching failure; infrastructure failures that make students fail. Setting zero, browser-based environments eliminate that conflict entirely. A student from Jakarta and a student from Stockholm both click a button and find the same Python environment in less than ten seconds. But removing the conflict changes the system requirements. Calculate availability, delay, and continuity cease to be background concerns and become first-order learning problems.
Think about what happens when a reader uses untrusted code. They may accidentally write an infinite loop. They may deliberately probe system parameters. They may do something that consumes memory without freeing it. Without strict isolation of containers and resource control, the process of escaping one student degrades the performance of another student. In accordance with the latest analysis on container securityNetwork isolation and access controls are important when running distributed workloads at scale, to ensure that compromised processes cannot affect the wider system.
The business case for hands-on learning
The business case for self-directed learning has strengthened as employers change their hiring practices. 81% of employers now use skills-based hiring, up from 57% by 2022. The same report notes that 94% of employers believe that hiring based on skills outperforms those selected based on degrees alone. Certificates are less important than what the candidates can show. This creates direct pressure on educational institutions to prove that students can actually do things, not just see the right answers on multiple-choice tests.
Increasing learning by learning goes against the usual assumptions of SaaS. Student sessions are long and meaningful. Usage patterns increase during work deadlines in all time zones of the world. Aggressive autoscaling that cuts out runtimes may work for constant web traffic, but it proves disastrous for the reader while debugging a project. Infrastructure expansion must respect active students. Capacity planning should be consistent with the agreed deadlines. Cleanup and cost controls should be session aware. Cloud-based educational platforms have adopted container-based approaches to handle this diversity, but the specific requirements of the code implementation environment require additional considerations regarding resource limitations and session persistence.
Persistence is more important than most platform builders realize. Real skill development involves repetition, error correction, slow progression, and recovery from mistakes. A student who returns to unfinished work, reasons about past decisions, and builds mental models over time learns differently than someone who starts over each session. Illegal working conditions undermine the behavior that learning through learning should encourage. But persistence at scale introduces complexity: tutor updates cannot overwrite student progress, file systems need to be modified and safely re-downgraded, and progress must survive restarts and failures.
The demand for practical skills continues to grow at a rapid pace. Companies have been looking for a long time practical skills and industry certifications as important factors in hiring decisions, and the proliferation of competency-based organizations has accelerated this trend. But the interesting question is not whether people are signing up. Whether they are leaving with the skills they can apply.
The rise of AI does not reduce the need for workplaces. If anything, it amplifies it. As AI-generated code becomes more common, students need environments where they can run, test, debug, and verify what these programs produce. Understanding comes from dealing with behavior, not from accepting the result of faith. Hands-on scenarios become the place where AI assistance meets reality, where students develop intuition for where generated code works and when it fails.
Building an infrastructure for millions of simultaneous coding sessions has taught me something of the opposite of education. Pedagogy defines the purpose, but at scale, the use of technology determines whether that purpose survives communication with students. When education moves beyond the application of content to practice, infrastructure decisions become learning decisions. Calculate your provisioning, isolation you use, persistence you maintain, and latency you access. This is not performance information. They are instructional decisions that shape what students can become.



