The idea of working in a high energy startup environment has always intrigued me. It is fascinating to see people fuelling all of their vigors towards building an idea against all the odds to create value. The unparalleled energetic team spirit, the occasional adrenaline rush, the excitement of making it, and the anxiety of failure — you name the emotion, working for a startup has it all covered. My love for startups led me to the decision of interning with Cityflo, and I was all set to start my semester-long internship in January as a part of the academic curriculum towards my undergraduate degree. To be honest, I didn’t have much idea about Cityflo as I didn’t go through a direct interview; instead, the process of allocation was primarily handled by the college. The little information I had was from college, about the technical projects I’ll be working on and some general information from what was available on the internet. Still, nonetheless, my expectations were super high and spoiler alert! The whole experience surpassed it. I joined the engineering team as an Android Engineering Intern.
The exciting time was about to begin. I arrived with the gleamy eyes to the city that never sleeps, Mumbai, found myself a place to settle in (which to my relief wasn’t that arduous considering the stories I’ve heard from people) and was ready to start the new journey. Finally, the first day of the internship arrived, and I was filled with exhilaration. The very first person I saw and met as I entered the office was Jerin, the CEO (which I came to know later that day), which reflects the much talked about “accessibility” in startup culture. My first week at Cityflo was all about getting to know the company and its workings. I had meetings scheduled up with almost everyone from the company to understand the functioning of every team. The idea of receiving an out and out onboarding and not just the technical one was overwhelming. I had talks with the founders who enlightened me on how they started Cityflo, what the business is all about, what their vision for the company is, where they are leading to and where they want to be. I got to know how other teams like operations, marketing, growth, customer support (I even got to sit along with the team and listen to calls), etc. operate. It’s essential and motivating at the same time to know how actions of different units are synchronized to give consistent results. I also got a chance to talk directly to customers later during ORAM (One Ride A Month). ORAM is a program in which we take a ride with the customers to get to know how they feel about their experience with Cityflo — their contentment as well as pain points. Cool, isn’t it?
After the onboarding got over, I was hot to trot to dive right into the code and ship features to production. The very thought that the work I’ll be doing will be released to tens of thousands of customers who were using the app on a daily basis was for sure daunting but, at the same time, extremely thrilling. There was a lot to absorb in the initial days, which came with the good part — a lot to learn. I started with the baby steps, contributing to bug fixes and small changes that brought me today, where I’m developing and releasing full-fledged features all by myself. The team has always been accommodating, giving me pointers whenever I got stuck. I even got a chance to take a break from Android Development and contribute to DevOps, which I once told Sudhanshu, Engineering Manager, and my mentor during the internship that I was interested in. One thing I especially like about working at Cityflo is that the culture and environment are very participative rather than being directive. At no point, I felt that I was doing something which I didn’t feel like. On the off chance, when I felt something could be done better, people were more than willing to listen and discuss rather than coerce. This is one of the things which separates toxic work culture from a thriving one, and I’m glad to be a part of one. I even had occasional talks with Ankit, the CTO, and Sudhanshu regarding how the culture could be improved. You know you are in the right place when these things are given equal importance to work.
Quick peek into a few stuff I worked on
The first significant feature I worked on was revamping the location search functionality. Location search is a core function that is being used in six different places throughout the app. The crucial pain point addressed was the ease of use. Earlier, even customers traveling on the same route every day had to search for the pickup & drop-off location by typing out the location name. Although we used to pre-fill the pickup and drop-off with the last searched locations but imagine someone traveling on say 2–3 different routes. Not a very impressive UX, right?
|Location Search (Old)||Location Search (New)|
With the revamped design, we introduced various new quick-select options like using current location, home/office address, and even recent searches. With these new options, nowadays, users don’t have to search for location; instead, they can use one of these handy quick-select options. Additionally, a full-screen search was converted to a bottom sheet which preserves the visual context and is snappy at the same time.
The last thing any new Cityfloer would want while reaching for office is missing their Cityflo either because they weren’t able to find the stop location or were standing on the opposite side. That would be a terrible first experience for anyone. To prevent any room for doubt, stop discovery comes to rescue! The exact details of pickup & drop-off stop location along with stop pictures are all required for a streamlined boarding experience, and the stop discovery feature provides precisely that. Wanna see the route taken by the bus? Hit the view route button!
|Stop Discovery||View Routes|
The first time you do something, you just do it manually.
The second time you do something similar, you wince at the repetition, but you do it anyway.
The third time you do something similar, you automate. AutomationIsOurFriend.
Starting writing code for a new feature requires writing boilerplate, which, let’s be honest, isn’t the most fun job to do. Going by the wise heuristic above on when to automate, Scaffold Voodoo, a plugin for generating boilerplate code, was born. The monotonous work which used to take 15–20mins (And potentially a few hours of debugging if down on luck and did something stupid [true story]) is now just a matter of seconds.
I initially decided to cover only a few of the stuff I did, but I can’t stop showing off! This one is gonna be the last, I swear. Remember, I told you about my contribution to DevOps? I worked on Staging Auto Deployments, which, on an average, will amount to saving roughly 1 hour per week for every backend engineer. There’s a separate post regarding the same by me in which I outlined the problem and solution in great detail, which you can find here.
I have been enjoying every workweek equally, just like weekends. We had the company’s first offsite not long after I joined (I was lucky to join at the right time :p), and it was a memorable one. We played, danced, partied and whatnot!
Even in these unprecedented times, though we’re working remotely, the fun hasn’t stopped. We had terrific remote events like Quizzes, Pictionary & Poker night to rejoice the close bond we share. I have learned immense things here which are not restricted to just tech. I learned to work in a collaborative environment, got a chance to view the interview process up close, got to know a lot about startups, and above all, got an opportunity to interact with amazingly intellectual minds and made some great friends. If you’d ask me to sum up my experience, here you go —
The best part about working here? I have never felt like "just an intern"!