Pointer Profile: Wes Chow, CTO at Chartbeat
Signup at Pointer.io for our weekly newsletter
What programming languages does your team use? Why did you choose them?
The vast majority of our code is in Python. It’s a really easy language to work with for web development, internal services, and generally anything that is database-bound. We have an awesome data science team, and basically all of their work is done with Python libraries (NumPy, scikit-learn, etc). It’s super useful to have the entire company generally on one language stack.
That said, we do diverge from Python for very specific use cases. Our in-memory realtime analytics processing engine, the thing that is the “brain” of Chartbeat, is a C++ program that pre-calculates the most common queries we get, and then exposes an arbitrary query engine based on LuaJIT. Lua is a small language similar to Javascript that is extremely fast and designed to be embedded in C programs.
For our Kafka consumers, which process in aggregate over 300,000 messages per second, we decided to pick a JVM language for performance and support reasons. The team seemed to gravitate towards Clojure, though we initially tested with Java and Scala.
And of course we use Javascript on the front end.
What’s an important lesson you’ve learnt managing a tech team?
The advice I give engineers who have just moved into a management role is that they have to forget doing all the things that got them the job in the first place. It’s really difficult to let go and delegate work. You want to scale the organization not by trying to cram more stuff into your day, but by providing an environment that engineers can learn and improve. Learning and improving means they have to do things themselves, including making their own mistakes.
What’s the most exciting tech you’re seeing and why?
Kafka is perhaps the most architecturally transformative tech that we’ve adopted recently. Mesos would be a close tie, but we haven’t completely deployed it yet.
But actually I’ll plug our own project here: WADE (https://github.com/chartbeat-labs/wade). It’s a framework for a distributed database, in the same way that Django is a framework for building a web app. You write a bunch of business logic, ie queries that are specific to exactly your use case, and deploy the entire database in the same way that you write Django views and deploy the app. It’s very much alpha quality software, but I’m hoping we’ll see significant use within Chartbeat. Preliminary performance numbers are promising, significantly beating our equivalent Riak and Mongo clusters.
What is the external tech service or tool that you use that has made the biggest difference to your team or product?
I’m a huge Slack luddite and regularly poke fun at it, but I have to concede that its adoption has significantly changed the way we work. We were previously on HipChat. Back then we had a few integrations, but nothing compared to the explosion that happened after we switched to Slack. The energy behind the move, whether technically warranted or not, has definitely evolved the way we communicate. We’re without a doubt still learning how to effectively use Slack, but I don’t see how we’d ever be able to go back.
What do you look for when hiring an engineer?
We look for the best, just like everyone else!
Joking aside, the reality is that hiring is like any sort of decision making, where you have to balance what you need to do against what resources are available. We absolutely look for high general intelligence, directly test for code skill, and ability to reason well. I hate when companies say they look for good culture fit, because there’s so much evidence that that’s a terrible thing to do. We make sure people aren’t assholes. Then beyond that we look for a diversity in background, because a diverse team makes more robust decisions.