TL;DR: Exactly 12 months ago, I accepted Obvious’ offer letter, not knowing what was in store for me as an engineer. This piece is a deep dive into my experience, and I’m hoping that it will help other budding engineers find their way too.
Inspired by the quote above, I always wanted to ensure I surround myself with amazing people I can learn from. I wanted to be held accountable for good work, while also getting an opportunity to understand how things operate outside my domain. This meant that I had two exciting options:
To join a young startup and build a product almost from scratch
Go to a mid-sized startup or an organisation and work with experienced developers on bettering great products.
As a 3rd year Computer Science undergrad student NOT studying in a Tier 1 college (aka IITs), I realised that the best way for me to chase my passion would be through learning how to code, and gaining exposure through full-time internships.
In my 6th semester at college, I joined a startup with a consumer-facing product. Working on something that I used on a daily basis and showing my friends features that I’d coded or worked on as an undergrad made me feel proud and elated. While this was a very fulfilling experience, I realised along the way that I was looking for more:
I wanted to grasp how to build things scalably, as opposed to rushing to deliver features in quantity
I wanted to be an active member of the larger software community and participate in external events to broaden my line of thought
I wanted to understand what drove people to become who they are, and help out my fellow learners in whatever capacity I could.
Applying for the Internship
I met a few fellow engineers from Obvious when I was in Bengaluru during my first internship, and was inspired by the passion and excitement they had for their craft. I started resonating with their energy and purpose, and applied for an internship to experience the Obvious Life first hand. Surprisingly, I was their first Android intern ever. (Who would’ve thought!)Most organisations I’ve ever applied to have had standard coding tests and interviews as part of their application processes. But here, instead of being quizzed on data structures, the conversations were focused around my understanding of the domain, what I was looking for, and how my 2 months internships could be tailored to give me exactly what I wanted.
Obvious gets its first Android Intern
After a 2 week onboarding process, I spent the rest of my 6 weeks practically applying that onboarding knowledge to build small production level features in the Simple app.
The sole focus was to help me build the foundations that make a good engineer and gather as much as I could about the right way of engineering processes, rather than working single-sightedly on quick feature delivery. I’d gained a deeper understanding in two months than I’d thought possible, and knew that this was the place I wanted to see myself in. While I was offered a full-time role, some of the core learnings from my internship that have helped me grow as an engineer are:
Complex features are just a collection of small, simple tasks linked to each other.
Multiple small pull requests are better than one HUGE pull request which saves us from merge hell and increases team productivity - Trunk Based Development.
Loosely coupled features make it easier to add feature flags and test the codebase.
It’s important to maintain uniformity and a clean architecture in the codebase to enable collaboration and easy understanding.
Small considerations like commit messages and variable names go a long way
Documenting code is a part of writing good code.
Prioritize reviewing PRs over writing code. You can read more about the Obvious Engineering First Principles here
Version Control is the bread and butter for developers and understanding exactly how it works internally made life a lot easier for me.
There were a few more things that absolutely stood out for me: First, the performance evaluation process which evaluates you as a multi-faceted, T-shaped individual using a Growth Framework. This means that the framework does not only cover the technical aspects, but also the humane ones that make you a better teammate and a leader. Secondly, everyone is extremely passionate about whatever they are doing - be it Engineering, Design, Communications or People Operations. The leadership at Obvious is inspiring, of course, but junior members of the team are equally talented and obviously special.
Fully Onboard Obvious
I vividly remember what my mentor said during the internship: “I can always ask you to build a feature and I’m sure you will be able to figure that out and do it. But, that’s not what’s going to make you a great engineer in the longer run. Learning how to build things the right way is.”
During my first few weeks as a full-time employee, I went through the normal ebbs and flows. I got overwhelmed with new information, paid unnerving attention to every tiny imperfection in my code and felt like I wasn’t closing tasks fast enough. But what also felt different this time was the supportive ecosystem I had, coaxing me to take one small step at a time.
9 months down the line, I’ve confidently built cross-platform apps using Flutter, developed backend APIs, and contributed to complex codebases on Kotlin. I make production releases, review PRs and work on building complex features. I’m on the journey to become a full-fledged software engineer who finds the best solution irrespective of the technology used, and not just an Android developer.
If I look back at the breadth of things I’ve been able to work on, I feel a sense of pride. I am a better developer now than I was before. There is still a lot to learn though and an endless journey ahead, but I feel privileged that I have the team at Obvious to help me while I’m at it.
To view Janhavi's work on Github, click here.