10 Software Components to Stop Building In House for 2021

It’s time to stop wasting precious internal dev resources to reinvent solutions that vendors can deliver elegantly at a fraction of the cost.

Not long ago, it was common for businesses to develop their own proprietary software solutions. Even companies whose core product or service wasn’t software would write their own programs — retail chains built point of sale and inventory management systems, for example, and hospitality giants like Hilton built their own reservation and property management systems. As recently as the early 2000s, some companies even built and maintained their own email clients.

Hosted in on-premises server rooms and corporate data centers, these homemade solutions were cumbersome to scale, secure, maintain, and upgrade. Most have now been rendered obsolete by the cloud revolution and Software-as-a-Service (SaaS) pricing models, which allow vendors to deliver reliable, high-performing solutions at a fraction of what it would cost their customers to build in-house. Those customers are better off putting limited resources toward their own core value propositions — like providing a great hospitality experience or curating the perfect set of retail products — and buying software from dedicated software vendors.

But even in 2020, one sector still errs too often on the side of in-house development: software providers themselves. Stacked with developer talent and racing to deliver competitive features, tech firms will waste precious engineering resources to reinvent components that already exist and ultimately don’t differentiate them. The truth is that these types of lower-order problems have already been solved — elegantly — and there’s little to gain by solving them again. Careful consideration of the classic build vs. buy dilemma during the planning stages of the product development lifecycle will save a great deal of time and resources in the long run.

In many build vs. buy scenarios, a vendor whose sole purpose is to develop and maintain a certain component solution benefits from economies of scale and offers a higher-quality component at a significant cost advantage compared to in-house development. The vendor takes responsibility for maintaining, securing, and constantly improving the feature, leaving the client’s product team to focus on their own core value proposition.

Special circumstances aside, these 10 types of software components will almost always make more sense to buy than build from now on:

10. Recurring Billing & Subscription Management Systems

B2B SaaS companies usually offer multiple pricing tiers based on usage and/or optional add-on features, and a surprising number of them actually have their sales, support, and finance teams manually monitor usage telemetry to adjust billing. When rapid growth renders this model unsustainable at scale, it can be tempting to develop an integrated billing system in-house. No one knows your app’s back end or your customers’ needs better than your internal team, so it seems logical that this type of solution belongs in an internal project. But the truth is that this type of billing framework already exists, and a number of vendor solutions can integrate with your existing data systems. Before you commit to developing a billing system in-house, check out offerings from ChargifyStripe, and their competitors.

9. Email Notification Systems

Your marketing database might be perfectly adequate for sending newsletters, promotions, and product updates to your customers, but what about the integrated system that sends event-triggered email notifications like account verifications, password resets, and/or shipping notifications? This type of transactional email system may seem relatively easy to build, but like the other software components on this list, it’s probably not worth the investment to pull dev resources away from higher priorities. There’s little to gain via iterative trial and error here, either — transactional email needs to just work without any bugs or maintenance hang ups that can damage your brand’s reputation. The leading API provider here is SendGrid, though it’s worth doing your due diligence to evaluate a few SendGrid alternatives as well.

8. Data Analytics Tools & Business Support Systems

Data practices are still evolving — even tech-first companies are still figuring out the best ways to store and process the millions of server-side events they collect and properly analyze that data in meaningful, actionable ways. Especially if your product wasn’t architected from its earliest stages with data science in mind, the prospect of building out functional database infrastructure can be overwhelming. And until relatively recently, product teams were on their own to come up with proprietary data solutions that met their needs and could deliver usage telemetry to a data lake or warehouse. Even with that accomplished, it was hard to make high-stakes decisions like pricing changes and feature prioritization with confidence. These coding-intensive in-house solutions are now being phased out by providers like Snowflake and Sisense.

7. User Authentication Services

Security belongs at the center of any product development process. With credential theft, account takeovers, and permissions-related vulnerabilities contributing to a significant portion of attacks, product teams can’t afford to botch user authentication systems. With measures like password complexity requirements and MFA/2FA in place, you need to be confident that your users are who they say they are and have been granted the appropriate level of access to your product. Simple authentication processes are easy enough to code, but when it comes to managing liability and ensuring that your commercial product meets industry compliance standards, identity management is best left to a dedicated vendor. Instead of starting from scratch, consider integrating your app with login offerings from Facebook, Google, and/or Apple. Here’s how to add sign in with Apple to your iOS app, as well as how to secure a React chat messaging app using Auth0. For larger enterprise-grade applications with high user counts, consider Okta’s authentication SDKs.

