The Karate Kid is a bullshit movie. It’s about a kid who learns karate from a mysterious sensei, trains for like 3 months and wins a tournament against far better competitors. Anybody who’s done a competitive sport can tell you that’s not how this works.
If The Karate Kid was a realistic movie, Daniel would start training with Mr. Miyagi, go to a competition and get his ass kicked. Hell he’d go to ten tournaments and get his ass kicked. He’d realize that to get good, he needs to spar with people, specifically people who aren’t his 70 year-old sensei. Different people have different styles. He’d probably join Cobra Kai or at least another dojo with other students.
Daniel would also realize that winning a tournament isn’t easy. It’s not a matter of winning against another team as much as winning over 30, maybe 40 people. Getting to the top means being in the top 2-3% of karate practitioners. That takes time. Most people don’t ever make it that far. Daniel would need to train for at least a few years before making it.
Wait, isn’t this supposed to be a tech blog?
As it turns out, there’s some similarities between The Karate Kid and how people view tech recruiting1. A lot of people are obsessed about getting into FAANG/big N/unicorns. One of the first posts on this blog was about just that. I wrote it because I knew it would catch people’s attention.
All of these big N make up a few tiny percentage points of developers. Google famously has a 0.2% acceptance rate, more prestigious than any Ivy League.
Students obsess over these companies, yet the majority of students start programming in college. They start with little to no programming knowledge. And yet, they expect to get into the top 1% of developers within what, 2-3 years?
When you put it that way, it sounds a lot more ridiculous. Granted, there’s some differences between programming and karate. Since a lot of students start from zero, there’s a more even playing field. There are genuinely people who start programming in college and end up at Google by junior year. But they’re rare. They’re the Daniel LaRusso2’s of tech. And even most of them don’t go work at Google as their first job. They intern at some small place then work up to Google.
I definitely was not a Daniel LaRusso. Sure, I’ve interned at a big N company. But the process was years in the making. I started programming when I was 15. I interned at two places and programmed for five years before I went to a big N. Lots of those years were spent reading about programming, writing side projects, learning different languages, etc. I didn’t just walk in and end up in the top 1% of programmers. I just happened to have a head start.
Taking the analogy a little further, if you want to get to the top 1% of programmers, you should start sparring. No, I don’t mean competitive programming. I mean you should start seeing who you’re competing with. There’s a lot of talented programmers out there. Start seeing what they’re doing, and try to catch up. I try to keep track of good programmers around my age. I’ve actually started to reach out to them, so that we can learn from each other.
Don’t see them as competitors though. See them as benchmarks. If your friend Ariel is writing a compiler, how about you try writing one? If Charlie is learning Rust, maybe you should too? I’ve had people confidently tell me that they wanted to get a Google internship when they could barely program. A little bit of GitHub stalking or resume reading would show them the issues with that aspiration.
I don’t want to rain on someone’s parade. There’s certainly a chance you can get a Facebook internship, regardless of your current skillset. I know people who undervalue their skills and could easily be Facebook or Microsoft interns. And even if you’re not skilled, all that means is you need to train a little longer. Go make some side projects. Go work at other places. Practice interviewing. There’s no rush. The Big N aren’t going anywhere.
Of course you should apply to these companies regardless of your experience. You have nothing to lose and everything to gain.
We love the idea of a wunderkind coming out of nowhere and stunning people, but the truth is that barring a few exceptions, good programmers are social beings. They learn from others, they engage in technical communities and they share their knowledge.
Not to mention, you don’t need to win the karate tournament to do well. The entire conclusion of The Karate Kid is based around Daniel winning the tournament. I think that’s an unrealistic expectation in the first place. In an individual tournament, it’s a significant accomplishment to get to the top 8 out of 40 people. The same is true in tech. It’s an accomplishment to get a job at the myriad of tech companies not in the big N. You don’t need to work at Google.
I know, working for Google or Facebook just sounds incredible. You’re getting paid all of this money, you get these ridiculous perks and a resume boost that will help you for decades to come. But it’s important to recognize that this is a really difficult accomplishment. Much as you probably won’t win your first karate tournament ever, you probably won’t join Google as your first job. And you may never join Google or win a karate tournament. That’s okay.
Oh and don’t get a mysterious Japanese man to mentor you in programming. Unless his name is Matz.