Tools of the trade: 3 NYC tech teams share their stacks

Written by Katie Fustich
Published on Feb. 26, 2019
Brand Studio Logo

Whether you’re a painter, a teacher or an architect, one of the key factors to your success is having the right tools to do the job. Being an engineer is no different: code doesn’t merely spring out of your fingers and transform into a finished product, but rather a well-curated suite of coding languages, frameworks, databases and libraries all contribute to your advancements.

Built In NYC spoke with engineers from three local companies, all innovators in their fields, to learn the tools of the trade that make their products come to life.

 

Clear
image via clear

Clear is building the next-generation of security technology, using biometric keys to bring peace of mind to airports, sporting events and more. For Senior Software Engineering Team Lead Kareem Shabazz, this work is a passion, and an in-depth knowledge of a range of tools is essential for building a product with purpose.

 

What tech tools do you use on a day-to-day basis?

For our Integrated Development Environment, we’re using IntelliJ pretty heavily; it's a beast. The plug-in support makes it also suitable for dealing with YAML, markdown and other files. Team collaboration is huge [at Clear], so we use both Jira and Confluence to help keep us on track. Jira is how we communicate what's actively in progress and how our Sprints are defined; we are agile. Confluence is the main documenting platform that allows us to share (and remember) ideas amongst teams.

For log spelunking we’re using Sumo Logic, but soon moving to Splunk. Decentralized log gathering is super critical in analyzing app logs and metrics across all environments, especially in the world of microservices, to help us decrease our MTTI and MTTR. For microservices, Dropwizard is the tool of choice for all new apps we write. We like the “project shell” it gives us while giving us the freedom to decide how we should fill it in.

We make heavy use of Docker containers for not just deploying our applications, but local development using docker-compose. Using docker-compose has allowed us to spin up a local environment to run most of our system locally. Other tools we use include Bamboo (soon to be Jenkins), Lucidchart, Mesosphere, Stash and VS Code.

There is no set procedure; we're not a bank...”

What is your favorite tool to use and why?

I love working with Kafka. It's a scalable, fault-tolerant, publish-subscribe messaging system that enables us to build distributed services. It delivers in-order, persistent, scalable messaging and has publishers, topics and subscribers. It can also partition topics and enable parallel consumption (provided enough brokers).

All messages written to Kafka are persisted and replicated to peer brokers for fault tolerance, and those messages stay around for a configurable period. So based on that, we use Kafka (almost) everywhere and want to put it more places. We like its ordering guarantees based on a well-thought-out partition key and the scale we can achieve by merely giving appropriate forethought to how much we need to scale in the future.

 

When it comes to introducing a new tool into your tech stack, what does that process look like?

There is no set procedure; we're not a bank, but what I usually do is create a proof of concept to show an actual use case to the team. I did this recently when introducing Groovy and Spock into the test stack.

 

Paxos
image via paxos

Being the first fully-regulated, Blockchain-powered trust may be a big responsibility to bear, but the team at Paxos makes it look easy. Staff Engineer Drake Dowsett shared with Built In NYC the wide array of tools he and his team use to transform ideas into concrete, code-meeting products.

 

What tech tools do you use on a day-to-day basis?

Communication is always the first concern, so I aim to capture just enough in Google Drive to plan out some path forward and invite input from the team before writing a line of code. JetBrains’ GoLand has been working well for both the front and back ends of our Go and React/TypeScript app, though the vim bindings plugin could use some love (I'm looking at you, “dot” key). When it comes to git I keep it simple and stick to the command line and the occasional gitk UI (outside of team PR reviews in GitHub). When it comes to infrastructure, we use Terraform and Vault (both from HashiCorp), which helps us keep our engineering resources focused on features rather than, say, rolling out our own solutions to solved but subtle challenges.

...Read the docs. Mount the engine. Configure a policy. Stand back in awe.”

What is your favorite tool to use and why?

HashiCorp Vault is as close to pure joy as I can imagine a tool being. It does have a small learning curve to get the mentality and patterns, but after that everything seems to be right where you’d expect to find it and you’ll be surprised at your command line and API fluency. And when you think you want a feature that doesn’t exist yet, chances are there’s an “engine” for it already: Read the docs. Mount the engine. Configure a policy. Stand back in awe.

 

When it comes to introducing a new tool into your tech stack, what does that process look like?

For my personal dev stack, a new tool needs to have a pretty clear win for me to take the time to change processes and learn new shortcuts. That’s been the case with GoLand. A recent addition, the value add of the app’s smarts has so far outweighed my frustrations with certain key bindings.

 

Pager
image via pager

Since it was founded in 2014, Pager has pioneered mobile-based, AI-driven healthcare solutions. Senior Software Engineer David Roncancio helps build the tools that connect patients to doctors at the tap of a button. He walked Built In NYC through the tech stack that helps him make meaningful innovations every day.

 

What tech tools do you use on a day-to-day basis?

On a daily basis I use Node.js, RabbitMQ, Kong, PostgreSQL and MongoDB.

 

...within each team, we discuss the costs and benefits of implementation.”

What is your favorite tool to use and why?

My favorite tool is Node.js. It has a vibrant community of developers around the world, and the language is evolving a lot. The tooling is amazing, and while it has some trade-offs with other backend stacks, I live happily with those.

 

When it comes to introducing a new tool into your tech stack, what does that process look like?

We usually open an official request for comments explaining the reasons for adding it. Then, within each team, we discuss the costs and benefits of implementation. If we move forward with the setup, we usually start with a small, low-risk feature. If successful, we begin gradually using the tool for bigger features.