Millions of developers have typed these two words as their first act of creation. If you can recall that moment — or imagine it — you already know what this post is about. It is not about the program. It never was.
Every programmer uses "Hello, World!" to announce
their arrival into programming. It is a baby's first cry — proof of life in a
new language, in a new world. It demonstrates nothing in terms of skill or
expertise. And yet, the joy of seeing your first program execute is something
no amount of subsequent complexity ever quite replicates.
It is like discovering fire. But without the risk of burning down the house.
The Teacher's Warning I Didn't Fully Understand Yet
In those early days of learning C, my programming teacher gave us a lecture that I have never forgotten — even if it took years to properly understand it. He was talking about code readability. About the responsibility a programmer has to the person who reads their code next.
Your computer doesn't judge your messy room, but your colleague definitely will judge your messy code.
At the time, I was too busy surviving the course to appreciate the depth of that observation. I was not good at programming. I did not like C at all — in fact, I actively hated it as a course. But there was no escaping it. I had mandatory programming modules across four semesters, in multiple languages. The curriculum was, in retrospect, relentless.
Across those two years, I printed "Hello, World!" in C++,
Java, JavaScript, and early C#. It was a never-ending cycle of digital déjà vu —
the same two words, a new language, the same small thrill each time, and somehow
never diminishing.
OOP, and the First Real Joy
Then came Object-Oriented Programming. And something changed.
I loved OOP in a way I had not loved any course before it. The idea that you could model the world as objects — encapsulated, inheriting, interacting — felt less like learning syntax and more like learning a new way to think. I earned my first A+. I spent an unreasonable amount of time in my room. This, I later understood, is why developers often have fewer friends.
My roommate and I fell into something that seemed, at the time, entirely normal: we began communicating through C++ code. Not about the code — through it. A message passed as a comment. A joke embedded in a variable name. We ran in-room programming competitions with no judges and no prizes, purely for the satisfaction of a solution that compiled cleanly.
- The occupants are currently in a recursive loop and cannot be interrupted.
- Any conversation not in C++ will be compiled with warnings.
- We have not implemented a user-friendly interface for human visitors.
- The room operates on a strict garbage-collection schedule. You may be collected.
- Entry without a pointer to the door handle will result in a segmentation fault.
- Existing bugs are features. We ask that you not report them.
- Our stack is currently full. Please come back after the semester.
- We do not support legacy communication protocols (talking).
- This room is not thread-safe. Proceed at your own risk.
- The developers are not responsible for any side effects caused by this room.
The Debate That Never Ends
My love for C++ gradually became a love for Java — and with it came an argument that occupied more of my time than I care to admit. The C++ vs Java debate was a permanent feature of our dorm room, our university corridors, and later, our early workplaces.
The Comparison That Explains Itself
Comparing Java and C++ is like believing you can diet without exercise because you have theoretically eaten fewer calories — but practically, you have eaten a cake. Both languages have their place. Both have their advocates. The debate is mostly about which trade-offs you are willing to live with. I chose Java, and I made peace with the cake.
Programming as a Form of Art
This is something I have believed for a long time, and I have never found a better way to say it: programming is nothing less than a form of art. It is creative. It is imaginative. It gives you a private space for thinking that few other disciplines offer — a room inside a room, where the only constraints are the ones the language imposes.
My best piece of code — the one I still consider, without apology, a work of art — was written in pajamas at 3 AM on three hours of sleep.
Programmers are notorious for the self-talk that happens while staring at a black terminal screen. The muttering, the pacing, the absolute certainty that the problem is unsolvable, followed by the equally absolute certainty that you have just had the only idea that could possibly solve it. From the outside, this looks like a psychological event. From the inside, it is completely rational. And it vanishes entirely the moment the code compiles and runs.
The madness is the method. The compile is the proof.
Twenty-Four Years, Ten Languages, One String
The thread that connects all of it — every language, every phase, every sleepless night — is that same string. Two words. An exclamation mark. And somewhere, in each new language, a version of that first uncomplicated joy.
My programming teacher told me that my colleague would judge my messy code. He was right — and over twenty-four years, that warning became a value. The cleanliness of code is a form of respect: for the person who reads it next, for the problem it is solving, and for the craft itself.
The madness that started with a single C program in the early 2000s has carried on through ten languages and counting. The screen is different. The machine is different. The problems are orders of magnitude more complex.
But somewhere at the start of every new language, there is still that same program. Two words. An exclamation mark. And the feeling — brief, specific, irreplaceable — that you have just announced your arrival somewhere new.