In order to try and exercise some of my skills and tinker with some new tools, I tasked myself with creating a new app in a very specific space.
Right away, I had a big choice to make, would I build the app as a client of an existing platform, create my own,or have a standalone app, with no platform.
The Client Approach
My initial thinking was that this was the way to go. In my personal app installing experience, whenever I hear about an app in a particular area, I first check to see if it supports my existing service.
Being able to use an existing services users provides a myriad of benefits to the developer, including:
- Infrastructure considerations are much simpler since the service is handling the majority of the bandwidth and storage.
- There are promotional opportunities because the existing service already has marketshare.
- Authentication is largely handled by the service.
- One has an existing feature set and API to start from, so the focus can be on user experience.
As I moved further along into this process, I also started to see the potential downsides:
- The service controls API access, so there are likely approval and revoking processes one must be aware of.
- Since the features are already defined, the ability to add new functionality might be limited.
- Platforms can change policies, leaving the fate of one’s app in a third party’s hands.
But what about building a platform?
The Provider Approach
To truly be in control, it can make sense to venture out and build a platform. While this tends to be the obvious first choice, it comes with a number of considerations:
- As a single developer, my ability to handle every aspect of an application can be limited.
- Built-in promotion isn’t an option, so marketing becomes crucial.
- Users will be much more hesitant to try an unknown service.
And the advantages are:
- Full control over features and capabilities.
- Focused development, since the feature set is fully in the developer’s control.
So now comes the big decision, which path is worth the investment? Being able to use a platform that already exists is like a head start in trying to get some publicity in a crowded app market. However, controlling the platform means creative freedom. And if we assume the install base will be small with either course, maybe it’s okay if it’s even smaller?
What started out as a fun way for me to try and build on an existing skill set has now got me questioning the entire purpose of my project. Dreaming big is great, but is dreaming realistically better?