6. Payment Gateways & Processors

Whether your product needs a recurring billing system as described above or a way to process one-time payments as in e-commerce, the software that actually collects customers’ payment card info must be extremely secure. It also needs a clean and functional UI that merges with your branding to help earn your customers’ trust as they provide sensitive information. Some third-party payment gateways force an unpleasant user experience, opening a completely different page in a web browser or launching a separate app on mobile. But the best way to build a seamless in-app payment experience is still to start with a trusted third-party vendor solution. That way, the responsibility to meet and demonstrate strict PCI compliance requirements falls on the vendor, whose primary focus is keeping payments simple and secure. As with recurring billing systems, Stripe is a favorite here. For more options, check out G2’s best payment gateways list.

5. Data Encryption

Encryption of data in transit is another foundational requirement to protect your customers’ information and your own. Historically, end-to-end encryption has been treated as a must-have for sensitive industries like healthcare and financial services, but optional for applications that transmit less-sensitive information. But now, as consumers gain awareness of privacy issues and demand more control over their interactions, advanced encryption technology is rapidly becoming a necessity across the board. Trustworthy encryption tools are widely available and relatively easy to integrate with many types of software products, so it’s rarely practical to develop this type of security feature in-house. Here’s how to use Virgil Security to build an encrypted messaging app for Android. Other solid options include the Web Crypto API and Apple’s CryptoKit.

4. Cloud Infrastructure & Management Tools

So you’ve benefited from the cloud infrastructure revolution, and you’re taking advantage of compute savings by using scalable infrastructure from a provider like AWSGCP, or Azure. But could your team save even more time by automating tasks like provisioning and deprovisioning new servers? The answer is likely yes: Before you begin spinning up servers manually, consider what’s available using Infrastructure-as-Code (IaC) configuration tools like TerraformPuppetChef, and Ansible. You would never waste time building and maintaining your physical servers again, so why sacrifice efficiency in configuring your virtual ones?

3. Video Calling Technology

Beyond dedicated video calling apps like FaceTime, Google Meet, and Zoom, reliable in-app video chat has become critical to fields as diverse as telemedicine, customer support, and team collaboration. When your customers rely on video calls to communicate important information, they trust that their facial expressions, body language, and speech will come across clearly. They won’t tolerate poor video or audio quality, delays, or dropped calls. Instead of trying to become WebRTC experts and account for all of the variables that create a reliable HD video calling experience, product teams should start with a proven interactivity API solution like Dolby.io.

2. Social Activity Feeds

Delivering real-time updates in a scalable feed that looks sharp and performs flawlessly takes more time and resources than you’d think. Whether your feed delivers live sports updates, job postings, or status updates, users will expect a high-quality experience similar to major social media platforms like Facebook, Twitter, and Instagram. Those platforms took huge, highly skilled engineering teams years of work to build — if you’d rather get your activity feed up and running in a matter of hours instead, start looking for an activity feed API solution.

1. In-App Chat & Messaging

In-app chat is another function that seems simple on the surface but quickly becomes more complex when deploying a real-time messaging application or feature to production users. As with other components above, users have become accustomed to a fast, high-quality, feature-rich, and engaging chat experience similar to leading dedicated chat apps like WhatsApp, Slack, Facebook Messenger, and iMessage — and that experience can take months or even years to deliver.

Even if a simple peer-to-peer messaging feature would be relatively easy to build, the required time and cost can multiply by a factor of 10 when it comes time to maintain reliability at scale. Overhead for chat infrastructure can sneak up on you: With websockets for real-time, you’re looking at a lot of writes to a database and a lot of memory to handle socket connections. And for most organizations, it just doesn’t make sense to pull highly skilled developers away from their primary goals to reinvent existing chat features. You can find more detail about the cost factors involved in building chat in our breakdown of industry leaders’ chat API pricing.

Still on the fence about whether it makes sense to buy a chat API instead of building the functionality from scratch? Read our comprehensive guide to building vs. buying in-app chat for a closer look at all the variables involved in producing an accurate estimate of development time, cost, and risk.

And if you’re ready to see for yourself what it’s like to integrate in-app chat using an enterprise-grade API & SDK solution, start your free Stream Chat trial today.

Mike Ranellone

Ranellone is a writer for getstream.io covering the latest in cloud components, in-app chat, and activity feed technology.

Software Daily

Software Daily

 
Subscribe to Software Daily, a curated newsletter featuring the best and newest from the software engineering community.