Topic: How to Get a Job at FAANG without a Computer Science Degree
About the guest: Self-taught ex-Amazon developer, currently working at e-Bay. Runs YourDevOpsGuy.com and is a co-author of TeachYourselfCrypto.com
Listen on YouTube
00:00 Introducing Sergio
00:55 What are the FAANG companies
01:20 Sergio’s career background
01:56 Why is FAANG is so well known compared to other tech companies like Microsoft
03:10 Why is Microsoft not in FAANG? Is Microsoft inferior to the rest?
03:49 What are FAANG companies looking for in an employee?
06:40 Do you need a computer science degree to get a job at FAANG?
07:40 VIP (Vesting in Peace)
08:08 What do you need to learn to work at FAANG
10:40 What online courses and programming languages do you recommend
12:10 How much math do you need to know
13:13 How to practice for the interview (resource recommendations)
15:07 Write readable code
16:15 How to get a FAANG interview (with no CS degree)
18:48 What kind of portfolio should you build
20:45 Interview advice: What to do and what not to
23:28 Do NOT ask for feedback after the interview
24:35 Common interview mistakes in coding interviews
31:04 Why use Python
32:25 How to ask for help in the interview
34:25 Standard problems, Sergio’s Book Zero to Code
37:15 Natural Complexity vs Artificial Complexity
39:45 FAANG salary and compensation
40:48 What about non-FAANG tech companies like Oracle, IBM, eBay, etc.
42:22 Are FAANG jobs worth it? What are the hours like?
43:50 FAANG vs Startups
45:30 Is Alexa spying on its users?
49:25 Life of a FAANG worker
53:00 Zero to Code and review
55:18 Outro, where to find Sergio
- TeachYourselfCrypto, the best crypto course on the internet
- Algorithms course by Tim Roughgarden
- Cracking the coding interview (India, USA)
- Zero to Code by Sergio
Harsh Strongman: Welcome, everyone. Today we have with us Sergio, who is my co-author with teachyourselfcrypto.com, the best course on the internet for someone who wants to learn about Bitcoin, Ethereum, smart contracts, privacy coins, DeFi, et cetera. The course is completely free and both the authors are here to talk with you today. Sergio is an aerospace engineer by education but he self taught himself software engineering. He has worked at Amazon before, he has worked at MathWorks, and currently he’s working at eBay. So this guy knows software engineering. He’s an expert and he self taught it to himself, and he taught it to himself good enough to find a job at Amazon. So today we’re going to talk about how you can do the same thing. How can you get a job at a FAANG company. FAANG is Facebook, Amazon. Netflix. There’s one more ‘A’, whose name I forgot. G is Google. So Sergio, how are you doing? What is the ‘A’ I missed? And can you tell us a bit more about yourself?
Sergio: Yes. Thank you, Harsh. Thank you for having me, very good. So the other ‘A’ is Apple.
Harsh Strongman: Apple. Yes.
Sergio: Yes, very good. It’s pretty accurate. So I don’t have a computer science degree. I studied aerospace engineering. I started probably about 10 years ago, a bit more. And I went from aerospace engineering to my first job at MathWorks, where I couldn’t become a full developer because I didn’t have enough experience. So I was part-time doing technical support and the other half of my time was spent developing. From there I moved to Amazon where I was developing Alexa, in a couple of teams, and then from there to my current job here at eBay where now I do more DevOps. But yes, that has been my path.
Harsh Strongman: Interesting. So for someone who wants to do the same thing, firstly, why is FAANG so well known say compared to other tech companies like Uber or Palantir or what have you?
Sergio: So now FAANG has actually extended itself, the acronym, to FAANG-like companies, and those companies that you mentioned they tend to be included. And they’re known because well the compensation they provide is good. Usually the working environment is also very good. The work you do there is challenging. You are surrounded by very smart people, which is very nice, you learn a lot. And then it also helps you build an impressive CV that is going to make it easier for you in the future to get other jobs, or if you want to start your company to convince other people to join. Just to give you an example. I got multiple times, recruiters on LinkedIn, and they talked to me and they tried to convince me to join their company of course. And they usually mention, in our company we have three guys from Google, two guys from Amazon, and so many people from Facebook. So working in a FAANG is a seal of approval nowadays. It’s like the new I went to Harvard.
Harsh Strongman: Hmm. How come Microsoft isn’t in the FAANG companies? Is it no longer as relevant or what is the deal?
Sergio: So I think the whole FAANG thing is from the stocks. So it’s most valuable stocks and Microsoft apparently is not up there. But the company itself is also one of the companies that every developer wants to join. So in my time at Amazon for example, I met a few engineers who used to work at Microsoft. And now when I look back on the people that I met there, on LinkedIn, many of them are working now for Microsoft. So yes, it’s also one of the top companies.
Harsh Strongman: I see. So what are these FAANG companies actually looking for an employee? Because if it was just a degree then you wouldn’t be able to get in because you don’t have a degree in software engineering. So what is the real criteria? What are you looking for? Because I know that you mentioned earlier even before, right before you said that you had conducted interviews before, right? Before the call. So what is a FAANG company looking for in an employee?
Sergio:. So basically, this will sound very obvious but it is not. They want someone who can provide value and who can give the customers what they want, not what the developer wants to do, that’s a separate things. So you need to be able to build a system that people want and then in the future you have to maintain it. You will need to scale it also because we are talking about companies with, in the case of Facebook for example, billions of users. So you need to know how to scale systems. You need to know how to extend the system so that more people can use it or it has more functionality. Or maybe Facebook acquires a different company and now you have to combine the source codes and the systems, et cetera. So you need to be good at system design; as I said, how to scale a system, how to make sure that the system is resilient. So every time Facebook goes down, which doesn’t happen very often, everyone freaks out so you need to know what to do in those cases and what to do to prevent those situations. That way it doesn’t happen often because a lot of thought is put into preventing these situations. But yes, these are some skills you need to have. Object-oriented programming is also a good idea, is how to organize your code even though there are other paradigms. It’s a coding paradigm that’s very common. How to write clean code; code that is readable and testable and tested and maintainable, et cetera. Because as I said part of your time is going to be building your stuff, but most of the time you’re going to be looking at old stuff, either to fix it or to extend it, so you need to know how to write clean code. And also, and especially when you get to a more mature level in your career, you need to be a team player and a leader. Especially the more senior you are, the more you have to interact with people from other teams. So you are expected to lead projects completely. And if you get blocked you cannot just stay in your cubicle, or nowadays at home stuck, you need to go and find the people who can help you and you have to move the thing forward. So technically going to Uni for computer science or for aerospace or whatever, it’s not going to teach you any of those individually. It’s a bunch of skills that if you go to Uni of course you’re going to learn many of them, but you can just learn them on your own or maybe in other jobs and they can transfer. So yes. If you ask me is it necessary to have a degree in computer science, no, because I don’t have one. I have met people without a degree. I’ve met people only with bachelor’s degrees, which is three years only. And I think it’s completely possible. It is true though that getting the first interview is going to be harder, because you don’t have that kind of seal of approval of I went to Uni and I sort of know what I’m doing. But once you get the experience it’s not so relevant anymore. So that’s why I think, yes it’s true that having a degree and if you have the time yes go ahead and get the degree, because it’s going to help you understand algorithms and think analytically and methodically, et cetera. But if you don’t, the best thing you can do is get started as soon as you can and get into the industry as soon as you can, because that way you get experience. And then from there you can decide whether you want to start switching jobs to get pay raises or if you want to go straight to a FAANG company, which is something that I would recommend.
Harsh Strongman: Interesting you mentioned about switching jobs because I have heard of a phrase before, it’s called VIP, where it’s called vesting in peace.
Sergio: Okay. I haven’t heard that.
Harsh Strongman: The guy is waiting for his stock options to mature. I think I remembered reading about this in Chaos Monkeys by this guy called Antonio Martinez or something. I forget his name. Pretty cool book. So Sergio, if someone had to say teach himself everything they need to know from scratch what do they actually need to know? What is the most important stuff they need to learn, say from a technical perspective, to actually be qualified to work at a FAANG company?
Sergio: So I would say that getting a job at a FAANG company, there are two different skill sets that you need to develop and they are doable. I mean anyone can do this. On the one side you have the hard skills. So you need to learn programming. Usually for the interviews for example, you can pick the programming language you want. Python, it’s a very common choice. You also need to be good at data structures and algorithms. The more senior you are the more you need to know about more advanced computer science, like multithreading and these sort of things. And even for junior positions it’s good if you know about system design. So the thing I mentioned earlier where you need to know how to scale a system and how to make it fault tolerant, and if a computer goes down, what happens, et cetera, so not everything breaks. So that’s one thing. But then the interview process itself, this requires some skills. So this reminds me of 10 or 12 years ago when I was studying to get a certificate in English because I needed it for some Uni-rated stuff. I got the advanced level, so on a scale of six levels, let’s say I got the fifth which was supposed to be advanced. And then I found I was playing basketball and some American guys came and I could not understand anything even though my level was advanced. One thing is preparing for the exam and another thing is learning English or vice versa. One thing is knowing English and well another different thing is passing the exam. So here it’s kind of similar. You can know all these things, but if you want to get the job you need to prepare more stuff. Like your communication skills have to be good, because we are evaluating the way you think and if you stay silent there’s nothing to evaluate and we cannot help you. If you’re starting out with the wrong solution we can help you. So you need to be good at explaining what you’re doing while you’re doing it and how, especially why you’re doing it. You also need to be very fast because you’re going to have to solve one or two problems, depending on the company, in about an hour. And you need to, we can discuss this later how to approach these problems, but come up with more than one solution, analyze it, and then write the code, et cetera. So it’s a challenging environment. Plus you also have behavioral questions. So it’s a skill itself passing the interview.
Harsh Strongman: I see. But say for example there’s a student and he wants to learn the bare minimum at least, so what courses should he take? For example, should he take calculus, discrete math? Can you recommend us, can you tell us what are the topics you need to learn about, and specific so he can like just Google it and look for a resource.
Sergio: Sure. So you would need to learn one programming language. As I said I recommend Python, because for beginners it’s comparatively easy to learn and in an interview setting it’s also good because the syntax is very short. So if you want to write the same function in Python and in Java, let’s say in Java you’re going to need many more lines of code which translates to more time during the interview and you don’t have a lot. So Python is one of the things that you should learn. Also, data structures and algorithms. And there are tons of books out there and even you can find on YouTube playlists.
Harsh Strongman: You have any [Crosstalk:00:11:32]?
Sergio: I’ve got some books that I recommend on my website. They are a bit more math heavy seeing they go through the proofs and all that. But on YouTube you can find lots of [Inaudible:00:11:45] Indian teachers and they will teach you everything you need to know about data structures and algorithms.
Harsh Strongman: So there’s a guy called Tim Roughgarden, who has a pretty good course on Coursera.
Sergio: Yes, the guy from Stanford, a bald guy. Is it him?
Harsh Strongman: Yes, Tim Roughgarden.
Sergio: Yes. I took his course and I liked it a lot. But yes, there will be some Math, you can skip that part if you want.
Harsh Strongman: Is the Math not important?”
- Sergio: No, it’s not that. So I think you have to learn, let’s say in layers. So the first layer is, what is this guy teaching me. Like what is this data structure doing. And then you can go a bit deeper and say okay, why is this better. So maybe you can get an intuition why binary search is better than linear scan, for example. And then you can go another level and then you go into the Math, so why is this better mathematically speaking. The third layer, you can skip it for now. And even in an interview you’re going to need to be able to analyze algorithms. But if you want to learn everything at the same time you’re going to feel overwhelmed and you’re going to quit. So just go level by level first. You understand at a high level what it does, when you use it, when not to use it. And then after you know how to use it and when to use it, then you can dive into the reason why by just going straight to the proof of why a binary search tree has a height that is proportional to the logarithm, that’s not necessary.
Harsh Strongman: So once, say someone has learned taking these courses from Tim Roughgarden or YouTube or wherever, they know what an array is, they what programming is, they know what a graph looks like. How do they actually practice this stuff so that they get good enough for an interview, because it looks like these interviews are really difficult.
Sergio: Yes, so you definitely need to have practice before going to these interviews and there are resources out there. So one very famous book is called Cracking the Coding Interview and the solutions there are written in Java, but yes you can get the idea of how to apply the algorithms anyway. And then there are online platforms that I have used in the past and they are free to use, like HackerRank or LeetCode, where you can write your code. And then normally they have test cases and then you can click submit and it will check that your code returns the output that it’s supposed to return, which is very good. The only drawback of these places is that the quality of the solutions is not always very good. And since they are public you will need to go to the comments section let’s say, find the solution for the programming language that you want and then hope that the guy wrote a good solution and also that the code is understandable. Because the main thing is that these platforms are not only used by people who want to pass programming interviews, they’re also used by people who are preparing for competitive programming. So there are competitions also about these sorts of things, and the code that you write for these competitions is not the same that you would write in an interview or even working because you’re very limited in time. So you need to make sure that you’re not typing extra characters, which makes your code very hard to read because the variables are named like ‘i’, ‘x’, ‘y’, ‘z’. So that, if you do that in an interview you are rejected completely, because that code is not readable.
Harsh Strongman: So for the company it’s more about having a readable code instead of having concise code.
Sergio: Yes. So even for you or for any developer, one of the things that you have to do, and this is something I mentioned in the beginning, is to write code that is easy to read. Because, and there are studies that that show that, most of the time as a developer is going to be spent reading code, not writing code. So you need to make sure that it’s easy to read. And in these competitions you don’t care about readability because it’s code that you only write once and use once and then you throw it and you don’t care. So the incentives there are completely different. You need to write everything as concise as possible. So if you go to LeetCode for example and you try to find solutions, sometimes you will have to spend extra time trying to figure out what the person who wrote the solution wanted to do. And you may end up getting bad habits like those I described, using very short and bad variable names and all that. Other than that these platforms are absolutely what you want to use, because they are free and you can test your code so they are a very good training platform, yes.
Harsh Strongman: I see. Sergio, how do you actually get an interview? Because I would say that a lot of people at one time are trying to get into Google and Facebook and Amazon and Apple and Google, whatever, Netflix. How do you actually get an interview, especially when you don’t have a degree? How do you get a referral?
Sergio: Actually those are very good questions. So I can tell you that these companies are always hiring, normally. So the day I joined Amazon, this was in small city in England, but 24 other people joined the same day and only in the engineering department, so these people are hiring all the time. But what you could do, ideally you get a referral, either from a friend. You can check on LinkedIn who you have in your network that knows someone at these companies or maybe if one of your friends is there. Otherwise, if you don’t have a degree the other thing that you have to do is build up a portfolio. So realistically speaking, it’s a bit hard to get your first job if you have no experience or no degree, to one of these companies. But what you can do, and it’s kind of what I did, is you go to another company to get enough experience so that if you submit your CV they will look at it. And also once you get started in this world of programming, you can start networking, you will meet someone who will be at these companies and this actually is what happened to me, and then they can refer you. So when I was working in the first company doing part-time development, one of my friends there, he got a job at Amazon and then he referred me. So that’s the easiest way. The more experience you have in this industry the easier it’s going to be. And just to give you an idea, on LinkedIn, once you have a few years of experience you may even get contacted by these companies. And after you join one of these companies you’re going to get bombarded by recruiters. It’s going to be crazy the amount of recruiters are going to be DM-ing you, offering you jobs and that’s why I also think it’s a very good idea. But to get the first one you would need to, I would recommend you build a portfolio of projects so that you can get in a company, any company pretty much. There you get more coding experience and also in your CV is going to look like somebody approved you as a developer so that they hired you, they’re paying you to write code, so you know how to write some code. And from there you can try to apply directly or just start working until you find someone who can refer you.
Harsh Strongman: So what kind of projects should someone build? Can you just give us some examples like what does that look like?
Harsh Strongman: So you could make like Twitter without censorship. We don’t delete your account for saying stuff you don’t like.
Sergio: Right, right.
Harsh Strongman: That’s super cool. So what should someone keep in mind for the actual interview process? Because I’ve heard a lot of weird stuff about tech interviews. I know I read Zero to One by Peter Thiel and he mentions that he rejects anyone who comes wearing a suit.
Sergio: Yes, there’s a joke around like, distress any developer who is wearing a suit. So for interviews I mean the dress code is not important. I mean you cannot look like a bum but you can dress informally, and if you want to be completely sure just ask your recruiter or whoever is working in HR with you if they have a dress code. But that part is fine. I mean some of the engineers that I have met in these companies, they were wearing tracksuits and sweat bands and this sort of thing. So they will not look into the way you look. But things are very important during the interviews. As I mentioned earlier you cannot stay silent, because part of the things that we are doing as interviewers is assessing your thinking process and your communication skills. So if you don’t speak there’s no way we can assess what you are thinking. And also, from an interview we have to decide whether we would like to work with you and if it would be a good idea to bring you on board. So these type of things. So someone who is silent in the corner, that person is not going to contribute a lot. So this is something I see and it’s very awkward being in an interview. I mean I have been in an interviewee and I know how stressful it is, but I have also been an interviewer many times and it’s also stressful. And when someone is silent for minutes that’s not good. And also if you start speaking we can help you. So it’s not that we are there to destroy you. We are trying to assess if you would be a good person to bring to our team. So usually people go there, interviewers go there with a positive attitude. So this this one very common mistake that people make.
Harsh Strongman: Yes, definitely. I’ve had the same experience. I’ve interviewed a lot of people back when I was a consultant and some people will just be silent. So you’re trying to assess how they’re thinking. For example if I ask you how many balloons can fill in this room, so I want to know how you’re thinking, I want to know how you are computing the volume of the room, then computing the average volume of a balloon, et cetera. So sometimes people will just think in their head and then try and give you a number, which surely doesn’t tell me anything as an interviewer because I just wanted to see how you think. So I think that’s what you’re trying to get at.
Sergio: Right, yes. So I mean at the end of the day you would have to provide code that works, but it’s also about the process. So that that’s one thing that people do wrong and I completely understand what you’re saying because yes I have experienced that. Another thing from my non-technical perspective let’s say, is asking for feedback at the end. This has happened to me many times, not by email but someone found me on LinkedIn and that person was asking me via LinkedIn how well he did on the interview. Don’t do this. This is very bad. First of all, usually there are company policies that prevent interviewers from doing this. So even if we want to we cannot give you the feedback. So that that is the first thing. But the second is that it gives a very bad impression, because it shows that you have a lot of insecurity and you’re unable to assess how well you did. So those two are very bad. They are kind of red flags. So just don’t ask for feedback at the end. And when you’re at home, or well now with Corona you will do everything online, just get a notebook or something and write your thoughts about that and then a few days later try to think through them and see what you can improve for the next time. But don’t ask for feedback.
Harsh Strongman: That’s very interesting. I never thought about that before. I’ve never actually had someone who asked for feedback after an interview, so that’s new. What are the other common interview mistakes that people make?
Sergio: Yes, so there will be too many to list here but I can give you the main one. Let’s say there are two but they’re super connected, which is just jumping straight to code. So I ask you a question, and then if you go straight to the whiteboard or if you start typing code that’s already a very bad sign. Because these questions, normally they are designed to be vague. So you need to ask questions, ask clarifying questions. So the thing is, if you get a job at one of these companies and you get paid six figures, I can guarantee you that they are not paying you six figures to type fast. They are paying you six figures to think before you type. So when they give you a question, first you need to come up with a high-level solution, like what are the series of steps that I’m going to go through to solve this problem. Then you analyze the solution, like what’s the complexity in terms of space. Like let’s say how long is it going to take for this code to run, how much memory does it need. And then if it’s slow or then you would have to ask the interviewer, is this good enough or maybe there are extra constraints. So if you’re writing code that is supposed to run on a microprocessor for example, the memory is very limited. So maybe you are okay with an algorithm that is slower but it doesn’t use that much memory, so you would have to ask the interviewer, for example. And then once all this is okay, then you go and write the code. And then after you write the code, you start testing the code to make sure you didn’t miss anything. So this are one thing. You have to think first and then you also have to come up with edge cases. Because as I said, these questions are very vague. So if I tell you, for example one question that is very common, write a function that takes two words and then it returns true if the words are anagrams. So an anagram or two words are anagram, if you can take the letters of one word, rearrange them, and then you get the other word. For example, the words dog and God they’re anagrams, because you can change the letters. You can take dog and then you change the ‘d’ and the ‘G’ and you get God. Okay, so it looks like a very simple question. But it’s not. I mean it’s not super well defined. So are two words anagrams if one of them is uppercase and the other one has the same letter but lowercase. What if they contain spaces, or symbols like apostrophes and hyphens and all that. What’s the encoding that you want to use. Is it going to be ASCII only? Because if it’s ASCII only and the letters are all lowercase, you can use simply a list. If it’s not, then you need to use, though it depends on the language, but probably some sort of string class and that means there is more overhead, more memory. So as you can see, and I’m just improvising here, there are many things to discuss before you just start writing the actual code. But all these things, they will make sure for once that you’re solving the problem that you have to solve, because in real condition when they give you a problem you are going to have to think through all these situations. So it’s not something that they make in the interviews just because they are boss, that this is the way you work. You have to think through all the things that can go wrong, et cetera. And yes this shows already attention to detail, which is something you also want. Because as you can imagine, when I was working at Amazon I signed an NDA so I cannot currently reveal how many Alexas were there in the world at that time but it was in the millions, so whatever you do is going to affect a lot of people so you need to pay a lot of attention to everything. And these type of things, this thinking before coding, this already shows that you are paying a lot of attention and this is green flag completely. And missing, this a red flag. So basically it’s almost rejection if you go straight to the board.
Harsh Strongman: I see. I can think of several ways to solve that problem, the one you mentioned about anagrams. Is there like good solution and bad solution? For example, I could say sort the word to become alphabetical and then compare the results, if you get the same result then they’re anagrams. Or we could say count which how many a’s there are, how many b’s that are, how many c’s there are, and then compare if we have the same thing or not. So do we have say bad code and good code that both produce the same solution?
Sergio: Yes. So in this case these two are very good solution to the problem. And here is where the analyzing part comes. Because the first one that you said, sorting, sorting in general is a problem that can be solved in technical terms is if a string has n characters, the complexity is n log n times the logarithm of n. So this is kind of the time, or how the time will scale as you make the string longer. The other way you count, the complexity can be linear, so can be only n. So you can see already that the sorting phase is going to be slower than the other one. But at the same time, if you have to count all the letters this means you need extra memory because you have to count all this. And while you’re sorting in general depending on the algorithm, but in general you don’t need this extra memory. So it’s not that one is bad and the other is good, it’s that there are trade-offs. And this is what I discussed earlier with the microprocessor example. Are we okay with a solution that is slower but consumes less memory or do we want something that is very fast. That’s the thing. You need to discuss this. Without more context, technically you don’t really know which one is the best because you don’t have the other constraints to say this one is better. But this is the way you will go about solving the problem; you come up with one solution, you come up with the other maybe, and then you discuss them. And this is why the communication skills are so important. Because you need to discuss both of them. And then in the end the interviewer may tell you just take this one or the interviewer may tell you just do whatever you believe is best. And then you say okay I’m going to assume that this, this, this and this and then I’m going to do this, and then you write the code.
Harsh Strongman: I see. So it’s about getting all the information out from the interviewer before you actually start coding, because otherwise it could be like you assume something but that’s not the case. So you might think that capital A and small a should be equal, but they might not think the same way.
Sergio: Exactly. You need to know exactly the problem that you are going to solve, not the problem that you are solving. In your mind I mean. You have to make sure that you are aligned with the interviewer.
Harsh Strongman: I see. And you also recommended using Python instead of say a language like C, because you said it has shorter code.
Sergio: Yes. So when I got the job at Amazon I used C++ because at that time I did not know Python. But to create, for example you were mentioning too that one of the approaches was to count the letters. So there is a data structure called hash table, or in Python it’s called dictionary. To create a dictionary in Python it’s literally three characters. So the equal sign and then the curly braces and you close them, and then you put the name value for the variable. In C++ it can be 30 characters easily because you would need to write the types and everything. So if you are short on time this is horrible. Python is very good, just for this it would be very good. And then it also has more syntax that makes things like traversing arrays or this sort of thing very, very compact. So it’s a very good idea to use Python in interviews.
Harsh Strongman: So does it troll the interviewer or you might want to use something like less?
Harsh Strongman: I see. So let’s say that they ask you a question and you can’t solve it, how do you ask for help without making it seem like you don’t know anything?
Sergio: So now at some point you’re going to have to be honest and say, look I’m blocked here. Just try to explain your thought process, because that’s what they call the rubber duck technique. So by explaining it to the interviewer maybe you’ll find out where the problem is so you could get inspired. Otherwise, just try to clearly explain the problem, what you have tried. I mean if you get completely blanked and there is nothing you can say, it’s going to look bad asking for help. But if you have tried a couple of solutions or approaches and they don’t work, just restate them and say I got stuck here at this point because I don’t know if this or that is correct. What happens many times also is that you will be nervous, you will be thinking about the correct solution, but the interviewer has seen that question a million times. So they know that the path you’re taking whether it’s right or wrong. And if they know that you are going through the wrong path they will tell you hey, what if you tried this or that. So they might not overtly say this is completely wrong. They will say what if you try this or what about this or what about that. So they are usually kind of proactive. They see if you are stuck, they will try to help you.
Harsh Strongman: I see. So they are not like trying to mess you up like they do in finance. They’re helpful.
Sergio: I mean 99% of the people I have seen intervene, they are very nice and they try to help you. Of course there are psychopaths out there, but they are everywhere, but it’s unlikely that you will find one of those. And if you find them I mean there’s literally nothing you can do. I can tell you that I know people who wouldn’t hire people in their own teams, because some people enjoy torturing others, for some reason I don’t know they enjoy doing this. But it’s highly unlikely that you will face one of these engineers. In general, people are very nice.
Harsh Strongman: I see. In my own education of computer science I noticed that most problems are actually not that difficult to solve. There seems to be like a small set of say, algorithms and ways to solve a problem, and once you get the hang of them all you can solve almost every problem with ease. So for example, efficient sorting, backtracking and things of that sort. I know that you have a book that’s out Zero to Code and I read a version of it before it was published and I see that you cover quite a bit of that in your book, say backtracking and things like that.
Sergio: Yes. So in this book what I have is the programming concept, so that you can see the same thing from different levels. So you were talking about algorithms and backtracking and all that as patterns, let’s say. In this book I have covered the same for programming languages. So people usually spend a lot of time asking what’s the best language that I can learn, how should I do this, and how should they go about that, what if I learn the wrong language, and that sort of thing. That is basically nonsense. There are many patterns that are common or concepts that are common to all languages. And in my book I have compiled them and then I have shown you how to write that particular, let’s say idea or concept, like a function or variables, loops, iterations, all this, in Python. And also I have code snippets in other languages. So that you will see that once you understand the idea, the actual way of typing it so that a computer understands it, it’s not that different and then from there you can build more advanced stuff. What you were saying about backtracking is something that I have in mind for a more advanced project. Now I have something in my website that is kind of a summary of what I want to build next. But yes, once you learn for example about backtracking, if you understand the idea that at every step in the algorithm you have some choices and then for every choice you make you will face more choices and if you run out of choices you have to go back, this is kind of the high-level pattern. You can solve a lot of problems, like from sudokus to more advanced stuff, and by learning this sort of high-level patterns you can just combine them to solve a lot of problems. But then the idea itself, so this I was thinking when you were asking this question, I studied aerospace engineering which sounds like something very hard and I’m not saying it’s not, but you get to study many different branches of sciences, like physics, aerodynamics, fluid dynamics, also a lot of Math. And you see that many solutions, conceptually they’re very simple. So I remember that I was kind of disappointed when I was at University and I was saying this is super simple, how come we’re thinking that it is so hard. But yes of course then implementing it and doing that, it’s hard. But the concept itself, and it’s the same in many programming concepts, they’re very simple.
Harsh Strongman: Yes. Actually a lot of tech, what looks difficult is really simple and sometimes things that look really simple are really complicated. For example, a rocket is not that complex to build. It’s just like a way of burning fuel and then propelling it upwards.
Sergio: I mean I could say it’s quite tough. I have a degree in that. There are two things on that that we would need to discuss. So there is, I don’t know if there are terms out there for these, but I call it natural complexity and then artificial complexity. So natural complexity would be in the example of the rocket. I mean you’re putting I think on a different planet or satellite, wherever, that’s complex. But on top of that, it’s the way you go about it. You can make it more complex than it is. Then for coding it’s the same. So some concepts are complex, like some algorithms are harder to understand than others, but then the implementation can make it much harder. And for some reason some developers, not all of them, they somehow are proud of coming up with complex solutions where the real challenge and the real genius is in finding a simple solution to a hard problem. That’s the magic. And to a certain degree sometimes it’s hard to pull those two apart, like the natural complexity of the thing that you’re dealing with and then all the extra complexity that for some reason people are adding into it like, whoa this code is so smart and then in three months you look back to it and you don’t remember anything and you have to rewrite it because it’s a mess.
Harsh Strongman: It’s a form of virtue signaling, isn’t it. Well look how smart I am, handling this complex shit.
Sergio: Yes. Or creating that. That’s coming back to the first question you asked me, what do these companies look for. They don’t care about how complex your solution is. And even you as a customer like when you turn on Netflix or anything, you don’t ask yourself I wonder in which programming language they wrote this. You don’t care. It doesn’t matter how complex the solution is or how easy. It only matters that you’re providing the value. So some people, I mean it’s understandable, it’s an ego battlefield out there in the tech industry sometimes, like many other industries, but some people take pride in complex solutions for any problem, even if it’s for a simple problem. The real skills come when you can solve something very hard in a very simple way. That’s where the real skills are and that’s very hard to achieve.
Harsh Strongman: I see. So for all this, how much can you actually expect to be paid? For like say a FAANG job? Let’s say you just join and after a couple of years how much would your average compensation look like?
Sergio: This, this really depends on the country. Your compensation is going to be top no matter where you are, so that’s for sure. In the US for example I know a guy with a couple of years of experience who got a total compensation, so this will be base salary, plus signing bonus, plus stock, plus any other bonuses he had, of $300,000.00 per year. In Seattle. And I know that Facebook and other companies are famous for paying even more. So this depends. If you move to Europe for example their salaries are not that high, but the compensation is top. And I don’t know how this could look like in India but I can tell you that, even especially the longer you stay there you get more stock and then if the stock tends to go up you can get very, very good money. So money wise, it’s a good choice.
Harsh Strongman: I see. What do you think of companies that have been around for a while that are not typically thought of as sexy FAANG companies, like say Oracle and things like that, the older generation of tech companies.
Sergio: These are fine. I tend to, one of the ways in the past that I have looked at these companies sort of heuristic, is where are people moving to and from where they’re coming from. So I tend to meet people who go from let’s say Oracle to eBay or Amazon, more people go that way than the other way. It could be just that they are in vogue right now and everyone wants to join a FAANG and it’s not fashionable anymore. It’s that the technologies are older, maybe the code is messier, I don’t know, I haven’t looked at it. But I mean this could even be something positive in that, if not that many people are applying it could be easier to get a job. So for example, a friend of mine, I’ve been coaching him for some time and he got a job, a job offer from Amazon. He rejected it because his current job when he went back to his manager he got a counteroffer, so now he’s passing the six figures in Europe, which is another common. But he had been applying to other places and one of the places is Oracle and he said that the interview process was extremely easy compared to the interview process at Amazon. So maybe the fact that they are not so popular, it’s good for you if you don’t have a lot of experience because you can join them and then from there just jump to other companies.
Harsh Strongman: I see. So in your opinion, is working at these FAANG companies actually worth it or not? I’ve heard that these guys work 19/20 hours per day. I don’t know how true it is. I’ve also heard that if you can’t get promoted at Facebook say every two years they fire you. So it seems like a very hectic work environment. Is that true or is it like a myth?
Sergio: I guess it maybe depends on the country and the company. I never had this impression at Amazon. People were not working longer hours than a different company. And I know that we’re myths of AWS developers going to the bathroom to cry. I don’t know, I’ve never met any. And this was kind of a joke there in our team. I don’t know. I think, so if you were to put it this way, if I had a son now and if he was like 20 would I recommend him to go to one of these companies? Yes, absolutely. So it will give you great compensation. I just mentioned at the beginning, great working environment, smart people, so you will network also. And then it is going to be very good, something very good to have in your city. So it’s definitely recommended. Then from there what people usually do is every two/three years, they jump to another of those companies and then they get a 15/20/25% raise or even more, depends. And then some people go to smaller companies, startups, or just plainly smaller than, I mean Amazon is huge and Facebook is the same. So they go to smaller companies where they have more freedom to do whatever they want because these bigger companies they are heavy in processes normally. And then in smaller companies you have more responsibility, whatever you do has more impact in that way. But I do think that doing a lot of stuff that you don’t even want to do, because in a small company there are fewer people and they have to do all the work. So some people like it others don’t like it that much. So you may end up learning faster. The pay usually may be not as good, but if you’re super lucky and you land in a unicorn then the stock may make you very rich but it’s unlikely to happen. If you go to one of the big companies you know that your work has impact because Alexa has millions of users. Facebook and Google they have billions of users, so potentially everything you do has a huge impact.
Harsh Strongman: Was that Alexa in the background?
Sergio: Yes, sorry. That was my Alexa. Now Amazon knows everything that we’ve been talking about. Yes, so as I was saying, big companies they have those pluses so it’s already like a very well-known place and people will like you and it’s like a seal of approval. Small companies, you will do a lot of stuff. It’s also easier to get. But unless you’ve landed on a unicorn, then I think it makes more sense, or you really, really like the work here, to try to get at least once one of those companies on your CV.
Harsh Strongman: I see. Now that Alexa came up, this is something I’ve been meaning to ask you from a long time. But you’ve been developing Alexa for a while and tell me, like blink twice if you can’t answer this question, but is Alexa spying on us or not?
Sergio: I mean I left there a couple of years ago so until back then, no. The way Alexa works, and I hope it will not wake up again, is that there is a system that technically it’s listening to everything you say continuously. But that system is not, even if you disconnect Alexa from the Internet that is working, because the only thing that the system does is wait for the wake word. So that word is the one that activates Alexa. Then when it has a blue ring everything you hear it will be sent to Amazon. But as a developer there I can tell you that I was not aware of a system that is continuously listening to everything you say and storing it and analyzing it. No. The way it works is, even if you unplug it, it will listen for that word and then when it hears the word it will activate, hear what you have to say and send the mp3 to Amazon and then they do whatever they have to do.
Harsh Strongman: That’s interesting. So it’s not constantly sending data to Amazon and just listening for one word and once it’s activated then it sends data.
Sergio: Exactly. A different thing is that it may hear something, so there are three wake words: Alexa, echo, and computer, so if you say something that is similar or if you’re playing something on your TV and someone says something similar to Alexa it will wake up. And then whatever you will say it will be sent to Amazon. That’s different. But no. By default it’s only waiting for that word and then it starts recording and sending information.
Harsh Strongman: I think this can be verified as well, right? You can have like a packet monitor and connect it between the Internet and Alexa and then see what is actually going through.
Sergio: You could try that. But I can tell you I was on the other side and I could verify that the only things that people were sending were what they wanted to send. Unless they have like a secret silo of developers and they have access to something I didn’t have access. No, you don’t need to be worried about this. Unless, as I said before, it hears something that is similar to the wake words and then it starts recording because it thinks that you said the wake word.
Harsh Strongman: S I had an Alexa for one week. I got it as a gift from someone. And the main, I found myself basically using Alexa for like fun, like asking Alexa to suck my dick and things like that, to see how it would respond. I bet that’s the biggest search query on Alexa.
Sergio: Yes, yes, you’re not the only one.
Harsh Strongman: It’s a funny device. But then I removed it because I just don’t trust Amazon enough. I just don’t. Maybe it doesn’t record me now but who knows, five years from now Jeff Bezos wants to figure out what I’m doing and then he’s just like. Maybe, I don’t know.
Sergio: I think for now, yes of course everything you send to Amazon is going to be linked to, so Alexa is linked to your Amazon account. Therefore if you start talking about, I don’t know, some type of music let’s say, when you go to amazon.com you are likely to see ads related to this. Others than this right now I don’t think they are doing, as you said maybe in five years, who knows. But if they try to make something it’s going to be related to make more money out of you or they’re selling you on Amazon. Or maybe one day, I don’t know, they will have ads on the actual platform. Like now you have ads on YouTube, maybe you talk to Alexa one day and they will reply with an ad somewhere in between the answer at some point.
Harsh Strongman: That would suck.
Sergio: Yes, that would really suck.
Harsh Strongman: What does a job at Amazon, all these FAANG companies actually look like? Are you coding all day? What is the experience like? What does the work involve?
Sergio: Usually in the morning you have stand-up, so it’s a meeting where everyone stands up and then you go about the things that you have been working on, usually that day or either what you did the previous day or what you’re going to do that day. This is a common practice in the industry so that people, if you get stuck they can help you or if there are updates you’ll know exactly what’s going on. And then usually there are many meetings. Coding is a big chunk of what you do but it’s not everything. Because as I said, when you have to design a big project you need to first in advance gather all the requirements, you need to decide it’s basically like an interview question but on the real work. You have to come up with different solutions, you have to write a document. So at Amazon it’s very well known that before any big project or relatively big project you need to write a document with all their requirements and the different approaches you took and the pros and cons of each. So this can take you a while and I’m talking about like days. And then you need to set up a meeting with the rest of the team. You go about it, you discuss it, maybe you bring people from other teams, so you have to talk to people from other teams a lot. And then this can go for a few rounds and then when everyone is happy, if you’re leading the project you break all these decisions into small tasks and then either you do these tasks or you pass them to other engineers, usually more junior engineers, and then it’s when you write the code. But then it’s the same because it’s kind of the same thing at a smaller scale. You have the task, you need to figure out a solution. For a simple tasks you don’t need to write a design document, but still you have to write the code. You have to write tests, because if you don’t write tests they will not accept your changes, they are very strict about it usually. The people in your teams are going through like this. And then you have to wait for other people to review your changes there to make sure you didn’t do something wrong and then the changes will be merged and eventually people will be able to use it on Alexa. You will also have to review other people’s changes. So it’s a lot of reading and writing and then writing code of course. But it has this human aspect, that people think that developers don’t talk a lot. You need to talk to a bunch of different people. Even if it’s just to gather all the requirements, you have to talk to all the people. It’s a fun job.
Harsh Strongman: Interesting. Yes, I would not expect that. One would think it’s just sitting on your computer and coding all day, but looks like there are more human elements to it.
Sergio: Yes. And as I said coding is only one part of this. They don’t pay you to type, or they don’t pay you to type fast, they pay you to think. And then once you have the solution then you type it, so it’s just one part of the process.
Harsh Strongman: Overall this has been a super insightful conversation, Sergio. I’ve learned quite a bit from you and I hope it’s been super insightful for everyone listening as well. Is there something I missed though, something that people should know before they try to get a job at FAANG or have you covered at all?
Sergio: No, I think those are the fundamentals and I would say people should focus on those before trying to move to more advanced stuff. So like learning the fundamentals of programming, data structures, computer science, et cetera, and then the strategy to get the job. And that’s it and just practice.
Harsh Strongman: I think the best starting resource would be your book, right? Because I read the book in its entirety before you released it and it was super interesting and I’m someone who is almost through with a computer science degree. And even for me it was, when I learned everything was up and down, I was looking for the right resources here and there. And sometimes I would figure out that to do one course I need to do like two prerequisites. Your book kind of tells people what roadmap to take and it basically teaches everyone the basics.
Sergio: Yes, exactly. So I know how tough learning to code is and also getting a job in a FAANG Company, especially if you have to do everything on your own. Because as you said there’s a lot of material out there, you don’t know where to start, you feel overwhelmed. And I know this because this happened to me a few years ago. So in the book I have compiled everything I learned in those more than 10 years that I have in programming and from the perspective of someone who is learning programming, and also from the perspective of someone who’s teaching programming because I have helped a lot of people. So you will learn the fundamentals of programming, you will learn a lot of Python, data structures, algorithms, databases, how to write clean code, how to test the code. And then I have a series of bonuses, where I teach you how to get started in all the different main specializations. So I mentioned for example front end at the beginning with HTML, CSS, but I also have backend, mobile development, blockchain of course. And then how to build your portfolio to get your first job, how to get promoted, because we haven’t discussed like how to get the big pay jumps which really come from promotions. And in the book you can see how to do all these plus more details for FAANG-specific preparation.
Harsh Strongman: Are you going to change the name to MAANG now because Facebook is now meta?
Sergio: Maybe if they’re stuck. Yes, if they change the stock tick it will be MAANG now.
Harsh Strongman: I hear Netflix’s stock is on a decline so maybe it will be out, maybe we’ll just have AAG or MAG.
Sergio: I think everything is down now so probably they will keep it anyway.
Harsh Strongman: I see. All right Sergio, where can people find you on the Internet?
Sergio: My blog is yourcodingteacher.com.
Harsh Strongman: See, he’s working so hard on teachyourselfcrypo.com that he’s forgotten his own blog name.
Sergio: Yes, yes, definitely. I have been working on the privacy coins block for a while now, so yes it came to my mind.
Harsh Strongman: It’s going to be released in a week for people who are interested in learning. Go ahead. Sorry for cutting you off.
Sergio: Yes, I know. Absolutely. So before the end of the month you will have it out. So my blog is yourcodingteacher.com and then you can also find me on Twitter and the hashtag is @coding languages.
Harsh Strongman: Are you on Instagram, Telegram, anywhere else?
Sergio: Yes, you can find me also on Instagram. It’s @coding languages. That account I must say, to be honest, is completely automated so I don’t touch it and it’s a clone of my Twitter account. Maybe one day I will explain how I do it because it’s pretty cool from a technical perspective. You just take screenshots, it posts them every now and then, so pretty cool. And also I have a Telegram channel. So if you go to my Twitter account you can find links to all these resources.
Harsh Strongman: All right, Sergio. So great conversation. I learned a lot. Thank you so much for being on the show and have a great day, Sergio. We’ll see you, maybe in a future episode where we talk about how to get promoted or things like that.
Sergio: Sure, it was very fun. Thank you for having me. Have a good day.
Harsh Strongman: Bye-bye.