How Features as a Service (FaaS) Helps You Code Faster and Improves App Quality
April 26, 2016 at 12:00 AM Coordinated Universal Time
Laziness is a key trait of the highly successful programmer. Amateurs invest lots of time in things that don’t matter, but good programmers move fast and don’t waste time.
There’s a business value proposition in programming fast, of course, but the really good programmers move fast for personal reasons: Better to make life easy than work hard. Better to reuse components and code than create everything from scratch. Easy is less work. Less work is good.
The first software programs were made for personal use by developers who wanted less manual work. Get smart with the code, and let the computers do the real work. This trend has continued as the industry evolves, and it explains high-level languages like Swift (nobody wants to code in machine language), code libraries, open source software, and cloud services. Elegance still matters, but the ultimate elegance is not spending time reinventing the wheel.
This penchant for working less by working smart is finding new expression in the form of features-as-a-service (FaaS), the latest app development evolution.
Developers have been using cloud services for some time on the backend. Much of the cloud runs on Amazon Web Services infrastructure, for instance, and many developers use backend services from Stripe and Paypal for credit card processing. These backend services make development significantly faster and more reliable because programmers simply piggyback off these services instead of building them from scratch.
A FaaS Way to Code
The emerging FaaS trend extends this concept to front-end features. If an app developer needs location services as a feature, they can use a FaaS provider such as Mapbox for quickly including the feature without building it from scratch. Or if they want social functionality, they can go with a FaaS provider such as Tapglue and skip the work of having to deal with profiles, following users, including news feeds and notifications, and other social components like commenting and in-app sharing.
Many features commonly needed by app developers already are available as a FaaS service.
Algolia, for instance, brings search features like auto-complete searches, advanced queries, geo-searches, and things like feedback loops based on metrics you define. It supports several different languages, too.
Or if you need deeplinking, you might grab the services of Branch.io, which simplifies the process of creating a link that directs them to an action when the user hits "invite" or "share" and ties data to the created links. This data can be used for things like onboarding and content.
This is laziness at its best. FaaS improves app development velocity and increases quality at the same time. Developers focus on the core value proposition of the app—what it does differently—not features that are necessary but already have been perfected by others. The smart programmer grabs features off the shelf and puts them together in a new way with as little original code as possible.
Working this way is smart app development, and one good example is real-time communications.
Embedded video chat and click-to-call functionality is important for many apps today. An estimated $1 trillion in annual sales comes from click-to-call functionality, as I noted in an article last month, Why Click-to-Call is Important for Mobile Apps and Web Sites. Google reports that roughly 70 percent of mobile consumers use click-to-call for faster calling on the go, and 40 percent use it frequently.
Embedding real-time communications in apps is relatively easy with mobile RTC, but compatibility challenges, numerous technical hurdles, and quality-of-experience issues still make embedded real-time voice and video functionality a pain. Serious apps must ensure that their voice and video features perform reliably despite variable mobile network connectivity, for instance.
Instead of grappling with these issues themselves, developers can drop in a FaaS real-time communications provider such as Agora.io and have click-to-call functionality with just a few lines of code. Much like developers use Stripe for instant payment processing on the backend, they can use Agora.io for turnkey voice and video features on the frontend and let the provider take care of network considerations, codec optimization, and other issues like compatibility.
Using FaaS for rolling out features and solving common front-end problems means that developers get solid functionality without much work. This is smart coding, and it also is the next evolution in software development.
The pace of software development now is so fast and consumer expectations so high, even programmers that don’t value their time can understand why FaaS is almost an inevitable progression. FaaS is getting more done with less, and freeing time for the parts of app development that are more fundamental departures from what came before.
For apps that take existing technology and features for new applications, FaaS speeds up the process. For apps that have a more fundamental technical innovation, developers can use FaaS for focusing on this core innovation and leave the rest to feature service providers.
Either way, FaaS makes life easier. Any good programmer can appreciate that.