Rawand

Problem with Chasing ‘Perfect’ Code

August 15, 2025 (4m ago)286 views

I wasted three years chasing a better keyboard no one asked for.

“Perfection” is a trap, and once you truly acknowledge that, you start seeing “complete” and “incomplete” in a whole new way.

Young Rawand

Ever been stuck in an endless loop of improvement aimed at perfection? Let me guess, you never really achieved perfection, and you gave up at the very end. Yes, I will take you back to the 2016 “Rawand” that made so many stupid mistakes.

Throughout the years I have lived. I have always chased “perfection” without really understanding what perfection can really be, why? The more you know, the less you think you know. Thus your idea of perfection is a never ending-and-never-shrinking circle.

At the very early stages of my life. I saw a huge passion for coding. In 2015. I actively used my Chinese tablet to watch iOS programming videos on YouTube. Mind you I was actively working and saving money for a Mac since being 14 years of age (2014). By the time I bought the Mac in 2016. I already had a developer account created a month before under my brothers identity since I was underage.

The First Mac, 2016

When I had my own Mac. I had watched all these cool videos making apps from scratch using Objective-C (Swift not being widely adopted at the time), I had a HUGE desire for making great apps with zero practical knowledge, and that is trouble on both ends.

On the same year. I tried hard to make some apps but they were just personal projects that even I stopped using them after a day. I ended up buying a dictionary template on CodeCanyon.

The template was my entry into iOS development, I modified it a bit and since someone else with way more experience than me made it, it immediately changed my idea of how my next app should be, with zero practical knowledge, still.

I jumped way ahead by using someone else’s work even though it was fully paid for. I didn’t know what I was doing, but I wanted more. Having the dictionary on the AppStore at the time with not many Kurdish apps kind of allowed me to have a title for myself and I really felt proud.

Fast-forward to a year later. I still could not make a single, simple app using Swift without using someone else’s code, the damage had already been done because whatever I made was tiny compared to what I got for $20. So my journey of chasing the perfect code begun.

The Keyboard Obsession, 2017–2022

When I knew I could not make apps myself, I saw a window to make app extensions myself. In 2017. I created my first Keyboard app called iKeyboard. A keyboard app for Kurdish Language since it did not exist at the time on iOS. It was a really really bad keyboard that took me a year to make, yet the never ending improvement cycle kept me modifying its core functionality and code about 4 times the same year.

Because the gap between existing keyboards and the one young Rawand made was wide, I kept modifying the layout, functionality so many times that in the very end of 2022 I had to sunset it in favor of a new Keyboard app for Kurdish Language. I really lost a lot of years chasing the perfect keyboard layout during 17-19 without thinking about the end-user. The end user cares about their keyboard layout that they can write how they are used to. Keep changing that? They will never get used to your keyboard so they will delete it.

At the early stages. I thought people wanted animations. I made the buttons shake on animation.. shake.. for a keyboard, because i wanted it to be perfect, I made the layout bigger. I made the buttons smaller. At one point I had run 30 trial and runs on production, on real customers whom I had no way of gathering feedback from.

Once I realized downloads were shrinking fast. I knew what I did wrong. it wasn’t perfect, but the truth was constant change was the problem. I changed what annoyed me and what didn’t feel right to me.

If I was able to see my young self for a minute. I would immediately say “Stop chasing the perfect code, because perfect code does not exist”

The real cost is not customers, clients, or money. It’s wasted time you could ship and gain that initial traction, get that first customer, make that first friend. There was many many times I gave up on iOS development when I was under 18. I jumped ship to Web.

Web

At some point in my young years. I saw brother Aryan at the time translating movies for KurdCinema. I wanted to be like him and be able to translate movies, submitting my first translated movie to KurdCinama was rejected so I decided to create KurdSubtitle.net (Now a rival to KC)

KurdSubtitle is the only project I was able to ship without chasing the perfect KC clone. At the very beginning the name came from an idea where someone can download Kurdish subtitles of movies, just the subtitle. Later many people joined forces with me but I ultimately sold it later on. This is what happened when I stopped chasing perfection. I built a product, I shipped it to real users and it still lives.

I regret failing myself so many times for chasing the perfect code, the perfect product but in the end, having a catalogue of unpublished apps that never saw the light of day. If I just tried to ship my other apps in the same state as when I shipped KurdSubtitle. My AppStore portfolio would be way bigger.

Perfection?

I guess perfection now, 9 years later is something me, as a user can enjoy using. My perfection checklist has changed substantially since then.

  1. It solves a problem in my daily life
  2. It works without too many interactions
  3. It is not confusing to look at

…it just works.

If your final product works for you as an end user, stop perfecting it and release it to the wild, iterate over improvements. I could have built a dozen imperfect products people actually needed. Perfect is the enemy of progress, and progress shipped on time will always beat perfect shipped too late.

So here’s my challenge to you: dig through your “almost done” folder, pick one project, and release it this month, flaws and all. The world can’t use what you never ship.

References