Skip to main content

Amsterdam Tech

Blog

Latest blog posts

Failing Forward: How Hands-On Practice Trumps Theory in Software Engineering

How failing forward compounds learning in software engineering, and why action always beats theoretical readiness.

Samuel had never built geolocation features before. When building his startup’s core app, he hit a wall: his platform needed a live tracking map so customers could see service providers arriving in real-time.

Faced with a complete lack of background knowledge, he had two distinct choices:

  • Choice One: Wait until he felt like an expert. Read a thousand Stack Overflow threads, dive deep into mapping engine documentation, consume hours of video tutorials, and wait until he felt theoretically ready.

  • Choice Two: Start immediately. Learn what he needed, exactly when he needed it. Try, fail, gather data, and try again.

Samuel chose Choice Two.”I had no idea. I read, read, read. I had a little bit of an idea. I tried. I failed. I tried again. I failed again. I tried one more time, and I failed again. But eventually, I figured it out.”

His features are not perfect. It is not fancy. But it works. Today, real users can watch their provider navigate directly to their door on a map.


The Compounding Interest of “Failing Forward”

Most traditional education teaches you that failure is a penalty—a deduction of points on an exam. But in real-world product engineering, failure is simply diagnostic data.

When you wait to feel “ready,” your learning rate is linear. You accumulate theory without context, missing the crucial friction points where real insight occurs. When you fail forward, your learning becomes exponential:

  1. Attempt #1 (The Rough Draft): You test your assumptions and reveal where your knowledge actually ends.

  2. Attempt #2 (The Correction): You ask sharper, more specific questions because you know precisely where the code broke.

  3. Attempt #3 (The Breakthrough): You synthesize theory with hands-on practice, shipping a working feature that compounds your confidence for the next challenge.

Each failed attempt eliminates an invalid hypothesis and forces you to master the underlying mechanics of your stack.


AI as an Accelerator, Not a Crutch

How does a developer actually keep moving forward when completely stuck?

Samuel uses AI tools like ChatGPT—not as a cheat code to generate plug-and-play code, but as a thought partner to map the domain. His prompts don’t ask for a final solution; they ask for a roadmap to understanding:“I need to do this, but I do not know how. What do I need to learn first?”

When you use AI to illuminate the shape of a problem, you retain ownership of the solution:

  • Deconstruct the whole: Break a massive, intimidating goal (like live map tracking) into bite-sized architectural pieces.

  • Learn just-in-time: Master specific concepts as they become necessary to solve the immediate blocker.

  • Test incrementally: Verify each small component before moving to the next.

He doesn’t use AI to write the code for him. He uses it to build comprehension, then writes and debugs the solution himself.


The Real-World Engineering Mindset

This is the core skill that textbook lectures rarely teach:

  • Not knowing everything before you begin.

  • Breaking complex problems into manageable micro-tasks.

  • Using modern tools to clarify your thinking.

  • Maintaining curiosity and momentum in the face of inevitable bugs.

Three attempts. One shipped feature. One real customer watching a service provider arrive in real-time. That is the power of learning by doing.

This is what studying software engineering looks like in the real world. Not four years of abstract theory before writing a line of production code, but practice first, theory just-in-time, and the stamina to keep building even when you start with zero answers.


Stop Waiting to Feel Ready

If you are stuck waiting for the perfect moment or complete theoretical certainty before launching your idea, take a page out of Samuel’s playbook: start now, embrace the failures, and let your learning compound.

Check out the BS in Software Engineering at amsterdam.tech to see what your first shipped feature could look like while you are still studying.