“Editor’s Note: We are delighted to have Randy Kern, the Chief Technology Officer of Marqeta (NASDAQ:MQ) join us for a Q&A. Marqeta’s modern card issuing software platform empowers their Customers—which include businesses like Affirm, DoorDash, Instacart, Klarna, and Square—to create customized payment cards that provide innovative payment experiences for their customers and end users. At Marqeta, Randy is responsible for scaling the global engineering team and driving technological advancements across the company.
Before Marqeta, Kern spent seven years at Salesforce, where he held the Chief Customer Technology Officer and Executive Vice President of Infrastructure Engineering roles. While at Salesforce he was responsible for building out a unified tech infrastructure to support the company’s industry-leading enterprise cloud products. Prior to joining Salesforce, he spent several years at Microsoft, most recently as Partner Director of Development. At Microsoft, he led development for its Azure Compute team and in his time at the company had a focus on highly technical engineering projects, working on many of Microsoft’s most popular products, including Bing.”
[MV] We are excited to have you share your perspectives with us, Randy. As a starting point, are there common misconceptions about software development that you often hear from friends or family who are outside of the tech ecosystem?
[RK] Like many industries, I see deep complexity that is often successfully abstracted away from those outside the field. Medicine, automotive, manufacturing - nearly anything we can think of has significant complexity that most of us are unaware of. Even something we may think we understand, such as supply chain purchasing (how different can it be from what we do as a consumer?) turns out to be an incredibly technical and complex field.
For software in particular, I think folks generally don’t have an understanding of what is an easy problem/change/app, what is hard or would take a significant investment, and what is still research. I often talk with my teams about a particular project being more “R(esearch) than D(evelopment)” or the other way around. It helps level set expectations about the kind of work needed. In the tech industry today, despite massive excitement in things like GPT-4 and the long standing scope of academic and industry research, the majority of work lies much more in the development area than true research.
[MV] What's the biggest difference in building an application for millions of users versus thousands of users?
[RK] Scale makes the uncommon frequent. This can present in technical ways, with edge cases and other situations that you may be able to ignore or work around manually with a small footprint that balloons into a maintenance nightmare at greater scale. It also exposes customer concerns in a way that may not arise with a smaller audience - once again, as that scale rises an organization will see many more kinds of customers, different segments, needs, and priorities, and those can require very thoughtful and attentive work to ensure successful, happy customers.
[MV] What's the most important technological development related to building apps at scale that you've seen in the last 5 years? (i.e. open source, coding languages, cloud architecture, data, etc)
[RK] So hard to pick a single innovation! Easy access to infrastructure with low fixed costs, trunk based development/git, high quality engineering tools (CI/CD, code analysis, vulnerability detection), generative AI, app marketplaces - all of these (and more) has drastically improved access to world class tools for the average developer (outside of Google, Microsoft, etc.). The experience of writing quality code today is fundamentally better than it was 30 years ago when I started (and it is amazingly better than it was even 5 years ago!)
[MV] Can you talk about the biggest differences in building an app today versus 10-15 years ago?
[RK] I highlighted some of the tooling changes above, but to me the advent of app marketplaces as an evolution of both app and web development has changed the business context of app development drastically. Channel was a significant challenge in the 90s, the web eased this significantly, and app marketplaces have brought similar benefits to mobile/desktop software.
[MV] Can you walk me through your approach to designing and implementing APIs? How do you ensure they are scalable and maintainable over time?
[RK] The number one most important thing for APIs is to think of them as a demarcation line between separate systems, and allow both systems to evolve and innovate separately. Hand in hand with this is the fact that once you release an API, you should assume you can’t ever change it (breaking change) again!
So think about them carefully, and use standard design practices such as keeping APIs simple, single responsibility, etc.
As for scalability and maintainability, measurement and telemetry are the foundation that allows one to understand when problems arise, and adjust appropriately. I am a big fan of solving the problem you understand / have today, vs. solving for the future, with one caveat - while being very focused on today, have in mind where you think you will go in the future. Not to the point of building an infinitely extensible or scalable solution, but if future success is an API running thousands of times per second, implement it with async IO from the beginning, even if it isn’t needed for the 10s of requests per second you may have at launch. These are small tradeoffs in the short term that will save you a lot in the future.
[MV] Machine learning is the buzziest thing in tech right now. How do you think ML changes software development and what does it mean for new applications / use cases?
[RK] It is very cool what folks are doing today in terms of ML-based tooling for software engineering, and I think there are huge opportunities for ML to improve productivity and quality. Finding ways to leverage these tools safely and securely while maximizing the benefit is going to be a key evolution in our entire industry.
ML has also opened up entire new types of solutions and systems that either were not very good in the past, or prohibitively expensive. Image classification, web search, adding predictive analytics to many business processes etc. has all drastically changed the expectations we have for “good” software, and I think this will continue and in fact accelerate.
[MV] Thank you, Randy!
Comments