“Hey, you’re Elon’s best friend now, huh?” I asked my friend, who has been interning at Tesla for the past 3 months.
“You have no idea. For a few hours, my desk was like five meters from Elon’s.”
“No fucking way” I shouted.
“It’s true. The first day they were like ‘here is your desk’. I literally freaked out. I think Elon could have read my code if he wanted. I quickly managed to change desks though.”
“Man, that’s insane. How many months do you have left? You started, like, in September, right?”
“Yeah, I’ve got, like, 3 months left.”
“But how did you manage to get a work permit in the US? Didn’t you start with a tourist visa?”
“It’s a long story. I tried…”
“Please, tell me. I want to know it all.”
“[laughs] Really? Everything?”
He then went on explaining the full story.
Eduardo Saverin writing the Elo rating system in “The Social Network”. Credits: Columbia pictures
“So, on January 2018, I took this plane to 42 Silicon Valley. My dad could only give me the minimum money to pay the rent (an Airbnb). For the first months, all my money went into this Airbnb. I had almost nothing left to eat. I would eat half a taco a day, and sometimes pasta. That’s it.”
“That’s some crazy shit, man. In fact, it’s not that far from the story of the Airbnb co-founders that didn’t even have enough money to pay rent.” I said.
“Yeah, tough times. I was so hungry I stopped giving a fuck. I would ask to see the director of the Starfleet program, and ask him, like, ‘can I join your thing’, and he would refuse everytime. I only had a 6 months tourist visa, but the Starfleet program is one-year long. At some point he got tired of saying no, and eventually accepted.”
“You’re an absolute madlad. You never quit dude. You’re fucking insane.”
“When you are broke and hungry, it’s not that difficult to ask for what you want. I came all the way back from France. I needed to get into this Starfleet program. I was dying for 24/7 coding and a Silicon Valley job.”
“Makes sense.”
“Then, a few months after I got accepted into this Starfleet program, one of my friends that knew quite well the executive team asked if I could have a dorm room. They quickly looked at my projects before accepting. I think they quickly understood that I was a serious guy. From this point onwards, I had more cash to spend on food, and I could dedicate all my time to coding.”
The work environment at 42. Source
“At this point, we had an insane amount of work to do. I remember having to do corewar
[a VM project that usually takes a month to complete], 42sh
[one of the hardest shell project] and the PHP piscine
[two weeks of intense PHP challenges] at the same time. We stayed up all night to finish our projects. One of our traditions was that one guy would buy food for everyone at 5am. It was crazy.”
“You’ve got no idea how jealous I am” I uttered.
“Yeah, it was tough, but really fun at the same time. Anyway, at some point the workload was unbearable. Like, we had 6 projects at the same time. I remember we had to code ft_p
[a client and a server to transfer files over TCP/IP network], Hypertube
[a web app for video streaming that usually takes 2 months to implement], Walking Marvin
[an AI project] and Zappy
[a server, a graphic interface, and an AI client for a multi-player game over TCP/IP network. It’s one of the last projects of the UNIX branch].”
“That’s like objectively impossible, right?” I genuinely asked.
“Not impossible, but really tough for sure. The solution I found was to only focus on the Zappy project. The main problem was that, from the initial group members, the only people left were me and a Polish friend.”
“I would have done the same, I guess. But Zappy is, like, at the end of the UNIX project graph, right? Must have been pretty tough without having done all the previous projects.”
Screenshot of his “holy [project] graph”. From left to right: Hypertube (end of web branch), 21sh (shell/Unix), ft_p/IRC(Unix/DevOps), Walking Marvin(AI), and on the far right the Zappy project (that he eventually validated!)
“Kinda. For Zappy we had to code a graphic interface, a server and a client. The worst part was the “dead code” from the initial team members that left Silicon Valley. It’s worth mentioning that, at that moment, we only had two weeks and a half left to ship this project. So, I said to myself: ‘fuck, let’s do it’. I went to talk to other people from the Starfleet program, asking them if they were available to work with us.”
“That’s so much you. You tell people what you want and how you want it. You make everyone believe in your projects and end up managing a whole team.” I told him, smiling.
“[laughs] I guess. So, I went to see this guy that was coding Bomberman
[a video game project in C++
], and asked him if he wanted to join us to do the graphic interface. He was like ‘oh, no, I don’t want to let down my Bomberman partners.’ I insisted. I told him that there was a bunch of cool new stuff to learn in Zappy, and that no one in 42 Silicon Valley had ever completed it. We would be the first. He said he needed time, so I told him I would come back in a day, and see if he had changed his mind. I came back two hours later. He joined the group.”
“Fuck. You’re so pushy man. You really can’t take no as an answer!”
the final graphic interface, implemented by the Bomberman guy
“[laughs] Maybe. To sum up the situation, two weeks before the deadline, we had some code for the graphical interface, a half done server, and a working client. My Polish friend was trying to connect different “dead code” parts to make the server [the most difficult component] work. That’s when she started to become a little depressed about the whole thing, and decided to take a week off. While she was off the grid, I tried to debug her code, but it was uncommented, cryptic and incoherent.”
“Shit. It’s horrible when something like this happens. It takes more time to rewrite the thing than to just start over.”
“Yeah, it’s tough. When she came back from vacation, we had a lengthy discussion. I said that it would take me too long to decipher her code. She got upset. When I went to sleep, I had already given up on Zappy. But the next morning, something magical happened: it turned out my Polish friend had pushed a beautiful code that implemented all of the necessary features, taking into account all of my previous feedback”.
“I don’t believe you.”
“That’s crazy right?” he said “So the three of us stayed up all night for a couple of days, and ended up finishing this impossible project. It works pretty well now !”
“That’s awesome man. I wish I had such amazing stories to tell.” I said. “But what about the whole Tesla thing? How did you eventually get an interview?”
At this point, we had been talking for about an hour about his awesome projects at 42. Now, he was finally going to talk about how he managed to get an interview at Tesla, and how he secured his internship.
“The whole Zappy thing ended in July, with the C++ piscine
[an introduction to OOP; about two weeks of small C++
projects]. On Sunday, it was the final of the Worldcup, and France was playing [my friend and I are both French]. Since I was living in a free dorm, I had some extra money. The two-way ticket to Paris was pretty cheap, and I was really homesick, so I decided to take a flight back to France.”
“No-fucking-way” I slowly said, bursting into laughter.
“[laughs] I really wanted to come back home. I arrived on Saturday, I watched the final, and then stayed in a vegetative state for, like, a week. But then, I couldn’t relax anymore. I had to code.”
“So you literally came back to France for only a week?” I said.
“That’s about it, yeah. When I came back from the Worldcup thing in France, the director of the school came to me. He had his laptop open, and told me: ‘I have this friend who works at Tesla. I am sending him an email recommending you for an internship.’ ”
“Lucky you!”
“Maybe. I was like ‘yeah, you know, I haven’t done much C++
apart from the “piscine” [C++
was part of the stack for the internship, as you’ll see below], so I’m not really sure it’s the best time to send an application. Why don’t we wait, like, a few months?’. But the director had already typed his email. He told me: ‘Oh, you haven’t coded much in C++
, huh? YOU’RE GONNA LEARN!’, and pressed “Enter”, sending the email, right at the end of his sentence. Fucking Kwame [name of the director]!”
42 SV (past) director’s twitter pic
“No way! What did you do then?” I said, baffled.
“I had no choice but to send one more mail adding my curriculum vitae and a cover letter. I then said I was available if they wanted to interview me.”
“Wait, you said that knowing that you needed a few months to really grasp C++
?!”
“Yep. And I think it was a mistake. The guy at Tesla answered in literally 20 seconds saying: ‘Sure, let’s meet next week on Wednesday’. The day was Sunday. There was no way I could be ready in four days. So I explained to him that I needed more time to finish a project I hadn’t started yet. We agreed on an interview in two weeks.”
“That’s crazy. That means you had enough time to prepare for the interview, didn’t you? C++
is really difficult, though. I don’t think it’d have been possible to learn anything substantial, even in two weeks.”
“That’s why I prefered to focus on working on an interesting project I could show them, rather than learning C++
. Plus, the director told me that they often looked at our projects, to check our code.”
“Makes sense. What was this last project about, then?”
After having finished coding FaceMash, in “The Social Network”
“I wanted to do something related to Tesla,” he recalled, “so I tried dozens of different ideas, but wasn’t really convinced by any. Every day, I would go to the director’s office with a new problem. He would look me in the eye, and tell me: ‘your idea is shitty, huh? It must suck to be you.’ At some point I found a project that convinced me: a simulator for self-driving car traffic.”
“Hum, yeah. I remember you telling me about this project.”
“Oh, right, we might have discussed it. Essentially, I had to read many papers with a lot of math. I didn’t really care about the equations, I just wanted a way to implement a cool demo. I recruited the Bomberman guy, and two of my best friends (including my Polish friend), and we started coding. We worked very hard. We only had, like, a week, to code the whole thing. If I remember correctly, one of my best friends was working full-time, so I had to convince him to come to 42 after work [laughs].”
“Ace, you were managing a team for a real project this time!”
“Kind of. I was under so much stress, you know. But yeah, when I look back at it, I’m really proud of what we’ve accomplished.”
“Sure. How did the interview go then?” I asked, curious.
Courtesy of Tesla. source
“First, I had a call interview with the guy. He told me the call would be at 11am. I looked at my phone anxiously between 11am and 11:45am, until the phone eventually rang. The guy was really nice, and he asked questions about my personal life, what I’d done in the past, my projects, and so on and so forth.”
“Then, I had an interview in person with the guy I talked with on the phone. We met at noon, and he invited me to lunch. During lunch, I couldn’t think of anything but the questions he was going to ask me during the afternoon. I’d only had one week to prepare for the interview. All I had been doing was finishing that self-driving car traffic simulator. I wasn’t even prepared for basic CS binary tree questions. I might have peeked at a C++
book, that’s it. ”
“That’s pretty risky. But, I guess, taking into account your time constraints, you couldn’t have prepared much more, could you?”
“I guess. After we finished our meal, he presented me to someone from his team: ‘you said you liked math, right? Here’s one my engineers. He holds a PhD in math. You two should get along.’ I then followed this PhD guy. We went to a room where guys were finishing their lunch. We couldn’t use the whiteboard, so the PhD guy just started asking C++
questions right off the bat.”
“Shit. That’s what you feared the most, right?”
“Definitely. Especially since at 42 they teach you the C++98
standard, so I was completely unprepared. The first question was, like, ‘can you define what a smart pointer is?’, which is a modern C++
question.”
“What did you say then?”
“I tried to answer the question as best as I could, talking about how compilation worked, etc. For all of my answers, I always started by saying ‘I don’t know what the answer to this question is, but here is how I would approach it.’ I think he liked that.”
“It shows that you’re humble and know your limits, that’s great.”
“Maybe. At some point, he started asking about examples of undefined behavior
. I didn’t know what to answer. I, like, segfaulted [laughs]. Then suddenly, one example from my past projects came to mind: ‘when multi-threading, if you declare a variable without a volatile
keyword, the compiler might end up deleting that variable (for optimization reasons, I guess), resulting in undefined behavior.’ The interviewer answered: ‘Alright. Don’t you have a simpler example?’. I ended up giving an example that was even more low-level, like, out-of-order execution.”
“[laughs] That’s also very you to give such complex answers. I guess it showed that you had experience in C++
programming, and weren’t just reciting a manual. What happened next?”
“Yeah, I had some C++
experience, I guess. Well, after those questions, the guys eating lunch were done. He started using the whiteboard, and wrote a binary search tree problem. That was much easier because we had had all this oral preparation for math problems in undergrad, remember?”
Image Credit: Coding Interview University and Silicon Valley
“Finally, at the moment I finished the exercise, some guys asked us to leave the room. The only thing my interviewer said was ‘That seems to work’. So I think I nailed this part. The whole C++
interview plus whiteboard thing must have taken, like, an hour. Afterward, the engineering manager came back, and he interviewed me for an additional hour. He asked very low-level questions about compilation, because he used to work with the optimization team in charge of clang
or something”.
“Damn, that’s impressive.”
“Anyway, that’s everything I did there. After that, I never returned to Tesla. Well, not before my internship.”
“Makes sense. But didn’t you also do something connected to a hackathon?”
“Oh, yeah, this hackathon. In short, a few weeks after my Tesla interview, I ended up participating in a very long hackathon with my friends from 42. We kinda won the thing, so I got the opportunity to talk with one of the organizers who knew people at Tesla, and even showed him my self-driving car traffic simulator.”
“That’s pretty cool.”
“Thanks. The coolest part about it is that, apparently, when he talked to the Tesla team, they were, like, ‘oh, yeah, we know this guy, we met him a few weeks ago.’ So I think at this moment I knew my internship was secured.”
“That’s awesome,” I said, now totally in awe of the guy. “I’m really impressed by everything you’ve been able to achieve since you arrived in Silicon Valley. You’re a great inspiration to me. All this conversation makes me want to go to 42 Paris right now [it was 2am] and start coding [laughs]!”
“[laughs] Gotcha. It was a pleasure talking to you as well. I guess you don’t really need this story to stay motivated, right? You’re already doing some crazy shit by yourself, aren’t you?”
“Right. But it’s still a huge boost to talk to you. Do you mind if I write a blogpost summarizing our conversation?”
“No problem.”
If this article was helpful to you, hold the 👏 button (up to 50 times) and become part of the 👏 gang. You can also connect with me on Twitter, LinkedIn, Github and Medium to stay up to date with my latest blogposts.
This blogpost wouldn’t have been possible if 42 Silicon Valley wasn’t disrupting education, so thanks for existing.
Also, I would like to thank Emil Wallner, Laura Sibony and Harry Begg for their amazing feedback. A special thanks to my mysterious Tesla friend that agreed to chat for two hours, and checked all the details.