Moving on!

2022-01-12

After ~5 years, I decided to move on from Salesforce last week. Before mentioning where I'm heading to and what led me to that decision, I wanted to take a moment to write about my time at Salesforce and reflect a bit.

I joined Salesforce in February 2017, fresh out of working at a startup. I remember this time quite hazily - I was burnt out - not just owing to working at the startup, but also working on an on-stage movie production around that time. Quite honestly, I was very anxious about this decision because this was the first time I was joining a large organization and I was more than happy being the big fish in a small pond.

I was originally hired to work on a team to build and maintain a datastore and build an accompanying service to power a new authentication and authorization paradigm for services and cross-team traffic across the company. I was coming fresh out of developing a data storage product and prior to that had extensively worked on an authentication and encryption feature for Riverbed's devices. This definitely felt like a good place for me to utilize my skills and in the process learn more about developing in the cloud and all that jazz.

I was given a mild surprise the day I joined, that the team I was hired to apparently was re-orged under another manager in Austin. This was quite unheard of for me personally since I wasn't really used to the frequent re-orgs that happen in relatively bigger organizations. I should however add that I was fortunate to not be part of any more extensive re-orgs since then. :) Nevertheless, my manager and the org was pretty understanding and provided all the resources for me to not feel disheartened. I also remember my manager mentioning to me that if indeed I wanted to find other roles in the company, he'd be supportive. Although he did have a project come over his way and he offered to hire me as the first engineer on that team.

The only catch was that most of the development would be in Java and there'll be some work required on Salesforce's giant monolith. While I hadn't actually worked on Java in any professional capacity, I was excited to start working. In fact, the team was supposed to be working on the user-facing service that would be building on top of the data layer that I was originally hired for. Salesforce was also in the process of consolidating its workforce into a handful of buildings in SF and hence our floor was quite full and I was without a desk. My manager offered me a desk in a different floor but I chose to stay with other sister teams in my org and hence spent most of my first 6 months sitting on a temp desk between two different aisles. These 6 months were pretty interesting with the commute to the city from South Bay and later, from San Mateo and I also enjoyed the time exploring the city with my then girlfriend (and now wife) who used to live in SF.

Ok, getting back to work :D - it came as a mild surprise that the original team I was hired to was unfortunately going through some personnel shortage and I volunteered to be the liaison between our team and theirs and also picked up tasks here and there to help them make progress. In retrospect, I took up more than I could chew but honestly this opened up my eyes into a lot of the interfacing that goes on between a typical platform team and the infrastructure org that ultimately grant you machines. We also chose to run our cluster across multiple data centers and also leverage kubernetes, which probably was an overkill. We didn't have StatefulSets since the infra team didn't support it but we worked around it by doing some intelligent, yet simple host-pinning. In the team that I was officially a part of, we built a library (which eventually became a service) that other teams leveraged to authn and authz their requests to other services. This role also let me work closely with my PM to work with other teams and run sessions for them to develop features that they needed. This role also helped me file my first patent. However, after about a year of working on the team, I was mostly doing a lot of the work on the datastore team and being someone who naturally gravitates to infrastructure work, I decided to formally transition over to that team. It also helped that that team was still needing more people.

The next couple years were one of the best times of my life. Almost all my team was based out of Austin barring one other person. I also got married and moved to the east bay around this time and I started taking the Bart to work. This was interesting in its own right and I did manage to get some reading/listening done during my commute. The work was pretty intense but the learning was immense. We also hit some really weird quirks of LDAP (yes, our datastore was the original-nosql DB - LDAP) owing to our massive scale - replication conflicts. Initially we addressed these manually but over time it became quite onerous and I decided to write an automated means to resolve these. I ended up writing a troubleshooting utility that can potentially be run automatically to identify and intelligently fix these conflicts across the entire cluster. This helped us quickly fix gnarly issues and helped us scale the datastore and our auth service to support upwards of 50 internal teams and ultimately power the innards of Salesforce's Customer 360.

