Day 7 (Thursday) [Conclusion]
Updated: Apr 9, 2018
It's been a great week. At this point I will be concluding writing about this experiment. In a week, I built a working MVP! It took me little longer and I had to reduce the scope. All software projects these days run over budget and miss their deadlines any ways. After all -- it's a success!
There is still a lot to be done. I have to finish Android (just because I can). Going forward, I will take a slower pace though -- I have a production system to monitor and I also now have a legacy code (the minute you ship it, code becomes legacy) to maintain, all of these tasks add up. And I have a job that is starting in a few days -- will have to switch to nights and weekends mode working on WiSaw going forward.
The automated tests are passing:
The url for cleaning up old images is implemented and deployed:
I kind of cheated -- I plugged that URL into the AWS health monitor end point. This will kill 2 birds with one stone -- it will notify me if anything miss-functions on the DB or the API level, and it will also perform a useful cleanup task on schedule. This way I will not have to worry about configuring a worker environment on ElasticBeanstalk yet. I do not really know how often the health check is invoked, could be once a minute, could be once every 5 minutes. Really do not care, as long as it works. If it ever starts to time out because it's not able to finish the cleanup task between 2 heart bits, I will have to figure something else then.
The UI is literally rough around the edges. I already spoke with some friends who are interested in helping me out improving the appearance of the app. However, even when the product becomes mainstream, I intend to keep it minimalistic -- I do believe this is the strongest selling point for my little app.
I will still have to add Fabric to monitor crash reports, and, perhaps some live Analytics. All that can wait for Android to be complete. For now, since the app is so simple, I can figure out the usage patterns by looking at the database -- people either take photos, or they don't.
I still have to monitor the infrastructure and upgrade it to necessary level when demand increases -- with AWS ElasticBeanstalk and RDS it should be super easy.
While working on the project, majority of time was spent on brainstorming, research and investigation, as well as battling Apple rejections. Only about 20% of time went into actually writing code -- just like it should be. I took few wrong turns, and spent time on researching something I ended up not using (like Android DataBindings). I also has to spend time documenting my experiences, so that I could write this article, which is not exactly coding, but, I find that writing about my experiences makes me produce better code -- so it was definitely worth it. This experiment once again confirms, that programming discipline is never only about writing code.
No matter how good you are, you will always learn tons of new stuff while working on skunk projects like this one. Even if the project never becomes another Twitter, at least I've had tons of fun working on it, and this what matters after all.