Working at a early-stage startup!
So, I got hired at a startup at the end of my 2nd year at IITK, and man it was an intense experience working at a high growth startup! I was working, managing my academic workload and later started doing some cryptography research project under a cool prof as well, so hectic as fuck. But I loved every single moment of it. I learned about the experience of working in a startup, and some nuggets on what it takes to actually run a high-growth startup.
How was it different?
I had some internships under by belt which were also pretty solid experience technically, but not organizationally. In internship, I used to get a mentor assigned to me, I had to simply propose a timeline of how I plan to finish up the internship work and the mentor would guide me while I do the work, great if you want to improve technically. But the startup experience is totally different. I was not an intern anymore (umm... I actually was, but my CTO just trusted me to assign a project to me completely). People were actually dependent on my work. I found out that I am not that good at timeline estimation. And a lot of things don't go the way you thought initially, especially when you work in a team.
When issues happen upstream (you are dependent on someone), shit hits the fan! People don't reply fast, maintainers of OSS are really busy people, talking to Product Managers to reach out to devs responsible for the issue to the tech lead, getting the issue resolved, giving feedback to the managers, and then returning back to your own work. Unblocking other team memebers time to time. The hardest part is not technical, but communication and management.
Nobody is there to clean up your mess - technical debts, people who left the role, sudden breaking change in god knows what lib that you were using, ... Reducing your bus factor is very crucial.
I was not working on a personal project! I can't add any new dependencies, use a new language like Rust :) and implement new libraries that wrap something, and show that to the team expecting appreciation. Bad idea, always discuss first with the team, and then do stuff. Don't try to be smart, and end up being a smart-ass.
Technical debt is not bad, but neglected technical debt is! Talk is cheap! Show us the code
is a really bad idea! Maintaining the codebase is a large part of the job.
Also, the amount of time you will spend in meetings in just mindnumbing. But attending meetings is not a waste of time at all. Sharing the right information and mentoring juniors is absolutely essential. A culture of sharing information avoids the situation of a star dev in the team. And supporting your manager is crucial to manage you is crucial.
Senior engineers are often judged by the performance of the team they are leading, apart from their own performance. You will have to actively stay in loop on where the team is stuck.
As a student I used to think it's hard to get hired. Well, it's way harder to find someone competent and accountable enough to show up everyday with grit and determination.
But I guess, I just love the thrill of working in a startup, creating products that shoot to production fast! I am still waiting for the day when I delete my first production server as a cute intern :) The feedback loop and learning speed at a high-growth startup is just hypnotic (work life balance goes for a toss). Well, you will have bad WLB even in big tech these days, so not much of a loss. But I still wanna try Big Tech and Quants just out of FOMO once.
Wait before you sign that offer big boy
The easiest kind of offer you can aim for is an intern-to-full-time conversion offer. The intern interview process can be atleast twice easier than a full-time interview process. But observe the company very keenly before accepting that offer. A solid internship gives you levrage to get even better full-time roles if you are ready to take a risk and work hard. You don't always have to accept the conversion offer.
Although I am just a student and have no corporate 10+ years of leadership experience, still some points that I have started to consider before accepting offer to join any company :
- Avoid teams who have heroic coders, they just don't have process setup properly. And that cute hero is borderline mentally harassed.
- Work with smart folks, not smart-asses. You really underestimate humility before you meet egoists. I don't join a team where everybody is a genius. I like working with normal human beings, not with 100x engineers. Work with folks who humbly handle the tech-debt and do boring but necessary stuff in the company, not drive impact to the moon while throwing other engineers under the bus. These smart-asses rock the interview, but are a nightmare to work with. I'd rather work with someone who isn't a genius but is willing to collaborate and share ideas. Stay away from over-competing folks, spend more time with your gf/wife please.
- Also, be on the lookout for manipulators — the toxic ones who are always looking to take advantage of you. For example, they might shift blame onto you for failures, hoard information to make themselves indispensable, or subtly sabotage your work to make theirs look better. These people can make your life miserable, so it's important to identify them early on.
- Performing good in interviews don't have much to do with performing good in job. Those behavioural rounds are useless, repetitive crap. I have seen many companies try to sell you on their culture or 'core values.' But honestly, you can forget about most of that after the interview Can people in your team get shit done? Find out who gets most shit done, and learn from them as an intern especially. These technical interviews are necessary-evil.
- High turnover rate is redflag, and the company clearly isn't able to appreciate the talent.
- If you are interviewing for an intern position, during the interviews, ask about the kind of tasks you’ll do in the role, the manager you’ll report to, and the kind of mentorship you’ll get. If you are an intern, you should be simply thrown into the project. Fight for the team and mentorship, they are gonna define your internship.
- Don’t shy away from negotiation even for internship. Even if you don’t work for money, you have every right to be paid your worth.
- Always have other offers. I’ve seen two friends with similar experience joining the same company for the same role, but one got $50k more a year because he had a competitive offer.
- Read Glassdoor/Blind reviews to get a sense of what you’re getting into. Heck, DM employees on LinkedIn to get a feel of how the company is from inside.
- Being fast in software is not the best idea. If your task is estimated to take two days and you finish in two hours, no one really cares or remembers your name. but, if a bug comes from that code, everyone will remember you. So being fast isn't always valuable.
- Focus only on the take-home money. No stocks, bonuses, hikes, yada yada. They can be gamed against you.
- If the only thing that your job is paying you is money, better find another job.
Now, I wish to work on something worthwhile, not just print money.
Also, discuss everything over emails, not on telegram, discord, slack, etc. And negotiate, always! Over-confidence is better than under-confidence.
I dropped the thought of building company being in college
Don't trying building a company when in university! Either drop-out or take a year gap to iterate. Otherwise you will have a lot on your plate. Always work in a startup before starting one. Organizing an engineering team is really hard, and you will have to give them an optimal employee experience as well. They are an employee, you are a founder. So you cant expect them to work like a founder. Building accountability systems should be a priority. Raising VC money is extremely hard as a student. An accelerator program is not real progress (even if its YC). Do you really wanna do this, are you obsessed enough?
I was not. Period. Maybe some other day, some other time.
What I learnt about myself
Atleast for the time being, research will be on my cards. I really underestimated managing people. I am the god's chosen IC