1. Beyond the Emulator
When you learn to code on a computer, everything happens in an artificial environment. You run code in a terminal, or you preview a screen inside a software emulator window with a fake virtual frame.
It feels like a school project. It feels contained inside the machine.
I will never forget the evening I generated my first release APK file, plugged my mother's smartphone into my laptop via a USB cable, and enabled developer mode.
The Moment of Physical Contact
I ran adb install -r app-release.apk. The terminal printed Success.
I picked up her phone. There it was: my custom app icon sitting on her launcher right next to WhatsApp, YouTube, and banking apps that were built by billion-dollar corporations.
I opened the app. It launched instantly. I handed the phone to my mother and said, "Try pressing this."
She tapped the screen. A list of items slid into view with a smooth animation. She looked up at me with genuine surprise and asked, "Kamu yang bikin ini semua? Beneran?" (You made all of this? Really?)
She didn't know what Kotlin was. She didn't know what a ViewModel was. She didn't care about async coroutines or database queries. All she saw was a real, functional piece of software that responded to her fingers.
Why We Keep Showing Up
In software engineering, you will spend hundreds of hours doing things that feel dry and frustrating: debugging memory leaks, reading dense API documentation, wrestling with merge conflicts, and dealing with rejection letters.
Whenever I feel exhausted or wonder why I chose this path, I think back to that evening.
Software development is one of the few crafts in modern life where you can imagine an idea in your head in the morning, write text on a screen in the afternoon, and put a physical tool into someone's hands by the evening. That spark is real, and it is the reason I will never stop building.