Over the past few weeks I took a break from improving and maintaining my existing apps and built a new app from scratch. I did it because I wanted to work on something new and to diversify my app portfolio hoping this new app will be an additional income source.

Time Estimate

Since I already have a lot of the code that I can easily reuse from my other APIs and apps, I was hoping for the development to be quick. Of course, as usual, everything took longer than planned. My original estimate was three weeks but it ended up being about a month and a half(of part time, after work and weekends development). While I did reuse most of the code, building the custom functionality turned out to be a bit more complex than I anticipated.

I have an estimation rule that I came up with at work. When I’m asked to give a time estimate, I come up with one and then multiply this estimate by two. Ironically this simple method works very well. It usually comes out either as a very accurate estimate or I finish work at about 75% of the time and there is a good surprise of finishing work ahead of time. As a project manager you don’t really care if a task will take a bit longer, but the ability to be within a preset schedule is critical for various reasons such as planning and promises made to clients.

I forgot to use this rule while working on my new app and it ended up being exactly twice as long as I anticipated.

Scope and Functionality

For some reason I still struggle with publishing a new product. My brain seems to come up with a lot of thoughts about what can go wrong. Luckily this isn’t the first time it’s happening so I can dismiss these thoughts and continue focusing on the end result. At this point the app is not something I’m satisfied with but it works so I released it anyway.

80 / 20 and Frustration

Most of the work was finished quickly as I planned, but the small (though critical) details took the majority of the time. I kept finding issues I didn’t think about or just bugs I had to fix. This phase is very frustrating and seems like it will never end. The experience I had with building a few apps that did work in the past helped me to keep going. I remember how this frustration used to break me and made me abandon whatever I was working on. I try to remind myself that I had these doubts while working on my previous apps as well and they were proven to be wrong.

I’m not sure if I’m overly negative or maybe everyone have this challenge. To battle this I try to always remember to ship fast even if I’m not satisfied with the results. It’s counter intuitive - but releasing something that works even if you are not happy with it, is tougher mentally than endlessly improving your code while risking to abandon it entirely because you can never reach perfection. I see that others have the same tendency to emphasize this fact so maybe it’s not only me.