My internship experience at Kayako
December 04, 2016
This Summer, I had the opportunity to intern at Kayako. They had found me through a trending post on Hackernews which featured one of my projects. That day, I was ecstatic(and worried 😱) to be the most trending developer worldwide on Github. Needless to say, I was elated on being offered an internship 😇. Working on production software and adding value to it is a whole different ball game than making side projects over a weekend; I knew I’d be in for a great learning experience.
Kayako is a customer service platform that helps businesses with their customer service. It competes with similar SaaS offerings like Zendesk and Freshdesk. Serving each customer with a delightful experience is ingrained into each Kayaker. The Effortless Experience was one of the books I was given on my first day even though I was going to work with the engineering team.
Kayako operates from offices in London, Gurgaon, and Jalandhar. I was based in their Gurgaon office where I worked for 2 months. On my first day, I received some swag, a Macbook pro, thunderbolt monitor, and books ❤️. An onboarding Trello board was set up filled with activities to get set up quickly. Seriously though, that Trello board with detailed to-do lists helped me ease into the organization without getting flustered (shoutout to Ruhi Mahajan).
I soon came to know that I had joined in exciting times, just a month before the launch of all-new Kayako. Everyone was working at full steam as the launch date came closer. We had daily engineering meetings in the evenings with the CEO, where we’d all discuss the progress, blockers, and catch up. It was interesting to see the kind of problems faced at this scale and how those more experienced than me would approach it.
I spent my initial days getting familiar with our in-house framework and making a simple app.
Then I was given my first task that involved Kayako’s Developer portal. It contains Kayako’s API documentation for developing 3rd party apps and integrations. Jekyll is a static site generator used to scaffold this website. My first task was to template API responses across the portal. With the way it was implemented, a large number of files had to be updated for a change in the response body of say, a particular resource; therefore even a small change would consume an unreasonable amount of developer time in updating the portal. For this, I figured out the dependency tree between the API resources - Start with the smaller ones and work your way up. The only hurdle was some intricacies in Jekyll templating and slow build times which were annoying. Phew, next!
The second task was to integrate Algolia for implementing search across the portal. To accomplish this I took the following steps:
- Implement generating indexes/search records for our content with Ruby.
- Pushing these indexes to Algolia’s server at build time (CI - step)
- Working on the frontend integration. This involved templating/styling, followed by tuning the search results.
The result turned out pretty good! It’s neat and blazing fast!
Takeaways as a Developer
Code reviews are a must. Initially, it may seem like a hurdle or something that slows you down, but the tradeoffs are worth it. You will catch mistakes before shipping to production and question decisions that will matter further down the line.
Continuous integration is awesome. Having a well-defined pipe of linting, tests, and deploy phases gives confidence when making changes, and saves a ton of time!
Communication is key. Always discuss your approach and trade-offs with the team. As an intern, sometimes it is too tempting to ask for help just because it’s there; regardless, always try to think of a solution before seeking assistance. My mentor struck the sweet balance between guidance and challenges.
All said it was a pleasure to work alongside the best people in their domains, be it engineering, design, or biz-ops. It left me with a mindset to always strive to improve my skills and raise the bar every day.