unexpected internship amidst COVID that changed my life
I had just finished my two-month internship at Amazon during the summer of 2020. Due to the COVID lockdown that experience was sort of a bummer.
I had applied for Hyderabad, home of the world's largest Amazon office but ended up working out of my 10x10 room without the company laptop, no vpn access, a shitty internet plan that lagged like Flash (The Sloth) and pushed code to a private github repository. Also don't ask me to write a blog on Amazon experience, I feel like there are enough youtube videos about it and my perspective and experience is not so much different than those.
Although working for the richest man in the world gave me some bragging rights. (Elon went down again, right?)
Yeah so back to the story. My college had no plans to open up, later they decided to run lectures on Microsoft Teams. Let's just say I rarely went to classes when I was staying in college, so you know there was no point to waste my compute on a software like Microsoft Teams. Fired up a VM on some free GCP credits that I got from this Google SPS program, wrote a small selenium script in python that checked for active classes in all the channels and joined in to the latest lecture. Voila! Attendance sorted.
Money can buy everything (true for college students)
This opened up an opportunity to make some quick bucks. I reached out to my mentors at my past firm to see if any startup had an internship opening. Luckily I got recommended to the founder of SendX, Varun Jain.
SendX is probably one of best profitable bootstrapped SaaS firm to work at in India. Hah! too many terms that I had no clue about at that point of time.
Varun reached out to me on LinkedIn.
I gladly assumed he was busier than me, shared my digits and was expecting a call in the coming week. He called the same evening. We talked for an hour about my college life, work that I did at Amazon and Crio. I remember him explaining the engineering problems they had solved while developing SendX. And how a company of 8 people, and a tech team of 1.5 people had developed a successful bootstrapped company. Not kidding, the things he said or may be the way he said them, urged an unusual desire in me to leave everything and work for him 24x7. Being a kickass CEO has it's perks I guess.
SendX dominantly works on a Golang backend, and I had never coded a single line of Go. Varun gave me a small project that was supposed to be a filter round to measure my skills and see if I was worth a shot.
The project was to create a full stack app where the user has an option to enter a URL, the app should hit that url and serve the user with the html responded back with. The trick was to add a retry mechanism in cases where the request failed. Some questions needed to be answered like What if your server goes down? How do you make sure you do not miss any requests by the user?
The implementation decisions were left on me, I could choose any programming language for the backend and frontend. I think I had 3-4 days to finish it up.
Obviously I had to name the project GetX. And I had to learn Go to implement the backend if I wanted to impress the guy. I was a bit familiar with React so quickly spun-up the UI.
Here's the UI:
Learning Go, that took a while. Well I googled and googled, and set up a complicated backend using Go's net/http package that had just one API with a much more complicated retry mechanism using Tickers. Had a plan to queue up the requests but couldn't implement that in time.
Oh BTW, don't ever give up at this stage of a recruitment. I felt like it and I am glad I did not.
Finished the project in time, polished the README (folks this is very very important, believe me) and voila! I was in. Got some pointers on the project which are still pending.
Then he mentioned this new product that they were working on: SendPost which I and John (not so Senior Software Engineer <3) will be working on along with Varun. John was hired with me and we were supposed to have the onboarding together.
Do you get tired of sitting in front of a screen?
I never thought I did. I have been sitting in front of a computer since I was 8 years old.
The onboarding session at SendPost was tiring as fuck. For one week straight we had 8 hour zoom sessions everyday with Varun and Agni (Co-Founder at SendPost) where they'd pull out whiteboards and explain the architecture and the reasons why they were developing SendPost. The zero to one of the product directly from the horse's mouth. During some sessions, Varun actually took us through every line of code that he'd written for the past few months to develop SendPost.
I knew I was at the right place, when the founders invest so much in you. But more often than not, it gave me jitters that was I even worth the time they were spending on me.
Thankfully I had some experience with situations like these (feeling like an Imposter), you just need to believe in yourself that if you put in enough of your time and energy, you won't disappoint anyone (not even yourself).
Shipping my first feature at SendPost in 3 weeks
Hey I never said what SendPost did. So, we send emails. We give you an API to send emails. We give you a kickass dashboard to monitor your emails. We give you the control over the IPs via which you send emails. And we give you 100 other features that no other product in the market is giving to you right now.
So first feature, implement the integration layer of the platform by including Glockapps as the first integration.
Quick primer on emails: Any email is send from an SMTP Server i.e. it has to have a Public IP. In order to regulate emails, every IP has a sender score associated with it and there are public blacklists which include IPs that spam a lot, based on which it's inboxing is affected.
On SendPost users can have shared and dedicated IPs via which their emails get sent. We didn't have infra to measure sender scores and capture blacklists, but glockapps does that. So users can integrate Glockapps on SendPost and we would show that data to the user.
Okay if you did not get the last paragraph, google about it later. No biggie.
Varun followed a very cool approach to building stuff, it was an 80:20 rule. 80% of work with 20% of the effort. Because we know the last 20% of polishing work takes a hell lot of effort.
He laid the path for me:
Create a Product Requirements Document (PRD).
Before we write the first line of code, we need to be sure of the following things:
- what are we building
- for whom are we building it
- how is it going to look like
- what are the must-have features in phase 0
- how are our competitors doing it
- what would be the Go-To Market (GTM) strategy
Create a tech design doc
- Include the APIs that you'll be building
- May be include UI mockups
- What will be the data model like?
These two document took about a week for me to write it up and get it reviewed. We used to sit and discuss about improvements and changes that could be made. Later for further features we moved to a quicker time for drafting these docs.
Big firms take weeks to finalize the PRD , we did not have the bandwidth to do it. But being a small team this made it much easier.
Write code that works and scales
Once this was done, since glockapps did not have a sdk but just an API documentation. I moved on to writing the OpenAPI specification for the Glockapps API in order to generate a swagger client and use it with our code base.
Once that was done, writing APIs was a piece of cake as we had already discussed it while creating the tech design doc. Not being a frontend guy, I had to go through a few courses that Varun had bought on vueschool.io. That took a few days.
By the end of my 4th week at SendPost, my code was pushed from the feature branch to mainline. Ah! Cool!
You don't have to be a big team to achieve big things
I then moved on to building more features on SendPost like
- An Incident Management CRM from ground up.
- Designing a lot of graphics for the Send Post landing page.
- Automating JS client generation for Frontend to consume the API.
- Onboarding Checklist for users to get up and running quickly.
- Adding a feature to mock email sends.
- Wrote a python script to populate a demo account with fake data for sales calls and testing purpose.
Then we also followed frameworks like BullsEye and AARRR with the sales team to figure out what to build next and what would create a bigger impact.
Work was awesome!
Why was I loving it? Too many reasons man.
- The work culture.
- Exposure of building a product from 0 to 1.
- Amazing holiday policies.
- Exponential growth.
- Every day, an evening Chai Time with everyone in the company.
- Good enough stipend. etc etc.
Little did I know that this experience would be worth a thousand courses that I could have taken on any platform. Sometimes I think what if the lockdown would not have happened.
- I would be in my college.
- Learning way less than what I did in the past 6-7 months.
- SendPost would never have reached out to me.
- I would not be able to call myself a Serial Software Engineer Intern (:P).
- Wouldn't have made such good friends.
Glad I got the opportunity and I decided to stick to it. Thanks for the amazing farewell guys. See you soon (finally in real life). XOXO