This past Spring, Dhruva Pendharkar received his Master’s Degree in Computer Science with a focus on Intelligent Systems from the UT Dallas Computer Science Program. He spent the last summer in San Francisco interning with Uber Technologies as a software developer. Dhruva successfully completed his internship at Uber with flying colors and was also received a returning offer of a full-time job after graduation from Uber with a promotion. Before coming to UT Dallas, Dhruva spent three years in India working in various teams at Microsoft. While working at Microsoft, he received multiple star awards from his team commending his contribution and achievement at the company. Dhruva joined UT Dallas in the Fall of 2016 with an interest in learning about the field of artificial intelligence with a special interest in automated reasoning. As part of his masters’ thesis, he has worked in the Applied Logic, Programming Languages, and the Systems (ALPS) Lab with Dr. Gopal Gupta, UT Dallas CS Professor and CS Department Head. In his spare time, he enjoys playing the keyboard and has obtained certifications from the London School of Music for his musical talents. Due to all of his hard work and achievements, while studying for his masters, he was awarded the Doctor Family Prize at the CS Graduation luncheon earlier this past May. Dhruva will begin working for Uber this summer in Palo Alto, California.
We asked Dhruva to write a short blog entry about his internship with Uber as a way for students to get an inside look at a student’s personal experience interning for a large tech corporation and in turn become interesting in applying for internships.
As part of my summer internship, I was part of the Driver Growth Organization at Uber Technologies. For three months, I was working from The Uber Headquarters located on Market Street in San Francisco. As the name suggests, the Driver Growth team is mainly responsible for bringing more and more drivers onto the Uber platform. This organization has multiple sub-teams under it, which support its goal. I worked as a software engineering intern in the Viral Channels/Referrals Team. The Viral Channels Team is a product team mainly engaged in coming up with and enabling various channels through which Uber can perform driver on boarding. Over the summer, I was working on two different projects, the Signups Incentives Platform, and its Visualization Scenarios. Apart from these big projects, I was also helping the team by finding and fixing bugs in the existing referrals service, creating monitoring graphs and debugging service outages if any occurred.
The Signups Incentives Platform or SIP is a new platform that the team was planning on building in order to automate processing and payments of the various campaigns that the Viral Channels team is responsible for.
Campaigns enabled by the Viral Channels team include RRD (Rider Refer Driver Campaign), R2D (Rider to Driver Campaign), Guaranteed Signups and so on. For each of these campaigns, the configuration for the payments and the signup flows differ significantly. To handle the various campaigns and the scale of users on the campaigns it was evident that a platform like the Signups Incentives Platform is necessary so it that would help automate all the flows coming into the system. Before the SIP platform, all of these flows were verified, and some payouts were even done manually on a weekly basis. Thus, the objective of building SIP was to build a platform that creates state machines, durably persists the user state in the state machine and logs the user state as the user progresses through the various channels offered by the Viral Channels team. Such a platform once built requires an effective way to be perceived by the engineers, dev ops and other sister teams. Hence, it was essential to build a visualization story around the platform so that it could be efficiently interpreted and acted upon. This was the other project that I undertook during my internship.
The Referrals Team includes a lot of very bright and vibrant people. Every day at Uber was full of fun and challenges. Although I was an intern, I was involved in every meeting and decision about the product, and my opinions were valued. I was part of many interesting lunch discussions and team bonding events when I was at Uber. My team celebrates the ‘Palo Alto Day’ once every month when all the employees in my department travel down to the Palo Alto office from SF and spend the day there. There are also many fun events that ‘Uber University’ Team organizes for interns. During my stay in SF, Uber organized for the interns to watch a San Francisco Giants game at the AT&T Park Stadium. This was the first baseball game that I watched live in a stadium. I also took part in ‘Giving Day’ event with Uber, where Uber interns participated in volunteering events in the nearby community.
My summer internship at Uber was very enriching and adds a lot to my experience. One of my motives for a summer internship was enhancing my understanding about building scalable, multithreaded systems. I got to learn a lot about building reusable frameworks from my SIP experience. Working with multithreaded environments is always a challenge when debugging an issue. It was helpful in understanding the tricks and the traps while dealing with such systems. This would help me build more complex systems in the future. GO is a very new and upcoming language that is being used more and more for building multithreaded solutions in the industry. GO is inspired from a variety of languages and programming paradigms and gets the best of each one of the languages. It was fun learning a new language and applying it on the fly. Working with GO also gave me insights into programming language design and new patterns in programming languages. Schemaless Databases are a new and upcoming type of database systems that have their own advantages as compared to the traditional relational databases. Working on Ubers Schemaless database that is a wrapper on top of MySQL introduced me to a new form of database system. Meeting project deadlines and time management is one of the important aspects that I learned over the summer. This would help me in class for meeting my assignment and project deadlines. All the above learnings would help me a lot in my upcoming semesters as well as in the future.
My Advanced Design and Analysis of Algorithms class at the University of Texas at Dallas was very helpful while devising algorithms and writing code for building the visualization scenarios. It also helped in analyzing the complexity of various different approaches in solving the same problem and choosing the best among them. Apart from that the collision detection and locking mechanisms that I learned about in my Database Design class proved useful in improving the performance of a multi-server system by detecting race conditions and collisions in the algorithms. Building high-performance scalable systems is the need of today. With the increasing amount of data and processing power, this internship really helped me improve upon my understanding of load balancers, traffic redirection mechanisms, and durable communication systems.
ABOUT THE UT DALLAS COMPUTER SCIENCE DEPARTMENT
The UT Dallas Computer Science program is one of the largest Computer Science departments in the United States with over 2,400 bachelors-degree students, more than 1,000 master’s students, 150 Ph.D. students, 53 tenure-track faculty members and 38 full-time senior lecturers, as of Fall 2017. With The University of Texas at Dallas’ unique history of starting as a graduate institution first, the CS Department is built on a legacy of valuing innovative research and providing advanced training for software engineers and computer scientists.