Product Development: Turning Months Into Weeks
How quickly your definition of “ambitious” can change. Five years ago getting a dog, starting a web company, working on huge projects here at Invoke all would have seemed hugely ambitious to me, but I’ve done them all.
Building an effective real-time chat that syncs perfectly between consumers and supports e-commerce would have been ambitious five years ago. But we’ve just pulled it off in under a month.
We’ve built a consumer-to-consumer (C2C) platform that, through chat, enables users to discuss their purchase, make offers, and determine shipping methods. They can accept the terms, and even generate an invoice. They can conduct business with each other without ever leaving the chat. In the past, building a chat like this would be an incredibly ambitious endeavour. But, thanks to newly available technologies, it was easy for us too.
Simpler, Faster, Better
In the past, you would have needed to invest in some serious servers and work some sort of event-polling magic if you wanted your chat to have a chance of feeling nice and snappy. Now, we live in the good times. There are options like websockets and webRTC to choose from, but we opted for a service we’ve used on other projects: Google Firebase.
Firebase is a service for creating and syncing a real-time database across clients. One user makes a change and everyone else sees it. For our app, a user can immediately see when another user has added a message. All our data is organized in a relatively flat structure—purposefully duplicating the data we think we’ll need to make for simpler data queries. Simpler means faster, and faster means a better user experience.
But what really sells it for us is just how easy it is to get started. The fantastic features and vibrant development community surrounding Firebase make getting your product launched that much more efficient – in fact some large companies have also taken note and are using it. If you’ve ever wondered what song was playing and decided to fire up Shazam, you’ve used this tech too.
A World of Integrations
The scale and community investment that comes from a Google service like Firebase means that not only do you benefit from the core features of the service, you can also easily connect and integrate with other tools. This lets us tackle complex problems at lightning speed.
We needed to be able to let users know when they have unread messages. For this, we used the Amazon Elastic Beanstalk service to deploy a Node.js server. And wouldn’t you know it, Node.js has a Firebase adapter. When it is connected to our database, it listens for changes. When it notices a new message, it stamps it with the time and marks it as unread.
Not only did this help us quickly to let users know about unread messages, but the Elastic Beanstalk service also helps us mitigate any problems we might accidentally create at our end. The “eb” command line tool makes updating code a breeze by stamping each update as a release. That way, if someone accidentally pushes buggy code to the live site, we tap a button and things revert back to normal.
This reversion capability reduces our risk and lets us frequently update and refine the products that are being powered by these tools and services. With ongoing user feedback and analytics to base our decisions on, a release isn’t a big deal. We can just do it.
Cut the Costs
New technologies aren’t just making things faster, easier, and less risky, they’re also making them cheaper.
The chat product we built uses Lambda functions from AWS to schedule emails. Lambda lets us create a schedule that emails our users with any unread messages in their conversations. Why does this matter? It’s because this takes advantage of “on-demand computing.” Instead of paying to run a server 24/7/365, we only pay every few hours when our function runs. It’s the sharing economy of computing, and it can drastically reduce the costs required to run a modern service. In a lot of cases, this could be by over 80%.
So what has the development taught us? We’ve seen that technology solutions like Firebase, Elastic Beanstalk, and Lambda are making the development teams building products happier, but the benefits extend across product teams.
When launches happen quicker, strategy and design teams can analyze how users interact with the product that much sooner and make improvements even faster.
It also means that funding and budgets are freed up to let developers test and refine code. Designers can conduct user tests, and strategists can validate product directions and roadmaps.
Above all, it means that it’s now that much easier to determine exactly where our product is, and what new heights we’ll be able to reach next.