Building the world’s most modern card issuance platform was no small task; but for Shayanth Sinnarajah, Theeraputh Mekathikom and Praveendra Singh - Highnote’s first three engineers - it was the one of the most challenging and rewarding experiences of their careers. Not only did they build the platform’s codebase from scratch, but also they helped shape many of the engineering principles and processes that will guide future development of Highnote solutions.
In this blog, they describe what that engineering process was like, and some of the decisions that went into the development of the Highnote platform.
Theeraputh: First off, our platform is being built on modern technologies that scale, are reliable, and secure. For example, we are leveraging Cloud Spanner for data scalability and allowing us to operate active/active on multi-regions. GraphQL was chosen as our API, which gives flexibility to our customers to query data and operate on our platform. We really built this platform with the customer in mind. Because we were starting from the ground up, we had an opportunity to not only build something that’s customizable but also a platform that hides the complexity from the end-user. That was really important to us, as was embracing transparency. When we designed the ledger, we did it in a way that issuers would be able to see how their money is moving through the system.
Shayanth: When we started the process, we thought: “how can we build something that’s modular and plug-and-play?” We wanted to create a platform that made it easy for any company to get started with card issuance but also complex enough that a customer could really custom-build the solution they need. We wanted customers to be able to grow with us, transitioning from a baseline integration to a more complex integration. Furthermore, we really emphasized speed within that experience. With other platforms, it can take months from initial set up and integration to going live. We wanted to bring forward clear and direct language in our API guidelines and make it super developer friendly.
Praveendra: Speed and scalability were definitely core components of the initial development process. We wanted to focus on performance and minimizing latency, while also streamlining the development process so that we could continuously build and deploy new features into the platform.
Shayanth: We explored a few different architectures with the goal of creating engineering efficiency across the different domains of our system - from transaction processing to recording transactions on the ledger, identity verification and customer onboarding. Ultimately, we decided on a domain-driven design architecture, where domains are split into modules of integration. Within those domains, the patterns of design were consistent, so that an engineer working in identity verification could switch over to transaction processing without having to re-learn a whole set of design principles. This allowed us to really use our engineering resources efficiently, because we’re not having to reteach ourselves how to design across the system.
Praveendra: To add to that, we’re building a database for all of those conventions, patterns and schema so that our codebase is self-explanatory. At the same time, we’ve custom-built our development process to include more testing within each step of the pipeline. Whether it’s local development, CI/CD or deployment, we want anything we’re developing to be bulletproof before it goes out to our customers.
Theeraputh: By developing these principles and patterns early in the development process, they are intrinsically embedded in everything we build, test and deploy. That’s how we’re able to move quickly while maintaining high-quality performance.
Praveendra: The initial challenge was really to come up with a platform design that would support and enable many different functionalities. That’s where the consistency in coding patterns and naming conventions really became important. At the same time, we were acutely aware of the challenge of maintaining the security of the system. All of us come from a fintech background, we knew that maintaining the integrity and security of data within our system was critical. That’s why we prioritized security and were able to receive our PCI compliance certification in record time.
Shayanth: From the beginning, I think it was really important for us to define and stick to our core beliefs with respect to how we built the platform. Especially, as we started to expand the platform’s functionality and added more engineers; it would have been easy for us to just focus on building and deploying fast but that also would’ve exposed greater internal complexity. Instead, we really took the time to think through how to build a more streamlined engineering approach and that strategy has paid off well.
Theeraputh: Yes, for both our teams and our customers. I would say that hiding that back-end complexity was really important and a challenge that I don’t think any of the legacy platforms really prioritized. For us, designing our platform to allow customers to maintain control and flexibility, without compromising on performance, was our biggest challenge and goal.
Shayanth: We really emphasize ownership here. Engineers are part of the entire product lifecycle, from start of development to rollout and also having a voice in what the product will be. I think that’s really unique and gives all of us greater agency over the growth of the company.
Praveendra: We give our engineers more flexibility to try things out, whether it’s learning and contributing to different domains of the platform or just presenting ideas for improving the overall system. We’re open to design changes or integrating new technology as long as it helps us improve efficiency and the experience we provide to our customers. I also think that we really emphasize collaboration here. Teams don’t work in silos, if you want to discuss or challenge an idea, you have the ear of the Product team, the CTO, etc.
Theeraputh: I would add that, especially right now, the output of our engineers has really high visibility and impact. The features and products you are working on really impact the growth and success of the company, as well as our customers.
Theeraputh: I’m looking forward to continuing to expand our customer-base. As more businesses begin leveraging the Highnote platform, it really helps us as engineers understand their pain points and learn what features we can build to help alleviate them.
Praveendra: We’re going to continue improving the performance and efficiency of the platform. It’s really important that as we grow and scale, we maintain the quality of our product and codebase, while also not compromising on security.
Shayanth: We’re continuing to expand our product into new verticals that I think our customers are really going to love. As Praveendra and Theeraputh mentioned, our immediate focus is on building out new functionality to the platform while also finding ways to make it more resilient and easy-to-use.