[0:00]Hey everyone, it's Vu again. As you may know, I'm a senior staff engineer at Snapchat and today I'm going to be talking about three very critical things that you should know as a software engineer that they don't necessarily teach you in school.
[0:13]And I'll also be talking about ways you can kind of circumvent this. So, let's get started.
[0:21]So, the first thing that school doesn't teach you is how to learn on your own.
[0:25]A majority of your career after you get your first job is going to be basically learning on your own.
[0:32]The reason why that is is, you know, tech moves very, very fast. The really important frameworks of tomorrow aren't necessarily going to exist today, right?
[0:40]So, if you look at the really popular frameworks, for example, like something like React or even Swift, like 10 years ago, they didn't exist, right?
[0:47]So, everybody that does it today that is still working, uh, they essentially had to read a book or, uh, read a tutorial or watch a YouTube videos on their own to build up their this, this knowledge.
[0:57]You also have to realize that in large tech companies themselves, uh, there's a lot of proprietary, uh, technology, right?
[1:04]So, you actually might be in this situation where you're learning by reading 10-year-old code that's not well documented and you have to understand exactly what it does.
[1:13]School doesn't necessarily prepare you for this. School is rather rigid.
[1:18]Uh, the typical system is, you attend a lecture, you read a textbook, and then you get examined on it after doing some practicals and stuff like that.
[1:27]The real world doesn't really necessarily look that way and the one size fits all model, uh, isn't really representative of, um, you know, the real world.
[1:35]I think one of the most important things for you to learn is to understand how you personally best learn.
[1:41]So there are people out there that learn better through, you know, audio, some people learn better through visual, some people learn better through, you know, text and stuff like that.
[1:50]You should learn what, uh, works best for you because it's a very deeply personal thing.
[1:54]If you're somebody that greatly benefits from this rigid structure of school and then you, uh, join your first job and then that rigidity, that structure falls apart and then you fall apart, right?
[2:07]Um, you should be able to, uh, self-teach. You should be able to, uh, read documentation, read APIs, read through code and be able to understand exactly what it does.
[2:18]If you don't already have these skills, I would definitely implore you to really focus on, uh, doing, uh, side projects.
[2:24]I think that's why side projects are super important and why a lot of end managers actually look, uh, for side projects and links to your GitHub repo, uh, for your first job.
[2:34]It really teaches you a lot. It really tests your ability to go out there in the world, uh, look through, uh, real world, um, code and examples and then being able to apply that knowledge.
[2:44]I think the second most important thing that school doesn't teach you is how to question your constraints.
[2:50]So, as you progress through your career, um, the more important it is for you to actually question your constraints, right?
[2:57]So, if you're a junior engineer and then somebody tells you to to do something, typically you probably don't question it too super much.
[3:05]You don't really ask like, oh, why should I be doing this, right?
[3:08]Is this really the best use of my time, but as you progress through your career, I would argue that your job predominantly becomes questioning your constraints.
[3:15]So what do I mean by that? I think when somebody hits senior engineer and definitely at staff and senior staff, a large majority of their job, um, comes from looking at current implementations and solution and really questioning whether if that's the best way to do it.
[3:32]Uh, whether that's the best, uh, implementation proposed, whether that's the best like frameworks and and and everything like that.
[3:39]That's what you're essentially getting paid for. You're getting paid for asking the right questions and then leading the team through excellence.
[3:45]The problem is school basically teaches you the opposite of this.
[3:49]When a teacher or professor gives you an assignment, uh, you're not going to be asking the professor, why am I doing this? Why is this a good idea?
[3:57]Um, you just do it. And I think this creates the bad habit later on when you're a software engineer, um, that when your your TL, your team lead or your manager, uh, asks you to do something in a particular way, you don't stop to think, is this the best way I can be doing this? How can I be doing this better, but you just do it.
[4:14]When you don't, um, work your brain to think critically, that's going to significantly hamper, uh, the growth and development of your career.
[4:22]I think the best way to train your muscles in order to overcome this is to actually participate in open source.
[4:29]So make some projects, put it up there, get some feedback for yourself of people criticizing you and then try to do it in the reverse as well.
[4:37]Try to look at open source projects, read through the code, try to be critical of it, try to find errors in in the code and then try to create, um, you know, PR's if you can against those, um, repositories.
[4:49]I think by doing this, you're going to significantly help train your own ability to think critically in the future.
[4:54]The last thing that I think school doesn't teach you, which is probably one of the most important things is, uh, the importance of English in school.
[5:02]I would say one of the most impactful classes that I took in school was critical writing, uh, in English, right?
[5:09]And I'm not even saying like of non CS courses, I'm saying most impactful period.
[5:15]The reason why I think it's so important is, I don't think many people realize that the job of an engineering is is not just coding, right?
[5:22]In the beginning when you're just an IC, independent contributor, a lot of it is coding for sure.
[5:28]Um, but as you progress more towards your career in like leadership in as a senior engineer, as a TL, uh, and especially as an engineering manager,
[5:40]most of your time is actually going to be spent reading and writing documentation.
[5:46]There's going to be a lot of times where you're going to have to architect something and then you're going to have to write a technical document, uh, outlining how exactly you're going to do something.
[5:54]So that involves a lot of English up front, but then people are going to poke holes into your your, um, your document.
[6:01]A lot of these more senior engineers, tech leads, right, um, that are trying to question the constraints, um, they're going to put comments on there.
[6:06]They're going to ask like, you know, why are you doing it this way? Why don't you try to do it this way?
[6:11]And a lot of that part then will be about understanding their argument and then being able to convey a counter argument, right?
[6:20]So, let's say you're making the proposal to build this thing using Dynamo DB and then somebody's asking, oh, why don't you use big table and stuff like that and then just being able to convey effectively the points as to why your decision is the correct one is going to be a significant portion of, of your career.
[6:37]Another place where English is super important is actually in getting promoted, right?
[6:43]So, if you're working at Google or Facebook, for example, in order to get promoted, what you essentially have to do is to write a large doc called a promo document.
[6:51]A promo document essentially just lays out all the technical things that you've done in an orderly fashion and then talks about your impact and essentially justification of why you should get promoted to the next level.
[7:07]When I say mastery of English, I don't necessarily mean that if English is your second language, you're going to be at a disadvantage or anything like that.
[7:15]I think the important thing to understand is the skill about how to convey an argument concisely in written text.
[7:22]It doesn't necessarily matter that your grammar is all over the place or anything like that as long as it's not like super distracting or anything.
[7:29]It's about forming concise arguments and making a point and being able to convince people of your point.
[7:38]That is a super important skill and the better you are at that, the more you can prepare for that, the faster your career trajectory is going to be, the faster you're going to get promoted and the more effective engineer you're going to be, period.
[7:48]I know a lot of these CS schools out there require general electives and so if you haven't already, I would really implore you when you when you take them, don't look into the standard STEM fields and just do another engineering course or something like that.
[8:00]I would really try to focus your time on taking critical writing in English or even look towards philosophy or even join a debate class or something like that.
[8:12]Being able to again, get up there and present your ideas that is bulletproof is going to significantly help you in your career.
[8:21]Uh, start now, do it in school. So anyways, that's the video.
[8:24]And as always, if you found any of this useful at all, hit the like button and please subscribe to the channel. I'll be making more videos like this and it definitely helps me out.
[8:31]Um, as always, uh, be super well and good luck.



