Failing.
It feels bad to fail. They say that failure is good, that it's a good learning experience and that failure is inevitable - I agree with all of that, but at the end of the day it still feels bad to fail. If given the choice, I'd prefer not to.
My failure this year was failing to land a cool summer internship. By cool, I mean big tech or HFT firms. What sucks the most about it, was that I got to 4 final round interviews, but failed to close any of them out.
It sucks to be close to a goal and then flop right before the finish line. It sucks knowing how much effort had been invested, how much time I had spent and the feeling that it had all been wasted. I had done so much Leetcode and practice interviews all for it to amount to nothing (peanuts 🥜).
Failure modes (including how confident I am):
Skill mismatch
- SIG (fairly confident) - Lack of C++ on resume, didn't pass the resume screening
Communication skills (failed by people people):
- IMC (fairly confident) - Couldn't communicate my team / leadership skills clearly with stories (first behavioural interview ever I think)
- Vivcourt - Couldn't communicate my passion for why HFT, also no C++ knowledge
Timing mismatch
- Atlassian (confident) - Passed all interviews, headcount was filled at the end. Encouraged to apply for grad next year. Schedule interviews ASAP next season. Semi-mismatch since React wasn't up to scratch.
Skill issue (failed by technical people):
- Jane Street (uncertain) - Failing to iterate code cleanly once finished, Not explaining code well enough, Solution wasn't efficient enough
- Optiver (confident) - Failed to pass online assessment
- Citadel (confident) - Failed to pass online assessment
Uncertain: The Trade Desk - Passed all interviews, then went cold after the final interview. Had to send a few emails to confirm that I failed.
The Good: Pramp was good for developing talking skills. Leetcode was good. I would've liked to have a project relevant to each company to help talk about my skills. I would've liked to have my skillset match up with the tech stack for each company. One misconception I had was that Python Leetcode skills would be enough to pass all technical interviews. For Optiver, knowing networks and operating systems is required to pass their technical knowledge quiz. For my Vivcourt final interview, they asked some technical questions about Python since I didn't have any C++ knowledge.
For Vivcourt, it was beneficial to include a readme.md with my takehome project.
I had a really good behavioural interview with Atlassian. The fact the recruiter encouraged me to apply next year supports this as well. I had a list of stories that matched each of their values.
The end goal was landing a cool summer internship. In that sense I have failed. While I have failed at the major goal, I've achieved many subgoals along the way, including:
- Better technical communication skills
- Solidified my understanding for data structures & algorithms
- A deeper understanding for the standard libraries in python
- Leetcode skills
What's next? (WIP)
- Developing C++ knowledge - going through C++ primer
- Creating C++ projects - tentative remake the QFin Market-Maker, optimise the sudoku solver,
- Computer Architecture - Computer Systems, A programmers perspective
- Data visualisation tool using C# or Python
Unsure on how to improve:
- Nontechnical communication skills / Communication skills
You only fail when you give up.
Sources for planning: