I recently made a job switch … And I did not like the process
So I recently switched out of Typito, my previous employer to Gojek. To be honest there were reasons, some internal and some common across all startups.
Before you begin, know this.
This is Not an Interview Cracking Guide. It’s more of my own experience in looking out for the best fit next job with my experience, skills and expectations.
Reasons
- Learning: I have weird unrealistic aspirations towards how I want to build my future self in the field of engineering. Which does pivots a lot around “learning”. Not just “learning” React, Node or the next fancy tech in the line, but rather building a strong foundation in various disciplines and problem spaces. Much contrary to my lead's belief I am rarely bothered by the new upcoming stuff. I prefer sticking to the current tools until I extract the last amount of juice out of it. So what I do focus on, well to put it simply I prefer an “M” style of learning. i.e I don’t want a massive breadth of things in my head, yes I am fine delegating and even being oblivious about a few things. But I do want to master a few verticals well. So naturally what I intended to learn and understand from Typito, would have met its end eventually.
- Startup curse: Here I said it. The smaller team, build fast, fail fast, and learn fast eventually wears out. You will often do things that are done by IT, you will do stuff done by rapid response teams and juggle a lot. Someone like me often takes hard calls between doing the things best I know vs what is acceptable. You will have an end 2 end ownership of everything you build. Here end 2 end means all the ends. Not just the fancy microservice running along with the same VM as the main app ( because you still don’t have traffic to justify the bottleneck but one of your engineers will probably write a microservice for every other thing ). I mean ALL THE ENDS. Your Sundays although relaxed might go a little tense since you just never know when the next bug comes knocking. Eventually, product motivations will not align with what you wanted to grow into. Then there comes the RUT.
- Lack of Osmosis of knowledge: Absolutely no hard feelings against anyone, I have learnt a lot from everyone. But the difference with experience is that you just see things falling apart much before they do. That perspective I feel will probably be a much-needed guiding stone for a lesser experience professional working in a team as a developer. Plus If I want to grow in different shoes, I need points from someone who has seen more of the tech industry than I have.
And ya these were the reasons why I left my previous org. I still do occasionally check on them and currently hoping they allow me to open source some of my learnings powering stuff internally. 👀
Process of Switch
Believe me something along the lines of “Why should we pay you this much ?” has happened to me.
I respectfully declined. I declined hard.
So when I was about to switch, I had some clear goals in my head that I needed to accomplish. So my common questions to CEOs and recruiters were generally along the line of.
- What is the team size and experience of members?
- The technology stack and product problem space?
- How are sprints and tasks managed? How mature is the codebase? how much focus is put on correct processes and practices in engineering?
- Is the role focused more on backend engineering? (if it’s a full-stack engineering role)
Along with the questions above, I also had an intention of changing my tech stack 🔧 completely while attaining a target salary bracket 💰. This meant I was about to go into a difficult process where I had to lean on my experience not of the tech stack I am working on but of the problem solving that I have done. My selection had to be based on, what I have learned and how much learning capability I showed. All the while nailing the design rounds since I was not applying for junior roles anymore.
Application avenues
- Cutshort
I have been recommending cutshort to everyone, for the past couple of months. No this is not their promotional material. I am not paid for this at all. But what I do like is that given that the platform is still not as big as Naukri you do end up getting a lot of visibility 👀 Although I would say your profile setup and salary numbers will also get you in a better position as well. So look into it if you want startups. - AngelList
I think everyone has heard of it. So not much to add here. If you are looking for roles all across the world with remote filters can go through this. I did not have much luck here. Did get contacted by a few recruiters but nothing much panned out here. I was more focused on Indian startups. Nope, no national pride thing just that I did not want to immediately go out exploring cross country / daily routine being messed up workplace because it’s in a different timezone. There is a time for that and I will do it at one point. - InstaHyre
Now Instahyre was a late discovery. If you are looking for mid-size tech companies, I felt InstaHyre is a great catch. Not that it’s bad for big tech as well. I did get emails from one of the big tech companies. But the count is high for mid-tech I feel. Which is much lesser at Cutshort. - LinkedIn
I think only one company reached out, even though they did not match the salary bracket I asked for. But LinkedIn I feel has been lately been a really poor job hunting tool for me. - Referrals and Recruiters reach out
Shout out to all ya folks who helped me out, referred me. Especially Ashwin Goyal . Although I did not make it through the process, more on that later. But ya especially reaching out to recruiters personally definitely helped me. It is also however pretty tiring though. Manually reaching out, I mean at one point I just created a generic cookie-cutter message and started spamming accounts. Sorry yall, it did work so yeah. Cheers !! - Company Website
I think by far one of the most underappreciated resources. In my search, there have been close to 4 instances where my application was selected right of the bat from the portal or the company’s application system. Not sure whether it was a resume or the company was aggressively hiring. But I feel there was another reason on top i.e these days people don’t do that. Applying from the portal, especially the ones where the company is managing it on their own, means you have already put the effort to go through the company website (possibly role or salary structure etc and then applying). So recruiters already have a certain level of confidence in you.
PS: The last strategy combined with recruiter reach out has worked wonders for me. I will elaborate further on how I negotiated and took calls. Often questionable in hindsight but trying to maximise in all aspects.
So yeah, then started the interview process.
The Game is afoot
Rounds and Preparation strategy
- Take-home assignment
As a working professional, it’s always much more difficult to try and complete take-home assignments. But there was this one company that gave a database designing challenge. Which was sort of the kind of problem they have already solved internally in their product. This motivated me to solve it because I knew what I was aiming for now. I was aiming to build something equivalent or maybe better or perhaps a different view into solving the same problem. So as a rule of thumb if you see the assignment is something you would enjoy solving and is very close to what the company is doing, the company knows what they are looking for in a candidate. This worked for me in Typito’s interview, worked for the above mentioned as well.
PS: As a fresher, if you want to get interviewed while making a bunch of projects to showcase, go ahead with this. You will rack up skills and a bunch of projects as well possibly if they get selected some well worth reviews. This helped me back in the day since I did not have open source project contributions where I could get peer reviews of my code. Applicable for only small to mid-scale startups. - Problem Solving / Data Structure & Algorithm / Machine Coding
Ohh !! The dreaded round. Not everyone has it, but those who have, have it. Well, it’s not dreadful until the interviewer is hell-bent on finding stuff that they cannot do themselves (hence might end up giving wrong hints). I do not hate this round. Not a big fan, but I like discussing the fundamental concepts and prefer questions where I can apply them. One instance where I had to do a low-level code implementation of a key-value store with all operations being O(1), with some amortization and sacrifices, of course, was probably the most fun round I had. The interviewer was silent and gave me time to think through so that I can speak after I have thought through the solution while I used the doc to scratch whatever came into my head.
So many might be surprised, I did implement a linked list based event pooler, used a barebones reverse index (build APIs on top), schedulers for lazy loading & rendering tricks in React and used graphs to solve problems in my previous role. I mean it was a freaking video editor and it was already running on Javascript 😢 on some unknown hardware giving a questionable performance. So ya the data structure questions although not a daily deal was something I was comfortable with.
So this and my years of being at comfort with foundational data structures (I learnt Linked List and Stack in Class XII), ensure that I rarely ever prepare for an interview. BIG MISTAKE !!!!
Since I did not revise or practiced a ton on leetcode, things that I can figure out I know, took more time and hence I failed a few interviews. Usually, when it is the first round, I was fine with it. The one time it was in the last round, I lost my shit.
Nonetheless, practice well and practice often. Strong foundations will help but in an interview, you have to dance on your tiptoe. I am looking at you the company interviewer who made me solve 10 questions ranging from algorithm to function design to component debugging in under 1 hour. 😄 - Low-Level Design
If you feel, system design is abstract you are wrong. I did face this round in some or other form everywhere. For roles that used JS actively, I enjoyed the round since I was writing things that mimic bluebird or some other library while the interviewer judged me on that, but for other cases where the interviewer is from a non-JS background, let’s just say “things got out of hand” 😉 . For me, this round has ranged from being advised the system is too simple and does not have enough abstractions and objects to having the implementation be overengineered to the point where I took more time to implement the core solution than allowed. From what I understood, no one designs their code as they talk in interviews. I mean everybody loves dabbling in the Gang of Four book, but you cannot foresee things in future. In an attempt to generalize you will probably overdo things. Also, Javascript does not sit well with the whole interface and abstract ideas. It’s more composition and higher-order function-oriented and fundamentally different from other type-strict languages. So be aware of this if you are using Javascript during the interview. Yes, you can do OOPS, I did too. But the idea of using new with class instead of shorthand for creating small objects Object will be boilerplate for a lot of js devs. A good one-shot resource I found for this was Work@Tech. It was a one-stop-shop for me to get questions which I could brainstorm on how I would design them. - High-Level Design
This is the round where you build things from scratch at a scale that probably you will never do in a big-tech company. Here I said it !!! 🙇
But… this is my favourite round. Also, this is the round where I started to realise that my experience as a “Full Stack Engineer” was not really “Full”. You see in most cases, I was able to design the system. I knew how to divide the workload. I knew where to place the load balancer and what part would require a queue and possible async behaviour.
But I faltered in some core areas which everyone told me would set me apart and would better justify a Senior Engineer or a more Matured L2 role. (levelling systems vary by company so no point in fretting over it)
A few points were
* Full-stack approach actually crippled by requirement gathering for APIs. Since I was the one always making features end to end, I never really had an API spec. It was always built as you go along the feature spec since I always had control end to end.
* Lack of depth in the presentation of certain aspects of systems operations. So this I faced when I had to discuss a simple file write operation which I was using as a second buffer for an in-memory queue for a logger. What the interviewer was looking for was an append-only log file (maybe). I being the dumbass did not explain it well since I did not understand what he was looking for. Not that I would not came to that solution, but I was re-inventing the wheel there on the fly.
* Poor usage of tool/pen tab. Ya when I used my pen tab for drawing the sys design, it looked horrible. In short, it was not clean and very messy on the whiteboard. I should have used draw.io
* I never made systems that are being scaled to handle millions of requests in under a minute. This means all I could discuss were hypothetical solutions and situations. The problem of scale at Typito although relevant was much different. So I faltered at rationalizing server scaling. Yes, no matter how much you pretend you have done that system design course unless you do it yourself and see those Graffana or Prometheus logs yelling at you that your system is dying under load you will not get the experience.
You cannot fake an experience !!! - Hiring Manager Round / CEO Interaction round
Now depending on the company either this will be a screening round or it will be the last one. If you know me then probably you will know I was the same wisecracking idiot that I always am, even in this round. Most would probably approve that whenever asked about interpersonal things I am less enthusiastic compared to if asked about what I did in my previous workplace. But I felt being ME, definitely allowed for the best outcome in all cases. Plus I have been working remotely in a startup, so that itself was a green light, that I do not need managing of any sort. No really shout out to all the remote engineers out there. You are doing good !!!
👀 My previous lead would probably be rolling his eyes on my prioritisation calls. But that’s a thing for another post. All in all this round never really bothered me. Since as mentioned before I had clear goals on why I was switching.
Leveraging Previous Experience?
As mentioned before, this switch had to tick a lot of boxes for me this time. One thing that helped me in multiple instances was knowing the nitty-gritty of Typito’s engineering. It even helped at times when I could straight-up point to UI elements and talk about why and how it would behave in multiple cases and how the performance would be in various browsers. Yes, it sounds like I was leveraging my frontend engineering experience for my backend centric role and you would be right. But it’s because engineering for performance largely remains the same wherever and whatever you are doing. Hypothesize, Measure, Validate and Act. Other than that discussing the features I built and being able to talk about it end to end helped. My design decisions reflected how I generally operate. Being able to narrate React’s inner working down to its new Fibre-based async rendering, I feel was a clear indicator I do not learn things on a surface. It’s either all in or nothing. So yes, leverage your experience and focus on the value you are bringing, be it a product or engineering value.
Salary Negotiation
No, I am not going to give numbers here 👀
You can always find them from your peers and definitely from websites like Blind, levels.fyi or LeetCode (yes people post it there as well)
Now here is the thing, when I was applying at startups there was rarely any fuss about what I was asking except for one of them. I liked their interview process but I did not like the HR :). You know it was the kind “Where they ask you why you deserve this amount ?”. Now when I started I did not really have many ideas of what I should be asking. I did not put a number to it. After having cracked the first offer, which I never had rolled out since I told them I am interview at other places as well, they just asked me to make up my mind. I started to give thoughts about salary.
- I reached out to one of my peers to understand better how the big tech companies are paying these days in India. I got a better sense of what I can ask.
- I made some rough calculations based on what my savings should be (for my future plans), and what I need now for sustaining independent life while making healthy investments and paying some fixed amount at home & loans.
That’s it I had my minimum take-home number. Every negotiation had to meet that or I was not taking it. 😅
At the point where I did have multiple offers, I definitely went for the higher ones since I had zero reasons to leave out on a better offer.
When I was going for midsize/big-tech companies that’s when they really started to ask about offer letters. Yes, this is a weird practise in India and I have had heated debates with H.R because of this.
But ya in Rome be like Romans if you cannot be Julius Caesar. If you are , you can make Rome in your own image.
The part I did not like
You see I never really planned out my switch. Unlike most people, I am not driven by dream companies or dream technology etc. I have a clear way of looking at my job
I solve complex problems , I get paid for same.
So when your motives are arbitrary, your search becomes blind and endless. Because what you are effectively doing in your search for that “complex” problem is possibly wasting your own and a lot of other people’s time as well. In my previous sections, I mentioned the problem of rationalizing scale. When I started to think about it I realised, this is something I have to experience and deal with first-hand. This means now my search suddenly became narrower. I was now also asking the hiring managers questions like how many requests do your servers receive, how scaling or L1 priority issues are dealt with when servers are one fire. ? Yes, this was right after the system design rounds. Gave me a clear indication of what I was signing up for.
There was this other thing as well, is the scale of org. I talked with many of my peers and came to realise the thought process was vastly different. They worked at larger and much more mature organizations and teams. I realised no matter what I do, I cannot find these in early-stage or small scale startups.
Yes, it may sound weird, but anyone working in a small tight-knit team in a startup will know that work is much different here compared to those Jira tickets, unit tests and CI/CD driven organizations. It’s a completely different world and workflow.
And TBH, I realised delaying it is only going to cripple my mindset and learning.
So these two are the new things that started to allow me to pivot my decisions.
The cost I paid? I had to say no to places where I was excited to join earlier and had to make difficult decisions of saying No in many other cases, post offers.
I do not like backing down on my word. I’d rather fail than back down. This time I had to. 😕
Why did I choose Gojek then?
- I hunted down that job post myself. It was a backend engineering position where you build stuff for other devs. I can resonate with it.
- The scale of infra and deployment. I could look at the problems first-hand at Gojek and learn from the team how it’s solved and get to solve them myself.
- The scale of organization. I joined recently and I have zero clue on how to make sense of anything. What is it forcing me to do now? Shut down the noise and cut through the basic necessities that can allow me to be functional.
- Plus it ticked all the other boxes as well as mentioned. With tons of learning, I really feel I am starting afresh again. 😍 …
So ya that’s it, folks. That’s it for my learning. The next time I will definitely be more aware and have better-formed motivations for choosing an organization. This will help me potentially not waste my own and others’ time as well.
For now, let’s build stuff as scale. Shall we !!!