Around the time of the pandemic's early days, in late 2019, I decided to make an internal transfer to Heroku which is where I spent my last 2 years at Salesforce. I should say this was the most rewarding time of my entire career and throughout my time there I wished I had joined much much earlier. I had been a user of Heroku, years before I knew about Salesforce and had been an avid follower of the founders' philosophy and the 12factor paradigm. During my time at Heroku, I was part of the networking team predominantly working on the Common Runtime on several projects ranging from our marquee sharding effort to move the entire deployment to AWS VPCs with little to no downtime for customers, moving *.herokuapp.com to AWS ACM, migrating our interactive sessions server to VPCs, sunsetting SSL endpoints and TLS version supports and deprecation. Heroku was also the first product in my entire career where I got to work on something that I'd use as a user. This brought in the side of empathy and made me understand the value of getting the stuff right for a faceless developer getting their livelihood started through a small app on the platform. It also immensely helped to be amidst a lot of smart and caring folks who took pride in writing every single line of code and were ever so diligent to ensure that no corners were cut. This was quite infectious and something I learnt to imbibe throughout my time there. Heroku also prided in celebrating wins and I learnt that I had, over the years, grown to be more pessimistic and wasn't willing to celebrate even when I deserved to! :) Heroku was also the first fully remote role (thanks COVID-19) and I had all the help in the world from my team and manager given that I was also a new father and was juggling the interesting, yet challenging aspects of child-rearing along with dealing with a once-in-a-lifetime pandemic. Heroku had been a traditionally remote company for years now and I was able to learn a lot of minor workflow hacks like watercoolers and pair-programming through the process. I also used the opportunity to get better at more technical writing since most communication happened through documents and Slack and I grew to preferring these over face-to-face or video conversations.

Outside of work, I also took the opportunity across 5 years to do many things ranging from Toastmasters to getting involved briefly in A cappella and singing in a couple of events through the years. Toastmasters also brought forth a lot of confidence and the time also led me to some wonderful friends outside of work. Overall, the time at Salesforce was quite transformative having gotten the opportunity to work with people from different walks of life. One thing I absolutely regret from my time at Salesforce was that I was relatively far-off from the primary product as a user and while I did spend a lot of time working on the main product to integrate it to the auth framework, I didn't fully appreciate the power of it as someone who'd use it day-in and day-out.

If you've read till here, you're probably wondering why I decided to move. Well, I started off this post with the fact that it had been 5 years already, didn't I? :) One thing Salesforce is really good at is offering the means for engineers to internally move teams of their choice. The rationale is that top talent would choose to work on other parts of the platform than leaving the company. Having had the opportunity to work on two different pieces of the stack across 5 years, I had a good understanding of the infrastructural landscape of the company. Besides, I was growing a little impatient as a result of (mostly necessary) bureaucracy across the company. Every company has its own quirks but I was getting bogged by the same set of constraints across teams and I badly wanted to be subjected to a different perspective at a completely different organization.

As of this Monday, I started at Stripe to work on their traffic infrastructure team. One of the main reasons for choosing Stripe over the others is the payments space. I'm fairly new to the concept of payments and fintech in general and I had been following Stripe and a few other companies in this space for a while. Stripe is also going through an interesting transition of scale as it gears up to supporting more traffic through the coming years. The pandemic has surely accelerated the adoption of payments through the Internet by many merchants and many boutique and unique industries are also needing to support payments/generate invoices which was previously done through financial instruments like checks and direct ACH transactions. Stripe is well poised to be a key player in this space in the coming decade. One thing I have absolutely promised myself before I started is to ensure I stay closer to the product as I ramp up. I have used Stripe in the past as a user through multiple merchants and that went a long way in me making this decision as well. In addition, some of the interesting projects that Stripe's founders (and employees) have been undertaking like Stripe Press, Increment, VaccinateCA, IndieHackers and a few others also swayed me in taking the decision.

Looking forward to share more from my work in the coming months! Wish me luck and stay safe! :)