Meet Deepak, our Software Developer. Working on building the world’s biggest Artificial Intelligence + Human Intelligence platform isn’t easy. Deepak is one of our stars, deeply committed to turning data into functional learning models, while ensuring that we are always scalable.
An average person speaks 15,000 words a day, but I am willing to bet that we developers are a less chatty bunch. We prefer to let our code do the talking.
But this time around, let me break the rules and talk about why I love being a programmer at a startup.
I first heard of Playment, a startup mobile crowdsourcing platform that outsources large-scale data operations to workers or “players,” through HackerEarth. I was working for a travel company at the time and was itching for a more challenging role.
In a company with 70 or more developers, I spent a lot of time waiting for work to trickle down to me. And a lot of the work was repetitive, like changing the look and feel of UI. I needed a change. I wanted to work in a setup where there was greater scope to use business logic, algorithms, and less CRUD. I wanted to be hands-on and tinker with the innards of a live application. And I needed mentors who would trust me enough to let me make my own mistakes.
So when an offer from a startup came along, I jumped right on board. And it has been one heck of a ride ever since. At a startup, there really is a new challenge facing you every week and sometimes every day.
Just nine days since I joined Playment, we hit a snag. Our client base was growing and there were more players signing up to use our app. There was a need to rapidly scale our backend resources to keep pace with business.
We thought to redesign the architecture so we could assign more tasks to more players. When Himanshu, our CTO, and I took stock, we found that requests were timing out because our database was not able to handle the increasing number of concurrent reads and writes. As we went through the code, I began to understand the architecture of our codebase in depth.
We concluded that introducing a cache, specifically Redis into our system would be the most viable solution going forward. When it came to implementation, Himanshu suggested we pair program. He would go first to explain what he was doing, and if something was unclear, I’d stop him to ask questions. Then, it would be my turn.
Coding, while he watched, was nerve-racking at first, but I got used to it. He was helpful and patient, fixing my errors, teaching me handy shortcuts, and I learned a lot about writing less-complicated, test-friendly robust code.
One benefit of working for a startup is the hands-on treatment. I would never have gotten the chance to code with the CTO of a larger company.
I was called in to analyze and tweak the production SQL database for performance and tasked to set up a new master-slave configuration so our analysts could run a heavier load of queries.
This meant I had to set up a replica database, which improved the security of the data by allowing all analysts to use the replica for their data requirements rather than the production database itself, making the data both secure and accessible.
I was glad that management was willing to trust me to execute this right off the bat. I would have had to wait for months to get a task even half as business-critical in my previous gig. This is not only because bigger companies have more people to tap for these types of tasks, but also because it takes longer to build credibility there. Startups generally trust your credentials and your skills more easily.
I’d been reading about machine learning and was inspired to use it to change the way we farmed out tasks to the players/workers. If we could decrease the number of options shown to users for each question, it would cut down the turnaround time for each task.
When I proposed the idea to Akshay, one of our co-founders, he was encouraging and connected me to an ML expert outside the company. A few gyaan sessions and lots of experimenting ensued. I used natural language processing and the Random Forests algorithm to calculate the probabilities of various options for a question and to figure out how to eliminate irrelevant options from all the available ones.
After a lot of feature engineering, I was able to come up with a good model to simplify tasks for our users. This had an immediate impact on business. We were able to improve the response time and accuracy of crowdsourced answers for our clients, which resulted in more revenue for the company.
It was a breakthrough that I was excited about because I had been able to think of a business problem from a broader perspective and built a functional, efficient solution in a short time.
Ideating and contributing from start to finish — identifying the problem, brainstorming a solution, executing it, and tracking results — is something rarely seen outside startups.
I got an opportunity to do DevOps while it was never a part of my original job description. Recently, I helped migrate our entire production from Amazon Web Series (AWS) to Google Cloud Platform (GCP) with zero downtime in just two weeks.
We found that GCP was economically more viable compared to AWS and decided to move our entire production over. These types of tasks are normally assigned to senior developers since it may affect existing production databases if not done properly.
It was challenging, but I’m glad I got the opportunity to hone my skills in a different capacity.
A year in
The scope for learning at a startup is immense because you usually work with a group of passionate, talented people who are constantly thinking about making the startup’s product/service better.
Our team of senior developers, for example, have worked for some of the biggest names in the business: Amazon, Flipkart, and Cisco. They are well-versed with processes and have domain expertise when it comes to solving problems at scale. I can’t state how much I’ve learned from them.
I am definitely excited about what the future holds.
Advice for young developers
I would definitely recommend young developers to work for a startup. While corporate does give you a cushy job, startups can give you early exposure to real challenging problems that businesses face. I believe that, particularly in the early stages of your career, you’d want to go for learning over comfort.
Of course, it is totally up to your own preference; different opportunities are lucrative for different types of people. Since I wanted more responsibility, the chance to take on more difficult tasks and a place where learning quickly is valued, working at a startup was the best option.
Having painted a rosy picture of startup life, I must say it doesn’t come without its own difficulties; it is very difficult to manage your personal life while working at a startup. Because you may be just one of three developers — sometimes even the only developer — you have to take the lead because you know no one else can. This can sometimes take its toll.
These downsides are compromises you have to make in order to achieve good results at a startup and reap its benefits. It requires continuous dedication and, sometimes, it becomes really difficult to keep yourself going. But I guess this is the cost we pay for the returns we seek.
As playment continues to rapidly expand its user base, it is lucky to have you providing insights into the thoughtfully built architecture, while providing guidance for future planning as well! Keep up the brilliant work 🙂