The Urge to Build Something

The Urge to Build Something

6 min read··

Fly.io runs .NET apps where they belong - at the edge, close to users - with low latency and global reach. Package your .NET app, deploy with flyctl, and scale worldwide with no ops overhead. Learn how to deploy .NET with Fly.io

Oracle's new Database 26ai lets you run vector search, JSON relational duality, and AI workloads directly in the database, without moving data between systems. If you care about simpler architectures and fewer integration points, it's worth exploring. Free here

There is a specific kind of restlessness that only developers understand. It's a quiet, persistent itch. A mental "background process" that runs while you're eating, showering, or trying to sleep. I call it the urge to build.

Looking back at my GitHub contribution graphs from the last few years, I see more than just green squares. I see a timeline of my own evolution.

I was chasing that dream many developers have: build a small product, ship it, get users, maybe turn it into a business. Most of those ideas didn't become a successful SaaS.

But that wasn't the point.

The point was that I was building constantly. Learning constantly. Shipping constantly.

And I loved it.

The Indie Hacker Dream

Back in 2020, my contribution graph shows the classic "burst" pattern. I was chasing the indiehacker dream. You know the one: build a SaaS, get to ramen profitability, escape the 9-to-5, tweet about your MRR milestones. I consumed every bootstrapper podcast, every "I made $10K/month" blog post, every ProductHunt launch breakdown.

I was working on a project called Expensely. I spent late nights pouring myself into this "genius" idea: a budgeting app.

Nothing revolutionary. The world didn't need another expense tracker. But I needed to build it.

Looking back now, it was far from genius. But at the time, I was convinced that this was the one.

A GitHub contribution graph from 2020 showing a burst of activity in the end of the year.

In 2021, that momentum stayed steady for five months before life (or perhaps reality) intervened. Those green squares represent the fun periods. They represent the thrill of architecting an application, the satisfaction of a passing test suite, and the hope that you're building something that might change your life.

A GitHub contribution graph from 2021 showing steady activity for the first five months and then a tapering off.

Expensely never became a business. Most side projects don't. But here's what I've come to understand: the outcome wasn't the point.

Even though those projects didn't become the next big SaaS, they were the forge where my skills were sharpened. You don't "waste" time building something that fails. You only waste time when you don't build at all. And I mean this both metaphorically and literally. Humans are meant to create. When we stop creating, we stagnate.

What Building Actually Gives You

When you build something from scratch - when you own every decision from the database schema to the button colors - you learn differently. There's no senior developer to ask. No established patterns to follow. Every problem is yours to solve.

You can use Railway-Oriented Programming if you want to, because who is going to stop you?

Jokes aside, functional programming is very useful. You should learn it.

A screenshot of sample code implementing Railway-Oriented Programming in C#.

Through my side projects, I wrestled with authentication, background jobs, payment integrations, deployment pipelines. I made mistakes and spent late nights fixing them. I built features nobody asked for and skipped features everyone needed.

There is one thing side projects can't teach you (unless you get users): dealing with the consequences of your decisions. When you build for yourself, the only person affected by your mistakes is you. When you build for users, every bug, every outage, every poor design choice has real consequences.

By mid 2021, the project had wound down. I was settling into a comfortable routine at my day job, working as a senior engineer at a big corporation. There was no time left for side projects.

The Unexpected Pivot

By 2022, something changed. My contribution graph exploded to over 1,600 commits. But the focus shifted. I wasn't building a product anymore. I was building something more meaningful. The repositories shifted to my tech blog and YouTube projects.

I had discovered content creation.

The urge to build hadn't disappeared. I found a new outlet. Instead of building products for users, I was building educational content for developers. Instead of SaaS metrics, I was tracking video views and newsletter subscribers. To me it was something new, something exciting.

A GitHub contribution graph from 2022 showing steady activity throughout the year.

I discovered that while I loved building software, I loved explaining it even more. I transitioned from an aspiring founder to a software engineering educator. At first it was just me writing and recording things I wish someone had explained to me earlier.

Then something interesting happened.

People started reading. Watching. Replying. Asking questions. More people showed up. And then even more.

A screenshot of the Milan Jovanovic Tech YouTube channel with over 140,000 subscribers.

Today, I get to help thousands of developers around the world improve their careers. It is, without a doubt, the most rewarding work I've ever done.

A screenshot of testimonials from students of the Pragmatic Clean Architecture course.
A screenshot of testimonials from students of the Pragmatic Clean Architecture course.

Student testimonials from Pragmatic Clean Architecture.

This is genuinely fulfilling work. When someone messages me saying my content helped them land a job or finally understand a concept they'd struggled with for years, that feeling is hard to describe. I'm doing something meaningful.

And yet.

The Lingering Itch

The urge to build something still remains.

It's not dissatisfaction. It's not that content creation isn't "real" building, it absolutely is. It's a different kind of building, certainly. But this feeling I have is something more fundamental. A part of my brain that wants to work on a fresh project. That wants to solve a problem nobody has asked me to solve. That wants to take an idea from nothing to something.

That's why I have a Hetzner server sitting idle right now. Never know when I might need it. Right? Also, I'm getting a great deal for €3.29/month. Can't argue with that.

A screenshot of a Hetzner server management dashboard showing a server.

I think this urge never fully goes away for people like us. We can channel it, redirect it, find new outlets for it. But it's always there, lingering. And maybe that's okay. Maybe that restlessness is what makes us who we are.

Why You Should Build Too

If you're reading this with your own idea rattling around in your head - some app concept, some tool you wish existed, some problem you think you could solve - I want to tell you something.

Build it.

Not because it will make you rich. Statistically, it won't. Not because it will become the next big thing. It probably won't be that either.

Build it because the person who finishes that project will not be the same person who started it. You will learn things no tutorial can teach. You will develop judgment that only comes from making real decisions with real consequences. You will have stories, opinions, and experiences that set you apart.

The outcome is almost beside the point. The transformation is the product.

Maybe you'll end up with a successful SaaS. Maybe you'll end up with a failed project and a mass of hard-won knowledge. Maybe, like me, you'll end up somewhere you never expected - doing work you couldn't have imagined when you wrote that first line of code.

You won't know until you build.

So open your terminal. Type git init. And start.

Let this be a year of building.


Whenever you're ready, there are 4 ways I can help you:

  1. Pragmatic Clean Architecture: Join 4,700+ students in this comprehensive course that will teach you the system I use to ship production-ready applications using Clean Architecture. Learn how to apply the best practices of modern software architecture.
  2. Modular Monolith Architecture: Join 2,700+ engineers in this in-depth course that will transform the way you build modern systems. You will learn the best practices for applying the Modular Monolith architecture in a real-world scenario.
  3. (NEW) Pragmatic REST APIs: Join 1,600+ students in this course that will teach you how to build production-ready REST APIs using the latest ASP.NET Core features and best practices. It includes a fully functional UI application that we'll integrate with the REST API.
  4. Patreon Community: Join a community of 5,000+ engineers and software architects. You will also unlock access to the source code I use in my YouTube videos, early access to future videos, and exclusive discounts for my courses.

Become a Better .NET Software Engineer

Join 75,000+ engineers who are improving their skills every Saturday morning.