5 Tips for Beginner Software Engineers and Students

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey guys how's it going today i want to make a quick video giving out some tips for beginner software engineers and computer science students it appears that most of my subscribers on youtube are either beginner software engineers or computer science students so i often get questions like what programming languages to learn what areas to focus on and things like that so i thought i'd make a quick video giving all those tips and help you guys up before we begin i want to take care of a few housekeeping items so if you want to jump directly to the tips feel free to jump so the timestamp is in the description so two things i want to talk about before we begin is first the giveaway that i promised for the google home a lot of people ask me when that will be happening or when the live event will be scheduled where i picked the winner i'll be doing that in october probably first week of october or maybe second week of october uh and then that's when i'll have the live event and i'll let you know when it's scheduled so you have enough time to kind of join in and stuff like that the second thing is a lot of you have requested videos on problem solving and interviewing tips and techniques and strategies that kind of stuff that will not be one video will likely have to be a series of videos that i'm working on this takes time so again that will be sometime in october just watch out for that maybe the first few videos i'll post them in october before that in september i have a lot of things going on so i just won't have time to do that so most of the things that you're looking for will be coming in october so thank you for the patience in advance all right without further ado let's get started with the tip so tip number one is do not obsess over learning a programming language what i mean by that is the programming language while it is important because that's the language you'll be sort of talking with the computer it's not the most critical part what i mean is you could learn python you could learn javascript you can learn java you could learn c plus plus but eventually the differences between those language is not the most critical part you can figure those out pretty quickly so my suggestion is to just pick one pick one whatever you've already started with or whatever you find most intuitive and easy to understand or whatever your school is teaching you that's fine don't worry about what programming language is the hottest one in 2020 or what will be the biggest one in 2025 don't worry about that because once you learn one programming language switching to a new one is fairly easy it takes not even a few weeks right think of it as learning a language so you've spent you know 20 years 30 years or however many years learning one language whatever your native language is right like so now you now you've understood how to communicate what the subject is what the predicate is what the grammar is what syntax is what adverbs are what adjectives are those kind of stuff right once you learn that now say you want to learn a different language like german or spanish or hindi or whatever right all languages almost always follow a similar pattern maybe there are big differences between latin and non-latin word languages but apart from that like the communication pattern is fairly similar so the exact same principle applies to programming languages once you learn the main constructs of a programming language like assigning variables doing loops doing conditionals you know methods procedures you know like return types data types that kind of stuff all other programming languages are very similar so don't stress out about programming languages and focus on learning the core which is going to be data structures and algorithms and i'll get to that in a different point point number two if something that you need to focus on right now uh would be to pick an ide which is your which is the tool that you use to program stuff pick one that is popular and and again this is also not critical but i think it becomes quite advantageous because regardless of what language you'll be using you will be using uh an id right so for example in my case i can write code in java or a little bit of c plus plus python javascript and c sharp and generally all of those have different ids if you want to so in my case because recently i've used mostly c sharp and i ended up using visual studio right and visual studio is an amazing amazing idea like it has a lot of things built in there's a lot of effort that goes into building the tool there's a big team that microsoft devotes to visual studio so naturally i used it i liked it and i got dependent on a lot of things with visual studio right so now if i switch to python i will suddenly feel that i'm like very dependent on visual studio which is not a good thing right like now i have to not only learn python to get used to python but also i have the headache of learning the ide and the things that now the idea is not going to do for me right like all the shortcuts and stuff so the benefit these days is there are a lot of awesome open source ids that will work with everything and few examples at least a few years ago the most popular one was sublime everybody was using supplying and now with visual studio code being so popular if you start using visual studio code right away it doesn't matter what you use you can get java to work with visual studio code javascript automatically works with it you can use csharpen.net core and use that you can use python in visual studio code so what happens is if you say if you get a job and you've always been developing in java and now you need to switch to python chances are very likely that they already use visual studio code or they will allow you to use visual studio code and now you only have to focus on learning python you don't have the headache of learning a new ide a lot of psychological benefit to doing that and obviously you don't waste time learning a new idea and you can primarily focus on the programming language right so i highly recommend you do that third part is do not skip your data structures and algorithms like i cannot stress this enough especially all you guys that dream of working in a big tech company like facebook microsoft amazon google uber whatever that is you will need very deep knowledge of data structures and algorithms so if you're in school a lot of schools have one or two classes if not more dedicated to data structures and algorithms and based on my experience sometimes the the intro classes like computer science 101 and then you'll go to data structures like that will be level 200 class data structures one but then data structures too will have some of the more advanced topics and those will be electives those are not required to get a degree but you can a lot of students skip those same with algorithms is algorithms the first level class will probably be a 300 level class will be algorithms and analysis or algorithm design and analysis and then the second one the more advanced one where they talk about hardcore algorithms is an elective and a lot of students skip it don't do that make sure you have room to take all your data structures and algorithms class a lot of times people ask me this uh from an interviewing perspective too like uh hey i i have experience say i have eight years of software engineering experience but i really struggle with problem solving and like data structures and algorithm questions how do i improve and the the problem is the same thing is you are struggling with problem solving and algorithms question is because your foundational knowledge of data structures and algorithms are we i'll give you an example so i know many software engineers that if i tell you if you've built any kind of web app or or a website if you've ever used jquery javascript that kind of stuff if i told you hey i i need to build a quick search text box and you've used this in like your browser or various like search places where you start typing and it'll start auto completing for you right so you start you start typing say maybe you're you're in amazon.com and then you start looking for like some sort of a guitar right like so the moment you type gui it will do some fancy stuff and then it'll start saying guitar or guitar something or guitar strap guitar pick like that kind of stuff so generally how that's implemented if i ask someone how did how would you do that the the general way and this is how i did it when i was uh just starting to is like hey javascript or jquery has an autocomplete library so you just use jquery.autocomplete right like so you and then you give it a list of things like hey here's a list of my inventory and then you can set it up saying like okay the moment the user starts going past the third character then start doing the auto complete and it will it's very quick it'll filter it out for you and then there you go you just implement it auto autocomplete right but that's not the case that's not how autocomplete works you've implemented a library that has implemented autocomplete but how does autocomplete really work right so the basics very basics of autocomplete is a data structure called try try is a form of tree which is also a data structure so you basically split uh each word into characters and you can use hash maps to make the fastest things like that but you basically start at the starting character and as the user types you kind of start traversing the tree now here's another topic i said traversing a tree so now you need to know how to traverse a tree right not only a simple tree but it's a different kind of tree that is called a try right so this is how autocomplete is implemented i will not go to the exact details of it but just to implement a very basic basic version of autocomplete you're talking about some form of a dictionary hashmap tree that is a different variation called try you're talking about tree traversal and all sorts of things right you you could implement autocomplete using jquery but if you really need to understand autocomplete you have to understand all these data structures and some of them are advanced data structures right this is why it's critical and when you apply to big companies like google and facebook and all they expect you to know the implementation not just how to use it anything you've used it they expect you to understand how it's built right that's the reason data structure algorithm is so important so the fourth tip that i have is obsess about practical implications of what you're learning or what happens if the volume of users or what we call scale is to be applied to whatever you're building right and as a as a student was just starting as a computer science uh student or as a software engineer which is starting something like this is difficult to wrap your head around but i would still encourage you to at least think about it's okay if you don't understand how this works the least you can do is at least come up with a few situations where what-ifs happen right and i'll give you an example say you're building a to-do app everybody loves a to-do app so you've learned programming language you learned that our to-do lab is an app can have like a list as a backing storage you've learned the basics and then now you've built it and then someone can add it connects to your database and it's all cool but now think about what's the fun in building a to-do app that only five people use right eventually anything you build you want to be able to be good enough that everybody uses it right like like scale you want lots of people to use it so now immediately the first thing to think is what happens if a million people use my to-do right like what happens like it's okay if you don't know the answer if you're just beginning that's fine but start training your brain to think about what ifs what if this happens what if someone it could be about security what if do i need security for my to-do app right like do you need does the user need to be authenticated what happens if someone's to do leaks out in the public that's like a huge security issue privacy issue right and think about like the practical implications where like oh someone taught me a tree data structure and they just told you in a very academic way in school especially right start thinking or go home and then look for hey what where are trees used and then you'll see in applications like autocomplete searching you know like different kinds of data structures or you use a sql database like a lot of indexing there happens as b trees so that kind of stuff and you you may not know how they're implemented but you'll get an idea about oh these are the applications of trees right and i think that mindset really helps you understand things as you learn more and more and then the final tip i had is put in the number of hours eventually software engineering is a balance of knowledge some skill and some people even say some form of art i suppose but all that is achieved only through practice like you have to do it you have to do it you have to put in the hours right and when you're putting in so many hours you're doing something it builds up your stamina and also regardless of what background you came from why you studied computer science you know like maybe because your friends started computer science or maybe because your parents wanted you to compare study computer science or maybe you just loved computer science i don't know but regardless of what background it is you want to build passion towards doing it if you don't enjoy it and you're just purely doing it because somebody else wants you to do it or your friends are doing it or you think it's a lucrative salary in the future whatever then you will not like it because it's it's a lot of like you know like sitting down and coding type of thing right yeah there are like meetings and designs and stuff but like those are only fun when you enjoy it right so i suggest putting in the hours making having fun with it and going beyond your classroom if you just do what your professor tells you to do or if you just do what your job requires you to do you want grow you want to learn have have that habit and this goes hand in hand with the last one about being curious and going beyond is go home do your stuff and and this is kind of counterintuitive too because the college itself is hard and when you begin if you're struggling so you don't have really time and i'm telling you to do more but trust me as you go like the barrier to entry is very steep in the beginning but once you start getting good at it you'll find that things are a lot easier and then your curiosity will start paying dividends there right like with anything like you've heard of the 10 000 rule right like if you want to be the best at anything you need to put in the hours and you have to work on it and enjoy it have fun you know like a lot of people ask me hey do you have to work eight hours a day i mean the answer that i normally give is it depends on your job what your team wants usually not but some days are longer some days are not but the answer in my head is why does it matter like i love doing this you know like if i didn't work eight hours and my job whatever finished in six hours i'll come home i'll do something else maybe i'll play some video game but i'll eventually probably pop back into the computer and do something else a side project or something like that right so invest time enjoy doing it and if you need side project ideas i have another video that talks about side projects but put in the hour because when you eventually go you want to work on a big company top company the people that you will be competing with live breathe and eat this stuff like they literally love it so if you want to compete either you are like some absolute genius in which case good for you but normally for most of us you just need to put in the hour enjoy it and be passionate about and that shows uh in your interviews too so that's it to summarize number one don't obsess about which programming language to learn it doesn't matter pick a popular one if i had to suggest because you haven't learned anything i would say pick python or javascript those are good languages to learn but if you have learned something else don't worry about it that's not important second pick a familiar id that works across all programming languages in this case my recommendation would be visual studio code so that you don't have to context switch or learn 10 different ides it will work with everything and it's open source it's cool um number three is please please please get your foundational knowledge of data structures and algorithms done uh if i have to pick one out of all these tips that i gave you i'll pick this one like that's how important it is and i i gave you the examples to why it is important it's required for tech interviews focus on that early on and you will not struggle later number four think of practical implications of everything you're doing think of scale think of how it would change if security concerns were changed a few million users were added that kind of stuff it's okay if you don't know the answers but build curiosity and think about how it would be used in a practical setting okay number five is just put in the hour build the passion uh so that you build your stamina and you thoroughly enjoy doing this work on side projects you know like that kind of stuff uh and i think with these five things you'll be set up for success uh regardless of whether you're a student or a beginner software engineer or even probably a little bit of experience under your belt i don't think the either either of these will hurt you they will only benefit you that's that that's all i had for today uh if you like the content please subscribe and i'll see you around you
Info
Channel: Engineering with Utsav
Views: 54,874
Rating: undefined out of 5
Keywords: 5 tips for beginner software engineers and students, software engineering, software developer, software engineer, beginner software engineer, beginner programming, software engineering student, computer science student, computer science, learn to code, software development, software development course, computer science major, computer science degree, learn to code for beginners free, software engineering for beginners, software developer tips, software developer career
Id: kMhu8Ysf3a0
Channel Id: undefined
Length: 17min 19sec (1039 seconds)
Published: Sun Sep 13 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.