Adapt and Evolve: How 3 NYC Companies Keep Their Tech Stacks Fresh

by April Bohnert

September 6, 2019

Tech moves fast. It’s what draws so many of us to this work — and what keeps us coming back for more every day. But as technology evolves, the building blocks that comprise that technology — web frameworks, programming languages, libraries, servers — evolve right along with it, offering an ever-growing array of tools and approaches for developers to tinker with.

So, how do engineers decide what tech to use to tackle their next project? And how do they stay on the cutting edge, evolving their tech stacks as new tools and trends emerge? We asked three NYC companies to give us a peek under the hood to find out.

The microservices trend has picked up a lot of momentum in recent years and helped a number of organizations transform the way they build applications — including tech market intelligence platform CB Insights. Lead Software Engineer Adam Detrick said the switch to a microservices architecture has helped ease the all-too-common growing pains of a rapidly scaling team while building a strong foundation for success.

What does your tech stack look like today? How has it evolved over time?

Our current tech stack is a React front end backed by microservices built in Python and Go. We were previously running a PHP monolith, but we made the move toward microservices to support our rapid growth and the scaling of our engineering team. On the front end, React has helped us standardize development around a common set of conventions across all teams.

Prioritizing consistency helps us spend more time solving business problems and less time solving tooling problems.”

How do you choose what tech to use to complete a project?

Consistency is a major factor in driving technology choices. Ad-hoc solutions may help get an idea to market fast, but we have to consider how those decisions impact the productivity and quality of engineering as a whole. On the back end, we provide templates to create new Python or Go services. On the front end, we're in the process of building out reusable React component libraries. Prioritizing consistency helps us spend more time solving business problems and less time solving tooling problems.

As businesses evolve so too do their technical needs, and it takes a bold, savvy team to know when it’s time to make a switch to a new tech tool. Director of Engineering and Machine Learning Boris Daskalov witnessed first-hand such a transition at document management and automation company HyperScience. He explained why his team retired its Clojure codebase in favor of Python and the affect that’s had on their development process.

What does your tech stack look like today? How has it evolved over time?

When I joined HyperScience in 2015, the whole codebase was in Clojure. This made sense for the stage we were at, as Clojure allowed us to take advantage of the performance of JVM while writing clear and concise code. As we developed more and more custom models, we decided to adopt Python as our default language. This enabled us to use the Python-based data science ecosystem and provided an easy path to bring our machine learning research to production without rewrites or hand-offs. It’s essential that everyone on our projects can share code.

We’re at the cutting edge of a rapidly evolving space, which means a lot of experimentation.”

How do you choose what tech to use to complete a project?

We’re at the cutting edge of a rapidly evolving space, which means a lot of experimentation. Having an easy way to put research into production is a major factor for us since we believe that integrating early is the key to success. Choosing Python as our main language means there are natural choices for other components (e.g. Django and Celery, which we later replaced with an in-house workflow system). All of these decisions have been driven by engineers who feel strongly about the right way to build the foundation of our product to create the most value for our customers.

Developers at online dating platform OkCupid aren’t afraid to break up with the tech tools they no longer love. In fact, according to Senior Android Software Engineer Adam McNeilly, they’re encouraged to play the field and evaluate new tools that can help modernize their tech stack. While it may not be the recipe for a successful long-term relationship, McNeilly said it’s been key to building products that keep the company’s customers swooning.

What does your tech stack look like today? How has it evolved over time?

Every team at OkCupid is actively engaged in modernizing their tech stack, which has changed a lot since being created in 2004. Our mobile teams are writing native apps in Kotlin and Swift, moving away from Java and Objective-C. Our web team has ported desktop and mobile web pages to React, using Redux for state management. And the back-end team is working on a brand new deployment infrastructure using Docker and Kubernetes. We are constantly evaluating the best tools for the job to make sure our tech stack allows us to maintain a great product for our users.

Every engineering team at OkCupid is very collaborative and works together to find a solution based on what we want to accomplish.”

How do you choose what tech to use to complete a project?

Every engineering team at OkCupid is very collaborative and works together to find a solution based on what we want to accomplish. My Android team moved to Kotlin because it allows us to develop and iterate much quicker than Java. The web team chose to adopt React because it’s much easier to maintain as opposed to the in-house solution we had before. And for back-end, their concerns were to automate as much of the deploy process as they could without causing downtime for users, and they agreed that Docker and Kubernetes were the best tools to achieve that goal.