Evernote is more than an app or a service; it’s also an outstanding team of dedicated individuals, and we’d like to share their stories with you. Ammar Khaku is a Senior Software Engineer on Evernote’s service backend team. He has been with the company since 2012.
Tell us about your background.
I did my undergrad at Tufts University in the Boston area. My primary focus was actually in mechanical engineering, although I also majored in computer science. I didn’t really do any programming until I took an intro to CS class my sophomore year. Three years later, I started at Evernote right out of school. Most of my experience is on the web side of things, pretty even across backend work and front-end work.
While working an internship in college, I came across a comment in the code that was something like “…a full description of this algorithm is in <someone>’s Evernote”. That was the first time I had heard about the product, and so I tried it out and fell in love with it. When applying to companies I looked mostly at places I had heard of and whose products I had used. Evernote stood out as a company that makes a fantastic product that people are passionate about, so when it came time to choose a place to work, Evernote was a clear winner.
What is the biggest technical challenge at Evernote right now?
I am one of the many engineers who work on our web stack, the “Evernote Web Service” — the backbone of our product and infrastructure. While we’ve done plenty of refactoring and rewriting, the core architecture of our service and even our data model haven’t changed much in the past 8 years. However, at the scale we’re at now, the direction we want to take the product and the speed at which we want to take it there, we’re hitting all sorts of walls that involve a lot of thinking and work to fix for the long term. This includes scaling limits like how many users we can support at a time, infrastructure limits on the types of use cases we want to enable, and even process limits such as maintaining code quality with entire teams of developers working in tandem.
We’re at a phase now where we need to rethink our infrastructure, mature our engineering processes, and improve our tooling to allow us to focus on delivering value for our users. We have big plans on the product front, and so we somehow need to retool on the fly and make our service more resilient, while enhancing our product’s capabilities and driving the growth of our business. And that’s not all: since we develop native clients in-house, we need to develop those while maintaining support on the service for older clients — our users would be pretty upset if an older version of the Windows client suddenly stopped working. There is a lot of work to be done across our native clients, service, and the infrastructure, and while we’ve made good progress so far, we’re nowhere near where we aspire to be.
How much freedom and autonomy is there in engineering?
One of my favorite things about working here is the freedom we get to take on projects we find interesting, irrespective of what the domain is. Some companies break up their engineering organizations and domains such that each group is responsible for one section of code, and to monkey with other parts of the codebase they have to go through a whole bunch of protocols and negotiate with other teams. At Evernote, you’re free to spend time refactoring or adding features to any part of the codebase — all you have to do is submit a pull request and have one of the people familiar with that code take a look. If you’re curious about how part of our stack works, stroll over to anyone familiar with it and ask them if they have time for a quick overview. Evernote encourages the sharing of knowledge across teams; the higher our “bus factor” is, the better.
For the times where you want to work on something that doesn’t even remotely fall into our overall company goals, we hold an annual “hack week” where we pause product development and work on projects we find interesting. A lot of hack week projects even end up in our product.
What is the most satisfying part of your job?
Given how large our user base is, one of the most satisfying feelings is releasing something into the wild and seeing people use what we built. It’s scary watching metrics as people use something you worked on and you built, but also exhilarating to follow along and watch usage trends. The work we do has a direct impact on millions of users, whether it’s page load times, first launch experiences, or smarter searching. For instance, I spent some time on the web client team and we rewrote the majority of our app, giving it a new look and feel as well as a whole new plumbing system. A bunch of us were sitting and watching the number of users opting in to our beta grow at an increasing rate, and we were also monitoring the customer response on our forums. My favorite memory of this was a forum post talking about how the new web client felt faster and more responsive; we spent a while tweaking animations and deferring loading of data and code in an effort to make the client feel faster, and it was an awesome validation of our efforts to see feedback like that.
What is one piece of advice you would give to an engineer who is interested in joining Evernote?
A lot of what we’re looking for is the ability to think through a problem and work your way in the direction of a solution. We don’t expect everyone to come up with a perfect solution, we’re usually looking more for the problem-solving process. Instead of jumping straight to an implementation, clarify the problem, gather requirements, come up with a high-level design and then start the implementation.
Another important factor is the ability to work with others. We work pretty collaboratively, with other engineers and with product, design, QA, and analytics, so one of the things important to us is whether or not you can work well in a team. We’re looking for people who are communicative, and can put themselves in another person’s shoes to figure what they really mean, since everyone has their own perspective. We’re also looking for people who can adapt to changing requirements, since that is a reality with a consumer-focused product.
What is a fun fact about you?
I’m sort-of, kind-of, maybe slightly addicted to hockey. I started playing (ice, of course) hockey a little over three years ago and it’s grown to a point where I spend more time skating than anything except work. I’ve done some borderline crazy things for hockey — I flew back from an LA visit early once, had a friend pick me up at SFO with my hockey gear, and take me straight to a game. I drove from a hockey camp (for adults, yes those exist) in Roseville to play a game with my team in Oakland at 11pm, and got back to Roseville at 2am, got some sleep, then back on the ice for an 8am session. I’m not very good, but it’s an awesome sport, and you can’t match the camaraderie. If you skate in the Silver league in Oakland we’ve probably met on the ice.
We’re looking for more people to join the “notable herd” at Evernote! Learn more and see all our current openings at evernote.com/careers