Iterations
- Chris Li
- Sep 30
- 2 min read
“Hey, I did CS50! I can do this.”
That was the thought that started it all. But my first version of the app was chaos - no architecture, no real plan. Just fragments of code, stitched together like a fragile experiment. It worked, barely, but only because I forced it to.
I was overwhelmed. The scope was too big, the problems too complex. I shelved the project, but the idea wouldn’t let me go.
The questions haunted me: What if I tried this? What if the logic worked that way?
So I tried again. The second version had more order. I started with the backend, then connected a Flutter frontend. It felt like progress. But every time I added a feature, the code collapsed under its own weight. Debugging became endless.
I remember asking my father, an experienced systems engineer, for advice. His answer: “Why not stop? Why spend so much energy on this? You’re already a physician.”
But I couldn’t stop.
The code grew messier, page order scrambled, folders renamed carelessly. I couldn’t even remember the commands to compile anymore. It was time to wipe the slate clean.
Ctrl+Alt+Del.
The third iteration was different. I took my time. I studied structure, wrote things down, documented everything. I finally committed changes properly to Git. This time, I built with intent.
Still, the challenges were real. A major refactor took me a month and nearly broke my momentum. A mistaken rollback erased days of work. I stared at my screen, exhausted, eyes burning, but I pressed on.
And now, the app lives. The core functions are there. It integrates with FHIR, C-CDA, and direct messaging. Security runs on Keycloak. These are not small feats for someone who once thought a “jumbo of cobbled-together code” was good enough.
It’s still imperfect. The UI isn’t polished. The journey isn’t over. But I can see the vision clearly now. I know where this is headed.
And this time, I will look forward to the next iteration.
Comments