Why Building a Mobile App is Hard
blog.parse.com
blog.parse.com
I've been making web sites for years, so the idea of a server running a database and a back-end platform that works over HTTP is anything but alien. I'm working on an app right now and got the backend stuff working very quickly.
The client-side was an entirely different matter, however- synchronising local data with remote was a challenge, but easily doable. Coping with zero network connectivity, patchy geolocation, creating a touch-based UI.... that is the stuff we haven't faced before, and that's the stuff that is the most challenging.
I've written a number of non-trivial IOS apps that are heavily server based. I've done both the server side (Ruby Sinatra API App, MongoDB, Varnish) and the client side (Obj-C naturally) and consider myself equally proficient in both.
The client generally takes much longer to write and debug than the server due to all the little issues with having a smooth, non blocking UI, network availability, juggling data and managing resources that you have with the client app. Not to mention any custom UI controls you make.
If you have a crappy server API this pushes a lot more complexity onto the client, or it just makes for more ways to have different failures. A well designed server API works best with a well designed client, but being messy on either means more work on the other.
How was it both a challenge and easy? Do you mean once you discovered the correct method the implementation was easy?
The actual implementation was relatively simple though, and worked well. That said, I'll admit the sync functionality my app needs is about as simple as it gets. I'm sure there are more complex scenarios out there.
Your service is useful, but not all mobile backend requirements can be solved with cloud storage of key/value pairs.
This statement is completely correct, which is why Parse is adding so many features besides just key/value storage. You can already store relational data, do geo-searches, user authentication, file storage, push notifications, and lots of other stuff.
See: https://www.parse.com/docs/ios_guide
Our goal is to let you write any application without running your own server. If you think you can't build your application on Parse, drop us a line at feedback@parse.com and we will be glad to either figure out how it can be done, or put it on our todo list.
Not trying to be overly critical here, what you've built is very enabling for a lot of app creators. But it seems to me that any really successful client of yours will eventually outgrow your feature set and need to migrate to a custom solution.
At that point I don't know how you hold on to those customers without needing to build something like a Heroku.
This is a good point. One convenient feature of the Parse platform is that it's located on EC2, so developers can run their own servers on Heroku or just EC2 itself with <2ms latency to Parse if they need to run any generic code. So we can let Heroku build Heroku, and just make Parse work really well in conjunction.
I think right now we have reasonable solutions for this. We would like the solutions to be not just reasonable, but amazing. So there are a lot of other ideas we have to make this sort of development easier. We're working on it.
If I was looking to make a minimum viable product to attract investors then I'd probably use a service like Parse to speed up development.
Once you're swimming in investor dollars you can worry about hiring people to build your own custom back end that has all the bells and whistles you want.