The Pillars of Building Scalable Technology
For today’s employers, technology is truly the backbone of a successful business operation.
When you have millions of questions being asked, or millions of transactions being processed, every minute—as is the case with companies like Google, Facebook, Amazon, eBay, etc.—you need the right architecture and infrastructure in place to handle them.
This is especially pertinent in our operations at Evive, as our business runs on tailored, relevant, and personalized communications. In our world, we refer not to transactions but to lives—because our technology helps millions of individuals reach their goals in life. So our approach to developing and growing technology is not only do it fast, but also get it right and get it right every time. We cannot afford to communicate a wrong message to even a single individual. So in creating our technology stack (otherwise known as a set of components that enables software to function broadly), our mission was to do it correctly and in a timely fashion.
We made our mistakes, and learned a few tricks along the way. Here’s what we learned about building a lasting framework for success.
Begin with the right team
In Year One of Evive, we knew every choice was pivotal to the future of our business, including the first group of people we hired. We strongly believed the foundation we created would set the tone for everything that would follow—and it has.
Any business leader can easily struggle without the right team behind them. Especially when it comes to developing that core technology, employers need the best support structure possible to execute their vision for their product or service. Bringing in people who understand the vision and how to make it real is key.
Our vision was writing testable software. We put emphasis on verifying, validating, and documenting our software via test cases. Those who came aboard embraced that ethos by writing test cases, asking lots of questions, and being unafraid to make mistakes. They were willing to refocus their approach when necessary, and could estimate what would make a project better. This in turn made us focus on the tasks at hand every step of the way—and it resulted in producing quality software.
Carefully choose your technology stack
Once you have a team in place whose expertise you can rely on, and a culture of test-driven development established, you can begin putting your tech stack together. Your company’s mission should be one of the first factors to consider in this decision, as is the case with many big business decisions. What works for one type of company may not have the same effects for another, so it’s important to examine what makes you unique.
Cost will likely be another factor—especially when your business is just starting out—but it’s critical to keep the long-term vision of your business in mind. For instance, a certain resource could seem like a good short-term choice financially, but become a detriment to your business later on. Also keep in mind that it could be more expensive to make significant changes to your infrastructure years down the road, instead of making the big purchases now that you are confident will last.
When we set out to build our technology stack, we emphasized our problem statement: What is the simplest possible way to solve the current problem? Our philosophy is to build with the intention of making sure every piece plays an integral part in the solution; if a piece isn’t absolutely necessary, it shouldn’t be there.
Granted, there are cases like failover and disaster-recovery scenarios that led us to pick certain tools, databases, and frameworks that might have been “overkill” when we wrote our first line of code—but we included the non-functional requirements into the problem statement, thus justifying some of our decisions.
We also picked some of our experienced engineers to form a governance committee, who would play devil’s advocate to challenge and push some of our decisions. Questions they’d focus on include:
- Can we do this in-house without this tool, via software alone? (For example, reading from a file instead of using a database, or reading from local storage instead of attempting an in-memory database.)
- If not, what are the alternative tools? Why A versus B? Are those tools supported actively?
- Assuming A and B are similar, which one is easier for the team we have hired?
- What role does security play in this? (For example, ensuring all the hops are SSL-protected.)
In the end, make sure all the pieces fit well together to accomplish your goals. The various tools, programming languages, and resources need to make sense to you and make sense as a whole.
Ensure you can maintain quality content as you grow
You’ll need to establish a technical process that allows the creation of content to be streamlined and meaningful to many people, but still nuanced and individually relevant. As consumer-product experiences become increasingly more on-demand and personalized, technology needs to adapt in big ways to meet those expectations. One thing to consider is having a boot-camp process for new hires, where you teach them the importance of writing test cases (without test cases, quality is bound to get lost). Place the emphasis on testing business functions, rather than factors like getting 100% code coverage.
Scalability, in our case, was particularly difficult due to the nature of our business. One of the important tenets of our performance was to parallelize each transaction (meaning they’re executed concurrently), but limitations of incoming files, databases, and vendor constraints, made that a challenge. Here is where we ended up building in-house rules engines and data-validation mechanisms. These are very intelligent in knowing when to parallelize, how to identify the deltas, and how to process multiple occurrences in a very smart way. At the end of the day, the point is to find the balance between a framework that’s scalable and one that can still accommodate unique, individual scenarios in relevant ways.
Having the right team with the right mindset, selectively building your technology stack, and remaining consistent with quality content are the ways Evive’s solutions stand apart—and we believe these are the keys to a scalable framework. As you look for avenues to learn and make your software better, we recommend focusing on these important pillars, and to stay humble and grounded in the process. A lasting framework won’t only make your product a success, it will have incredible effects on the business you build—and the team who builds it.