Doing Hard Things Well
(This is a follow up to The Future of MinHub, published in June 2016)
It’s October 1st.
We wanted to have our new sync rewritten and deployed by the end of June.
We were hoping to have Android ready to ship in August.
Now, September is over.
And I wanted to share why.
Lesson number 1: Rewriting 2 years of code into another language takes longer than 2 months.
Lesson number 2: Time isn’t as important as quality.
Let me explain.
I’m on a limited budget (trying not to incur debt) and unwilling to ship anything less than perfect on syncing after such a frustrating experience with it in the past.
In any given situation, you can only choose two. And once you do, it determines the 3rd.
For instance, if you want something fast and high quality, it’s going to cost a lot. But if you are ok with waiting and getting high quality, the cost won’t be as high.
Since I have chosen to go with low cost and high quality, it is taking longer than I have expected to get through this syncing and porting project.
Not a day goes by that I don’t have at least some level of panic for letting all of you down, the youth pastors that are counting on MinHub Youth to work and help track all of the important tidbits in your ministries. We have a long, long list of things to fix and improve upon, all of which are sitting idle while we tackle this. It drives me crazy.
I should be more gracious with myself, and I am trying to be, especially by putting this out there and being transparent.
There is a bit of a silver lining though. We are working on moving the entire app to a technology called React Native that allows iOS and Android apps to be written with one set of code. There are quite a few things that were iOS only that we had to move away from, mainly CoreData which stored all of the apps data in a database. CoreData isn’t on Android.
We have looked at and experimented with multiple mobile database alternatives as well as syncing backends and have had way too many reservations or downright bad experiences.
There is a super promising mobile database that is insanely fast and a huge step forward in modern database structure that is innovative, not just trying to tweak old technology. It’s called Realm.
The problem is that all of the syncing technology is built to handle the older database types, not this new technology.
For 2 years, Realm has been working on making great in app experiences without worrying about connectivity.
Until this past month.
We were accepted into a beta program that allowed us to get an early look at their syncing technology, and it is exactly what we’ve been looking for. This is what is says on their site:
All data is available on all devices, which means that each device can fully function when offline, then re-sync when the network comes back.
That sounds perfect, but the question is, does it actually work. Well, since we’ve been accepted into the beta program (a few weeks ago), they released the Realm Mobile Platform for all developers. And they released this video that demo’s the ability. And this is what we are using to make sure that sync is seamless and robust and that we can move on to our growing list of improvements and additional apps.
You can view the video in the first half of their blog post in this tweet:
All that to say, sorry for the delay, doing hard things well takes time. And as ambitious as I have been with my thinking, building it right and well will be much better than rushing an unreliable solution.