Full transcript of “No BS Advice for Software Engineers”. Click a timestamp to open the video at that moment. Need another video? Use the YouTube transcript generator.
0:00 this video is going to be everything you need to succeed in software this is going to be a summary of everything I've learned in the last 10 years of my career working in tech software engineering and creating content here on YouTube for now over 10 years so we're going to start off with the most important one and this is really to start talking about your mindset you might think skill and career development is the most important thing but the mindset is the foundation for all of it so the most important thing here is to have a desire to get better so if you're interviewing for software engineering roles and they do not get the impression that you have a desire to get better then bringing you into the team is a more risky move because now they can only judge your abilities based off of your skill and even if you're very good at skill meaning you can develop you're
0:47 really good at the technical interviews you know how to build products but you don't have the desire to make things better and constantly improve then you're going to really slow down the progress of the team so this in my opinion is the most important thing you might be overwhelmed with all of the technical skills and all the stuff you have to do to prepare for interviews but the foundation for all of it is a desire to do those things and get better if you have that you're already most of the way there now we're going to talk about skill so we're not just going to say oh the skill is not important that is huge and that's some of the stuff we're going to talk about in this video but I just want to set the foundation if you're always in the state of wanting to get better you're going to get better much quicker and have a much better time in this journey so for example I have gotten job offers where I'm working working in a new stack so all new tech
1:32 that I'm not familiar with and also completely new Industries so brand new domain knowledge that I have to learn all about from the outside if somebody's brand new to the technology and they have no idea how the industry Works they would seem like a pretty bad hire but in the interviews that people have had with me I make it very clear that I have a strong desire to conquer both of these things and that these are not going to slow me down and I might actually be a better hire than somebody who does have some experience in these but they're stagnant in their progress so basically saying hey I'm willing to invest in conquering these things I'm not going to let my lack of knowledge on the technology or lack of knowledge on the industry Slow Me Down in fact I'm going to put in the extra work to make sure I understand these
2:19 things and in exchange you give me an opportunity that hey maybe at first glance I'm not a 100% perfect fit for that position but I'm compensating with desire and a try TR that I'm going to be able to figure these things out because I have all of the core software engineering skills and abilities so really these are just implementation details I've built experience in other stacks and in other Industries without any issue so what does that mean practically it means that I go into new projects with a very high level of confidence that I'm going to be able to do whatever it is that is asked of me even if I don't know the answer right away I'm very resourceful to either do the research to figure it out find somebody who does know how to do it and ultimately I've convinced myself that I can do anything that I set my mind to so
3:04 with that Foundation always wanting to improve how do you actually do that well this comes down to confidence and ego and these are two words that feel similar but I want to talk about how they're different so confidence is what you want to have a lot of but most people have low confidence this means they're unwilling to go out of their comfort zone they're unwilling to propose new solutions they have not convinced themselves that they can solve certain problems or achieve certain results and as a result they can't give that confidence to potential employers customers whatever it might be however the problem is a lot of people have really big Egos and an ego will prevent you from getting better because you're unwilling to ask questions that might make you look dumb or you're unwilling to admit that you don't know
3:50 the answer to something so this is the typical way people go about life they have a very low level of confidence they struggle with things like impostor syndrome but they have such a high ego that they're unwilling to ask for help or actually admit that they need something outside of themselves to get better whether that's help from someone else or doing additional research whatever it might be so what I suggest is actually trying to flip these so bring your confidence High believe in yourself that you can achieve results you can learn what you need to do and you do have the ability to propose alternative Solutions or ideas and that's fine maybe those ideas are bad or maybe they get shut down but that's fine because you generally have a low ego I'm
4:36 totally comfortable being the dumbest person in the room I usually am and I'm okay asking a question that makes me feel stupid because I know that's the fastest way to learn and the thing is if you do that enough eventually you're not asking dumb questions because you've learned more than most people where they're not asking those dumb questions they're unwilling to put themselves out of their comfort zone because their ego's too high they're worried they might look stupid or something like that software engineering is a career of learning and Discovery if you're going to be getting into software engineering you're constantly going to be learning new things and finding that you don't know the answer to a lot of these questions you might have so when you're building software it's a matter of continually working through problems and finding the answer to different challenges that being said the upkeep to
5:21 basically continue learning and staying up to- dat with the industry is not a full-time effort there might be some initial effort of front to become good at software development learn different Technologies out there and different programming principles but once you have that stuff locked in you're not going to have to continually study fulltime to be able to stay up to date with technology I think people assume you're going to have to spend eight hours a day for the rest of Eternity just learning new stuff when I tell people that hey I believe you can keep up with technology with an hour a day if you stay focused these are just some example numbers and we'll get into this idea in more detail here soon but the idea behind this is that you invest an initial upfront amount of time and effort to learn the skills but once
6:08 you have those you can stay up toate and continually learn new skills with a relatively low amount of effort per day you don't have to learn everything and in fact I tell people do not learn everything because software is infinitely vast there's unlimited programming languages and Technology IES and Cloud providers and just different approaches to developing you'll never learn everything so if you try to learn everything you're probably not going to be very effective in your studies so instead of spending all of your time just learning use really focus time to learn and learn the stuff that actually matters for progress in what you're trying to achieve you can think of learning similar to how you develop
6:54 software you might have an initial commit of code then you make some changes is you continue you make some changes and this process goes on indefinitely so you can look at this as change to some software over time and if you want to look at any point in time what that software is doing you usually don't just look at the full snapshot of the software instead you compare so you get the diff between these two points in time because there might just be a really small change you know let's say we just add 30 lines of code you don't necessarily need need to know all the other thousands of lines of code to understand that change this is the same way I like to approach the learning so this is your starting knowledge and then
7:39 let's say you learn some language we'll just say hey we spend some time we learned python great way to get started lots of people start with python but later down the road you need to learn something else maybe you need to learn JavaScript the language here is not that important the point here is that you know you have to go from one language to another language well instead of just having the full language basically memorized in your brain you can actually focus on what are the differences between these if we just focus on the differences then we basically have a language we think in and then a language that's different in a few different ways that's why people say it's quite difficult to learn your first programming language but learning the next programming language is a lot
8:25 easier because you have things to compare it against and as a result the initial effort to learn is quite high but then as you get better the amount of time you have to spend learning becomes less because you've built such a strong Foundation of things to compare against that learning new material is quite easy so for example you might learn about some new database and think oh hey this is actually really similar to this other database I use in terms of how it structures data the only difference is blank where that blank is the key thing that helps you learn much quicker so that's really an overview of my approach to mind set in learning there is a ton more to that but I think the biggest thing again is having a desire to learn and get better and then ultimately consistently getting better over time it takes time to learn new ideas but once
9:12 you have them locked in pretty well learning new ideas that are relatively similar is not a huge lift so you can get better a lot quicker as you get better so again the effort might look like this but the results might look like this where as you get better you can get more and more result results but the effort to get those results goes down so now let's talk about a very important thing which is skill development yes mindset is the foundation it's critical but if you have all the mindset in the world but you don't know how to develop or build anything you're not going to get very far let's first talk about consistent efforts so I mentioned briefly the idea of instead of studying for 8 hours a day just studying for 1 hour a day and on the surface this might be like what why would 1 hour a day be more effective than studying 8 hours a day and at first
9:58 this might not make sense like oh yeah 1 hour a day is going to be more effective than 8 hours a day yeah sure well 8 hours a day might get you more total output but the result per hour of 1 hour per day is going to be much higher so again with these graphs let's say this is time and we'll say this is progress each hour of the day the amount of progress you make starts to decline so by the end of the day you've already put in a full day of studying you're not going to get as much out in terms of progress for each hour you invest the most valuable is that first hour or you know the first 2 hours 3 hours whatever it might be so for me it's better to do less hours and do it more frequently you could follow the
10:44 same principle with more time per day but I think a very important first step is to set a minimum you can say hey I'm going to study for 1 hour per day minimum you can always do more but we're going to hit at least an hour this translates to 365 hours in a year of studying which is the equivalent of n weeks of full-time work that's a substantial amount of time plus every single one of those hours that you're investing is very high focus you're going to get really really good results now when I tell people this I'm usually talking about the minimum amount of time you should put into your goals per day but you can do more most people do have more than just an hour available
11:31 but even if you have multiple hours per day I typically recommend that you'll do an hour of a certain thing per day so we have 1 hour per day I like to invest this in something that I want to get better at over time but doesn't have an immediate effect on my day-to-day work so I'll give you some examples this could be data structures and algorithms it could be system design it could be new technology so basically spending one hour per day trying some new tech that you haven't tried before doesn't have to be new to the world but it could just be new to you it could be Advanced topics maybe there are certain things you've always kind of wanted to know but you've just avoided it and you've never really
12:16 needed it for your day-to-day work you know maybe that's asynchronous programming for example or you've always wanted to learn how realtime applications work basically going deeper in your studies for that hour you could also take this IDE and do things other than coding so for example it could be networking but generally I don't recommend you do all of these like one hour for each of these I would just pick one or two so maybe you say hey every day I'm going to spend an hour studying system design and I'm going to spend an hour networking to me this is a solid strategy it takes two hours a day but you're going to get really really good results over time if you ever get a chance to talk to a really good software developer it seems like they just know more things than know how to solve problems they're just better and they're
13:02 better because they've experienced a lot of problems they've built a lot of solutions and they just have a much stronger skill set doing this is like investing because you spend the hour now but in the long run it's going to save you hours of effort because you're a better developer in general I've followed this strategy for a lot of periods in my life I've never been perfect 1 hour a day for my entire life but there are certain periods of my life where I've applied this this 1 hour a day to a certain topic and I can tell you just from experience it's one of the most effective ways to get better so I'll go through a few examples where I've applied this and it has been very helpful to me the first one in college I spent an hour a day before classes started studying the C programming language why I don't know I had one
13:49 class that used some C it really didn't get in a ton of depth but I wanted to go deeper and just have that really solid foundation for software engineering so what I did is I picked up a book on C programming and I worked through the exercises in that book every single morning for an hour and the book was a little intimidating at first but turns out I actually finished the book that's crazy because you know up until that point I would just kind of like you know work on something for a little bit jump to some new topic and I never really go deep enough to get better well that book helped build the foundation for some of my programming abilities especially taking what I learned from the book and applying it so I would actually code out the examples and from that was birthed my C programming course here on YouTube which you know has been one of my more
14:35 popular topics lots of people have benefited from that because I put in that effort for people there's really no excuse to not be able to do this one hour a day thing and that's why I like it it's a small enough time that most people can fit it in their day and even if you couldn't you could do 30 minutes and still get a lot of the same benefits but yeah I was able to put in an hour a day I was a full-time student I also worked so no excuses here you just have to find the time to make it happen I continued this idea and during work when I was working full-time I was at IBM doing some stuff that really had nothing to do with C programming but I spent a lot of my time studying C programming trying to get that hour a day I was a little bit less consistent but I knew that learning that
15:22 material helped me be just better even if it wasn't something that was due that day it was a skill that I was building to just become a better developer a better technical person studying new topics learning new challenging things and being exposed to new ideas so I bet you many of you watching this if you have a job there might be some opportunity to squeeze in some study time whether that's on the clock or during lunch break you'd be surprised that a lot of companies actually support their employees doing General studying and upskilling you should try to do that if you can then you don't have to take an additional hour out of your day you can just squeeze it in during during your lunch break or during work hours right now I'm doing this with system design if you've been watching my videos lately you probably have noticed I've posted a lot of system design topics and
16:09 this is all based off of studying the topic for an hour a day for me that's working through some books and some specific websites that I found very helpful implementing some of these ideas in AWS or trying to go a little bit deeper and studying some of the white papers for some of the different system design ideas so for example spending an hour of your day studying the Cassandra database how that works how that's different than some of the other databases out there hey maybe I'll even try to set up an instance of it see how that works what topic you focus on I would say that really depends on where you are in your journey if you're a beginner it might just be spending an hour studying new programming principles if a lot of programming topics are still brand new to you then yeah just spend that hour to get better at these different programming Concepts you may have not used before become familiar
16:55 with things like generics or templates maybe try functional programming being comfortable with recursion understanding different design patterns understanding different data types and how they're different understanding different bases for numbers you know binary versus octal versus heximal versus plain old decimal what does all that mean these are just some different topic ideas if all of that sounds really comfortable and familiar to you then maybe you go even deeper look into asynchronous programming that's a really great place to start or maybe try some new languages that have different paradigms try functional languages or try something like rust with really strict compiling rules maybe try C or some of these older languages that really set the foundation for some of the other programming languages or maybe learn about AWS
17:42 something that is probably pretty important if you want to get into backend engineering or web development but it's something that's pretty overwhelming so spending an hour a day on it can be really helpful now if you're really looking to get into a job then you might want to spend that time on data structures and algorithms or system design and if you're really just just trying to land some interviews spend that time on networking now let's talk about your programming language of choice so when you're just starting out in software you might be reading articles watching videos or just hearing from people that hey you should learn python for some data science stuff or maybe learn JavaScript and build some websites or C++ to build some games and then you just spend so much time watching all these videos and trying to decide the perfect tool when you're a complete newbie you know nothing effectively as a developer you're
18:28 useless so what does that mean practically the programming language of choice probably doesn't matter that much if you're trying to learn your first programming language you should be able to pick it in like maybe a few hours of just reading on the internet different programming languages for different purposes pick one of them because learning the first one that's where you learn a lot of the different programming principles but learning the second one is probably going to take you onet of the time here's some general advice if you don't have any idea what you want to do in software and you're open to anything a great one to start out with is python and I say that because it introduces the least amount of syntactical friction to build your ideas in code whereas if you go with something that's very heavy on the syntax it's going to take a little bit more time to digest so that's a really great way to just get started and learn some
19:13 programming principles plus a lot of things like data structures and algorithms often have implementation examples in Python but if you actually do have somewhere you want to go in your Tech Career then I would be maybe a little bit more specific on what language to learn and I would do that by career outcome so there's some very clear obvious choices if you want to build iPhone apps you might go for Swift if you want to build games you might build with C++ if you want to do data analytics you might choose python so you can just look up the kind of thing you want to do in your career figure out what is the general recommended programming language there might be a few options so the summary here is just pick one and start learning you could spend the rest of your life trying to decide what programming language to start with and it's probably just a waste of time you're not to the
20:00 point where you actually have enough knowledge to be able to make good decisions about what language to learn anyways so just start and then you'll be able to make those kinds of decisions and thoughts much better later on the next thing and this is just another reason of why you shouldn't stress too much about which programming language to start with is because you should be focused on solving problems not the programming language you should think of the programming language as the tool or the input to solve a problem and you should always use the best tool however it's sometimes the case that there's not a perfect language to solve a problem and you could achieve it with different languages just depending on what you're trying to do so instead start with the problem this is really our job we get paid to solve problems so if we have some
20:46 problem we usually solve it with a programming language or various tools maybe database or whatever might be and that is how you should approach learning software development you don't just Learn Python for the sake of learning python you learn it to do something with it so what are you trying to do and the thing here is if you can find a problem and figure out how to solve it with a programming language you have the ability to make a lot of money either with your own product or as an employee or a contractor for some company that's solving problems for customers and the better you are at solving problems the more you can demand the more freedom you have to work on the things that interest you so because of this you want to approach development from a product
21:33 point of view and from a customer point of view what actual product features do you need to solve certain problems and are those the kinds of things that customers are going to want in the software so look at the big picture things like user experience is very important with software even if you're a backend developer because we're ultimately trying to provide solutions to people so if you go into development with this approach you're going to be much more valuable because you understand why you're building software and that's a really big part of it if you're just good at code but you don't know how to turn that code into solutions that are valuable for customers then you're probably not going to be as valuable as you could be that approach should help you build better software you start by thinking what does the software need to
22:18 do how does the user interact with it then what tools do I have to make that experience as easy as possible to build and a very good solution to the customer custom's problem that's your goal that's what you need to figure out so when building software one of the first things I like to do is to talk about the requirements of the software what are you actually trying to build and I get it you're not going to have it perfect from the get-go that's fine and that leads us to our next point which is as you grow a product you'll often need to have rewrites or redesigns so you don't have to have your software perfect from day one and if you try to engineer a solution that solves problems way in the future you're going to over engineer it and you're never going to get that first version released think about it like
23:04 this if you were to go back in time before cars existed or you know even bicycles let's say bicycles didn't even exist and people were talking about getting from point A to point B faster yeah we've been using horses but like maybe we could think of some other ways to do it and you come in and you start to engineer an aircraft where basically hey we could fit tons of people on this aircraft fly from one airport to the other yeah it's a great idea and maybe that works in the future when we have the foundation to build that but right now we're just trying to build a bicycle so stop trying to engineer the final product when you're really just trying to get a prototype built so build a prototype and the ability to develop fast is important because we don't want the prototype to take too long to build typically if a project goes longer than 3 6 months the chances of it getting
23:50 completed just go down to zero basically so we want to get a prototype or a beta version as quickly as possible ultimately seeking to have an MVP which is the minimum viable product basically the bare minimum required for a product to be valuable and for customers to use it we don't want to engineer the final solution from the beginning and that is in two Realms with features as well as user count it's often people are thinking of their app being a multi-million user app and they engineer the backends or that to support that number of users well that's going to by default give you a more complex system that takes longer to develop than to just start with
24:36 something simple and get a prototype built if you grow and your product is successful enough you should then be able to make a profit take money reinvest in improving that product you build and then ultimately you have a pretty established product you want to build an MVP that is functional and really good very good user experience but so many people try to build this and then they wonder why the product never gets completed or it's just a nightmare well it's because you're trying to solve the wrong problem the problem that you're trying to solve should be to build a prototype to make sure the idea works and that people would use it then work towards an MVP so you can actually release something then scale the system as you get more users instead of trying to solve everybody's
25:22 problem and everything you might ever encounter ever from the beginning now obviously keep the end in mind because if you're building software for an already very popular company that has tons of users then you need to keep scale in mind but if you're just starting and you're just trying to do something on your own then you probably don't need to worry so much about performance and supporting millions of users because you have zero why would you care just get the Prototype built this is why I tell people who are getting started just to be careful when it comes to microservices it's really common to build out like 50 little tiny microservices that all work together to solve some bigger problem but then you just have this insanely complex architecture and building anything on top of it is a nightmare when you should just start out with a very simple monolith and just have a simple single
26:09 product that you can run with then you can break out little services or whatever you need so that's just my Approach and you obviously need to consider the end use case to some degree but don't overthink it and build something that's so complicated that you can't actually complete the build next thing and we're kind of Shifting Gears here there are more than five tech companies in the world so this one might be controversial cuz it might seem like I'm throwing a bunch of negativity at the really big tech companies and that's not necessarily the case but some people will say oh I haven't had any luck finding a job or I'm just not getting through these interviews but they have their eyes set on only Landing in one of the top five or 10 tech companies as if those are the only companies that exist that hire software developers which is crazy and I guess it's something like
26:55 hey if I get in one of these companies then I'm special but but are you really because a lot of these tech companies hire thousands of people perhaps there's smaller companies that is actually more impressive to get into because there's not nearly as many people just something to consider and when it comes to applying to your first roles you should totally consider all types of different companies in fact if you bring some of the attributes I've talked about like the willingness to get better and improve and basically providing value through product development to companies I would say you have a really strong shot at getting into smaller startups or medium-sized companies than shooting for the stars and getting into a really big tech company definitely nothing wrong with that and you can totally do that but the approaches in terms of how to
27:40 get into these companies is different we'll get into some of that but if you're going for smaller companies it's much more about your skills and the value you provide if you get into the bigger companies they're going to have a lot stronger screening process so we're talking data structures and algorithms system design and things like that so not only are there thousands of tech companies your probably not considering when you're job searching there are also tons of companies that are not tech companies that need technical people pretty much every established company out there has some software so really any company is a possible job opportunity so if you've exhausted the top 100 companies and then you're just like oh I'm done then hey you're doing it wrong there's a ton of other opportunities out there there are thousands and thousands of startups started every single day I don't know
28:27 the exact numbers you can look them up but way way more than you're probably thinking if you can't provide value to one of thousands of companies then maybe the market isn't the problem in other words the problem might be you but don't worry by the end of this video I'm going to give you a lot of different strategies to fix this problem so keep watching because we're going to get into that the main thing I need you to get from this point is that there's more opportunity out there then you can take on if you're not getting any opportunities then it's either you don't know how to find them or you're not providing value or communicating what value you'd provide so those are some of the things we'll talk about in this video as well my next tip to get better is to learn from those better than you this one is huge I cannot express how important this is it's a mistake I made
29:13 early on in my career I took on very small roles where I didn't have a lot of mentorship or guidance yeah this is definitely a way to get my foot in the door start building apps start experimenting and learning but I had very few people there to tell me the proper way of doing things and as a result the process of learning was much slower than it needed to be here is an important rule to live by at least with where most of you watching this are in your career you never want to be the best in the room and that applies for literally everybody except the person who is actually the best the idea here though is you don't want to be the best in the room because that means you're not learning from anybody so if you work in a team environment and you are the worst developer on the team that's great because you can be the most improved you
29:59 have so much room for growth and you can learn from so many people ideally you can find a few people who you really learn from I did eventually in my early career find a few people that were helping me out with guidance and I just made it a point to check in with them but I didn't do it nearly as much as I should have looking back I should have been more clear and say hey I want to learn from you I want to get to where you are can you teach me what you did to get where you are when I started I wanted roles that gave me Freedom autonomy me to use the tech that I chose all of these things that would come with a senior level role but I wanted that freedom and that level of control when I first started and I paid a price for that because I had to find roles where I didn't have leadership to tell me what to do so it wasn't a good trade looking back I should have gotten into a role
30:45 that maybe pushed me a little bit more made me follow some other people who knew what they were doing instead of being basically like the solo developer for a very small company and this naturally leads me into my next point which is to learn through diffusion so say this is you and the circles around you are the people you surround yourself with so we're talking here in a professional setting these are your colleagues or your managers whatever it might be the people you interact with and the people you strive to be like these are basically the people you compare yourself to if you exist here and you're not the smartest person or the most experienced in the room you're naturally going to get some knowledge just from being around them and working with them and to me this is a win because we're talking about here 0% effort learning
31:33 basically just by surrounding yourself with these people you're going to pick up new technologies new terms new skills new experiences without really having to do a whole lot basically all you have to do is whenever you get some insight from somebody who's more experienced than you just apply it to your life you learn from their mistakes and what they had to go through to learn those but you didn't have to go through that issue yourself so yeah maybe it's not 0% effort because you still have to apply it to your life but learning through diffusion just being around people better than you is one of the most effective ways to get better without feeling stressed about learning or getting better you just are because of the environment you're in another great way to do this concept in your life is to find great creators online or resources that curate
32:19 information and deliver it to you in a non mentally taxing way so podcast like content maybe these videos are fairly easy to watch for you this isn't designed to be a replacement to direct learning we're just talking about getting exposed to new ideas and the perspectives of people with experience so that you can get better without having to do everything on your own next up on my list you have to understand that there is a cost to everything but not only that the cost can be measured in either dollars or time when you are a beginner you tend to only think about dollars as you begin to improve you start to worry more about time so you might be talking to some senior engineer looking for some
33:05 guidance and you might be thinking oh yeah it shouldn't be a huge ask to get some guidance and some mentoring from a senior engineer because it doesn't cost them anything it's basically free for them to take time out of their day and help me but that's the part where you miss right you're thinking about value in dollars they're thinking about value in time so actually helping you is not free it costs a lot of time and if somebody doesn't want to help you it's because they don't want to spend the time you're too expensive for what the benefit to them would be so let this idea be a lesson to not waste people's time if you ask for help from somebody it should be a very small ask and that's the idea of a
33:50 mentor they can help you find what to do they can even help you figure out how to do something but they do not do it I made this mistake that's why I'm teaching these things when I first started out there was a guy that was much more advanced than me and I was regularly reaching out to him for help this was very early in my career but I didn't really have a strong Mentor I was kind of just going with the wind whatever I felt was like the right direction to go and I would ask for help but the thing I was asking for was a very big effort on his part so for example I asked how to do a certain thing with an app I was building but I didn't come to him with maybe things I've already tried or specific issues that I'm running into so from his perspective it's like oh I'm just coming to him to get free work right like he's
34:38 not getting anything out of this because it doesn't look like I'm putting in the effort he did help out with that initial request he actually ended up just building out an example and sending it to me and I was able to use that as basically the starting point for something I was doing in my project but then he was much less likely to help me going forward because like why would he want to do that he's not just going to want to create projects for me for free it's because I wasn't valuing his time I didn't see it as a cost to him especially if I'm valuing time based off of the amount of pay I'm getting per hour which is much lower than what he was getting now this is the way to think about it when you're asking for help from somebody so you are getting something from somebody but the same concept applies if you're trying to provide services for someone else as whenever there's some service it's not
35:24 just a one-way thing there's always an exchange so you're providing service for someone's money that's the way a job works so if you are seeking a job and you get a no first off that's just going to happen sometimes not every job is a perfect fit so even if you're the best developer in the world you're still probably going to get some NOS but if you're regularly getting NOS then it's an issue of value in other words you are too expensive and going off of that same approach that beginners tend to think of where it's purely they might say Okay instead of making 200k a year I'll be good with 50k a year and maybe that's better but what this idea does not account for is the
36:10 time cost and the opportunity cost if you're paying 50 hey that's 50k you could pay to something else as well that might do better so it's ultimately an issue of value but here's a couple of other ways to think about it if you're a newbie there's going going to be a lot of training required to get you up to speed you might not see that as a big deal hey it might only take a month or two of my time you know big deal but from the other person's perspective the person hiring you that could be a substantial amount of time and their time is worth so much more than your time these numbers are made up but let's just say you're working for somebody who's making a million per year and to help you it's going to take a lot of their time and because of that time cut
36:57 they're now only making .5 million a year hey they saved 150k here but they lost half a million here that's the concept the numbers again are made up the idea is that you have to consider the time in any transaction so here's a common thing hey I will work for free this might work for local organizations or churches or things like that maybe some friends who need some projects built could be a great way to get some experience but the big problem with the idea of working for free when you're trying to get into more serious roles is that it pretty much assumes that there's no time cost and now that I'm deeper into my career I understand this so much better than when I first started so much so that now I Mentor people and a common request that
37:43 I get is hey will you allow me to join your mentorship program and in exchange I will work for free so they don't want to pay the money for the mentorship program and in exchange I get their work but they don't realize that their work is a massive time cost so this is a paid mentorship thing which you can do paid or you can find someone who will help you out for free whatever it doesn't matter to me but for people who want to work with me I offer them mentorship at a price so in this situation not only do I not make money from the mentoring but I also have to invest my time into helping somebody who's brand new and needs the mentoring has no idea what
38:29 they're doing so their offer to me is this hey instead of me just paying for the mentorship program how about you give that to me for free and you invest a lot of time in me basically double the cost to me and I make $0 because the work that they're going to produce is probably not that valuable that being said I don't think this idea can never work but if you can do some of the work up front or prove that your free work is valuable to somebody in some way so here's an example if you are a freelance developer find someone who will allow you to work for them for free maybe it's a smaller company a friend or an organization that you know of maybe it's a website for your school or some club
39:14 and make this website really really good all right so give it 200% effort make it amazing then as you find potential clients you can say hey look what I built for this othery I did it completely free I'll do the same thing for you to build experience then building on top of that you collect enough of these success stories that you've basically built for free you can start to charge money because there's proof that what you provide is worth something and that the time that someone invests in working with you is going to pay off this will work pretty much the same way if you're not a freelance Dev but instead you're job searching if you're new you have to go above and beyond to show value and ideally that means you might have some projects on
40:00 your portfolio or some prior work you did for organizations you're very responsive to interactions with recruiters you show up to meetings on time you don't waste anybody's time because that's the thing that they're judging you on if you're not bringing a ton of experience and skills they're measuring is this person worth the investment of my time to get them from point A to point B where they're actually providing value to me and here is the the secret sauce where this idea can shine if you get any kind of take-home man this can be great some people hate these and as you get deeper in your career you can just say hey I don't do Tak homes I'll just find a different job but if you're a beginner and you're trying to find a role you might get the opportunity to do some kind of take-home assignment and this
40:46 could be to build a feature maybe to review some code or describe how something works it could be anything really it could even be typical DSS stuff and then you go and explain your solution the difference between this kind of setup where you have a take-home assignment and a typical data structures and algorithms coding test is basically the take-home assignment you can do it on your own time you might have a time limit but it's not something where you have 45 minutes and you have to run through the question and come up with a solution instead you're given the opportunity to solve the problem over a longer period of time which gives you the opportunity to work for free essentially and this is the big reason why Tak homes are actually controversial
41:33 as there are plenty of companies that will basically take advantage of people trying to get jobs to get them to do free work and then they'll actually take that code and use it in the product not suggesting you do that if you're a company I think it's wrong but just to be aware that is a problem as a candidate you might just have to ignore the fact that some companies do that and instead see it as an opportunity to show your Value Plus some if you're a beginner you might have a lack of skill and experience and the Tak homes allow you to compensate by putting in additional effort and time and that time you invest is just going to help you learn more skills so you'll get better doing it I can share a personal story where this idea worked for me there was a company where I was going through the interview rounds 4 I wasn't having a
42:19 great experience their response times were slow always taking much longer to get back to me when they say they would get back to me there was a substantial number of interviews often times the interviews felt off topic or I was just thinking like why am I even talking to this person but you know that's how they wanted to do their interviews ultimately it came to a take-home assignment and at this point I had done like five different interviews or something crazy so I was like whatever I'm not going to give up now I'm going to go through this take-home assignment but just to make sure that I get the offer even if I don't want to take it because at this point I was pretty annoyed with the company now I didn't make some overly complex solution I basically did what they told me to do and then some extra surrounding things with documentation and some extra research on my end I
43:05 wanted to give a lot of effort to this because even if I got a no at the end of the interviewing I wanted it to be 100% not possible for it to be from something I did so basically I wanted to give them full responsibility for any NOS so I could confidently feel like hey I did everything I could do for this job I just didn't get it for some other C circumstances out of my control so not only did I have to do this take-home assignment I had to present it to a group of people running through the whole thing so it was it was awful so I prepped for this meeting kind of went through some notes came prepared the meeting was with a number of people and of all of those people only one person actually showed up for the call and the person that did show up was not the hiring manager and they also did not
43:51 have an immediate yes no capability for my submission so they were an accessory person to this process but they weren't a direct decision maker so obviously I felt frustrated that nobody showed up but I was like whatever again I'm just going to go through this as best as I can so I ran through that I had a a whole write up a whole document and I went through all of it end to end it took me like probably a full hour and by the end the guy was like wow this is really really good if I had the ability to hire you like I would hire you right now so I was like okay that's pretty cool so there's probably a good chance that he's going to give a positive word to whoever is the in charge of hiring people so ultimately I did get an offer and I did take the role but just all of
44:38 that story to show that I put in a lot of effort because I had the opportunity to work for free and show that I could provide a lot of value the amount of value I did provide showed that it was worth them paying me the salary that they ended up offering me so real quick I want to wrap up this section because as you could probably tell I put in a lot of effort to get that job but I don't put that amount of effort into every job and I see it as a funnel down here is a job offer up here is just connections and applying to jobs randomly on the internet as we go farther down this funnel the amount of effort I give goes up so an example of this is let's say I'm applying to some job job a I don't even read it man I
45:25 just apply like it's not worth my time to look at every single job and over analyze it I'm just going to apply I'm going to do an effort to you know maybe customize my resume a little bit make sure it lines up with the job but I'm not at this point considering if it's a company I would really want to work at I just apply same with networking I might connect with a recruiter don't really care what they're offering I'm just looking for opportunities and now let's say company a gets back to me oh they might be interested in an interview now it's time for me to do a little bit of extra research see if it's something I'd actually be interested in doing then we get through some interviews starting to actually see that this could potentially turn into something valuable then by the end I give full effort to close out that process and get an offer this is the
46:12 general approach that I would follow if I was to try to find a job right now now the exception to this General approach is if there are specific companies and you know you're just really set on working at those companies then you need to go full full effort from the beginning this is more of a bulk approach you know reach out to lots of recruiters apply to lots of jobs and then you know nurture the opportunities that start to pop up this approach is very direct where it's like hey we have a specific Target let's shoot for just that Target both of these are very valuable and they do both work there are a few scenarios in my career where there was a specific company or a specific thing that I was seeking out and I was very careful to give it 100% effort from
46:57 the beginning let's talk a little bit about learning and I'm going to challenge you to learn things you don't understand and this idea kind of sounds cool but really it's just learning learning is figuring out something you don't understand already if you already understood it then you wouldn't be learning it right you would just be recalling it but I feel there's like a natural instinct to avoid this right because it's uncomfortable when you don't understand something it feels like you're not progressing and it's very easy to just give up if you hear something you don't understand let's say you're watching a video and you already knew everything in it you understood it all perfectly do you think that video would really be pushing you to get
47:44 better probably not it's probably better that you watch a video and maybe you understood 70% of it and there's 30% that you still have to do a little bit of extra searching and practicing and often times you might have have this really scary concept that you're just avoiding right so let's just say for the sake of this video that the concept is functional programming maybe you've heard about it a bit but you don't really understand what it is and how it's different and anytime you hear that word you kind of shy away and maybe get a little scared inside cry a little bit I'm going to challenge you anytime you hear something that you don't know what it is to spend the extra effort to not avoid it but embrace it and learn
48:30 it and here's the crazy part often you will avoid something for such a long period of time and when you sit down and you actually Focus you know turn off your phone get off of social media for two seconds and you actually try to understand A New Concept it might actually make sense and then you never have to worry about that concept ever again you have the idea in your head if you do this for every New Concept it's going to happen much less frequently because you begin to have a much better understanding of everything around you think about it if you wanted to read for the first time right you're going to have a bunch of words that you don't know the definitions of so if you pause reading every time you hit one of those words you do some research figure out what that word is try to memorize it then go back to reading you'll end up having to do that less and less and
49:15 you'll be able to read more and more advanced books same exact idea here so when you hear new words here is a way to kind of guess if you should spend time learning learning them if you hear them multiple times and you have identified that it's a word you've heard before but you still don't know what it is then it might be time to do some additional research on it I like to talk about a bunch of different topics and I like to understand the high level of various things but I often just ignore things if it's something I've never heard of honestly I just don't have the time to be looking up everything but if I hear something over and over again then I'm like oh yeah this is is important so basically we have a system where the important words bubble to the top so you
50:03 know you might be hearing some of the buzzword and you want to know about them so that's a great place to start all of the things you've heard of but you don't know what they are all of that stuff about learning is really just to encourage you to push through the challenges of learning and change the way you think about it learning can actually be a bit uncomfortable me planning videos me solving bugs and all the stuff I have to do take takes a lot of effort and energy it's not something that I just have up here ready to go I've already put in a lot of effort to prepare the content that's why these videos can be great because basically I'm taking the pain of that effort and then arranging the material in such a way that can be easily consumed by you but there are scenarios where you just need to get in there and figure things
50:49 out and I think a lot of people are just scared to do that another example of this is in the mentorship program we have some group calls I've had some people who are maybe newer come to me and say hey these group calls I feel like they're a little bit too advanced should I not come to them and my answer is no that's one of the reasons you should come to them because you're surrounding yourself with people at this level you're at this level well naturally if you spend enough time learning what they're teaching you're going to get to that level and this does work the problem is that because you're at a beginner level there are a lot of things that you may have not heard before and it's a lot of new topics so a one-h hour call might not be an hour where you fully understand everything
51:35 and you might need to write down some notes and spend extra time to get everything out of a 1-hour call because you're not at this level but that's exactly what's going to help get you to that level is doing the extra effort to understand everything in that 1 hour so that's how I approach learning if I'm doing a brand new topic let's say it's a video course I might watch 1 hour of content but that takes me 4 hours to consume it you know I watch the material I practice I do additional research I take notes I play on my phone for like an hour or two no I'm playing I generally try to stay focused when I'm studying and I would recommend you do that as well because anytime you're getting distracted it's just kind of preventing you from digesting new
52:21 material so those are just some general thoughts about learning and my Approach if you just accept the fact that that learning might be uncomfortable you are going to be able to get so much farther in your learning and you'll find the things that maybe were once scary are actually not that bad now this next point is really about focus and last year I released a mind map which is a really great video by the way if you want to check it out and this was a backend engineering mind map basically it showed a bunch of different topics that you should know about as a backend engineer and I think this is a lovely exercise because basically it gives you a really good thousand foot view of everything you should be aware of and how things fit into categories or how things are different between each other the problem is what I see is beginners will go to
53:09 some structure like this and they'll just go through here and learn this and then learn this and then learn this and then learn this and they're all over the place there's no structure to how they are learning the material and it's completely random and they justify this by saying oh I'm getting a better understanding of the ecosystem I'm becoming a better General developer and while that might be true that's not really what you need when you're brand new at least not only that that should only be a portion of your studies so this discovery where you're just kind of looking at new technology trying new things out to me this is something that should only be a portion of your total efforts so what that portion is you know it might just depend on your goals but generally maybe a 30% out of of 70 so
53:57 let's say this is your effort you could have 20 to 30% on Discovery or you can just think new but this 70 to 80% this is focused this is what people are bad at right nobody's good at this anymore people say it's hard to get a job and yeah we have Cycles maybe it is harder than it was at one point in the past but that's irrelevant because I think the big problem a lot of people have is they're 100% in this discovery phase and they're not good at anything they're just a full stack everything where they've basically split up their learning 1% across a 100 different buckets and as a result hey they might have a pretty good general knowledge and know a little bit about
54:44 each topic but they can't use it to build anything because they're a noob so this could be something where hey maybe you just spend you know the weekend kind of trying some new stuff or if you don't already have something assigned to that one hour a day that we've been talking about this discovery is a great thing you can do for that one hour and however this works best for you you could comprehensively go through new topics like I mentioned data structures and algorithms or system design or each week you could try something new so maybe spend an hour a day learning a little bit about AI models then next week you explore functional programming then the next week you explore cloud services and you're getting a really good broad understanding of Technology but it's
55:30 really just a complement to your core skills which is what you get really good at so this might be back in engineering and that's where you follow more of a road map and a system of study to get really good at just a few Technologies so you can actually build services and that allows you to go deeper so Focus allows you to go deeper and when you go deeper it's easier to trans transfer those deep skills to other languages so all of this discovery becomes easier and that 20 to 30% can be way more effective because you're way more advanced in your abilities all that to say don't neglect that Discovery it's super important if you don't do it it's going to you because you might be a really good
56:15 backend engineer but then you go to the front end and you're like I don't know what an HTML is that's not going to work out so you need to have a little bit of skills especially in the surrounding topics to whatever your focus is all right let's talk about some more career stuff now so the big thing I want to talk about in this video is that AI is not going to take your jobs this is driving me crazy the fact that everybody feels like oh yeah AI is going to take my job first off have you even used AI yet it's awful I can't get AI to do literally anything correct except very basic code or prototyp types so it's not nearly to the point of replacing really good developers now
57:02 could it get to that point well I don't really know where AI is going to go but what I believe is that if you're replaceable by AI at least now or in the near future then you're probably just really bad because AI cannot replace a human being who actually designs solutions for problems and is able to utilize resources to solve those problems so I realistically think it's going to be the case that we utilize AI more to help us build Solutions and kind of think about it as like automating some of the basic stuff as of right now anytime I utilize AI heavily in the development of some project it usually actually slows me down and this is
57:47 because of a few things first off I don't understand the project and when there's a bug I don't know where to look because I basically just copy and pasted a ton of code from some AI if you're just utilizing chat GPT or co-pilot and you're not really thinking you're just copying and pasting you're going to have the same issue where once there's a problem with the code you don't understand the code well enough to actually fix the problem so I think in many cases AI is actually going to slow you down now when it comes to learning if you're skipping the learning process because of AI then you're definitely going to get wrecked I think AI is a great tool to EXP explore different Technologies ask questions and that's what I use it for almost like a sounding board to interact with a fake person to
58:35 ask for ideas or to learn more information about different things but very rarely do I just copy and paste a fully functional solution so personally I am not worried about AI replacing me if anything I think it'll change my daytoday activity and maybe that can Elevate me to think more about Solutions rather than code implementations but I don't see that being a problem and I don't see that being something that's going to replace
…