visit
Ex-Google Tech Lead explains why programming is so hard.
Disclosure: Some links are affiliate links to products. I may receive a small commission for purchases made through these links.
Note: This transcript is auto generated by YouTube and may not be entirely accurate.
00:00hey tech late here and welcome back to00:01another episode of the tech lead and I00:04know what you may be thinking this must00:05be lemonade it's not actually that's too00:08expensive I decided to recycle for the00:11meanwhile oh that's warm so today I00:16wanted to talk about why programming is00:18so hard and the fact is it's actually00:21not that hard but there are a certain00:23number of roadblocks and if you don't00:25clear these out of the way or if you're00:26not mentally prepared for these then00:28it's going to really mess you up and you00:30may find yourself stuck on some of these00:31you may even be banging your head00:33against the wrong wall when you realize00:35you're not even going in the right00:36direction here I know that there have00:37been some people who say maybe you have00:40to be born to code kind of like how you00:42may need to be born to be a really00:44gifted musical composer and I can tell00:46you that at least for myself I learned00:49to code but it was a real struggle even00:51for me I started at a very young age and00:53say sixth grade but even as I was00:55getting through learning pointers I00:57remember crying during those first few00:59lessons because it was just so difficult01:01I know this though that those who01:03persisted were able to get through it01:05and there are a number of things to01:06watch out for on your journey01:08into software engineering if that's what01:10you're going for here now before we get01:12started here I do want to mention that01:13this video is sponsored by myself I've01:17actually written up a little speech for01:18you guys here for my 15 minutes of fame01:20do I get 15 minutes I have been running01:23this program this tech interview01:25training program in which I will01:26actually help fast-track your career01:28with Joma check out their training01:30program tech interview procom you get01:32the first episode free when I first01:34began learning to code it was so01:36difficult look I'm not going to read01:40this whole thing for you guys just don't01:43be stupid check out the program tech01:45interview procom so one reason that I01:47think coding may be difficult is because01:49it is a combination of three different01:51skills actually not just one so you do01:54need the coding ability but to really be01:56an effective software engineer and to01:58actually get hired as one which02:00validates your skill sets02:02you also need problem-solving ability02:04algorithmic ability right that ability02:06to analyze a problem and come up with02:08the solution not just coding it we just02:11say the implementation and then you02:13also need communication ability because02:15coding is very much about teamwork if02:17you go into an interview and you are not02:20able to communicate properly you're not02:22able to express your ideas and thousand02:24to have that teamwork capability then02:26you're not going to get hired and then02:27you're going to go around thinking that02:29you're not a really good programmer you02:31may actually be fine in terms of02:32technical skills but maybe you were02:34missing that communication portion and02:36the problem is that many people will02:38have say two out of three of these02:40skills right you may be good at coding02:42and algorithms but you're not very good02:44at communicating or maybe you can do02:46some communication and coding but then02:47you don't have that algorithmic02:49analytical portion and you really need02:51to have all three portions to be02:53effective now the second reason that02:55coding is difficult I believe is because02:57it requires an inordinate amount of time03:00sitting in from the computer and just03:02staring at that screen and this is going03:05to be probably far more time than you03:07may be used to right for most other03:09disciplines you don't need to be sitting03:11down for a large amount of time focused03:13on something like say two to three hours03:15you can learn on the go right you could03:17go to a restaurant while you're eating03:19maybe you could read up on a little bit03:21of biology right learn a little bit of03:23chemistry while you're in the car spend03:25twenty minutes at the beach reading a03:26chapter of your history book that's okay03:28that's fine then that type of learning03:30can be done in segments but for computer03:32programming you really need to be03:33sitting at a single place at your desk03:35at the computer for a long period of03:37time many people are just not used to03:40being able to do that and they think03:41that that is just way too much and03:42they're not able to handle that and as03:44soon as they've sat down for say even 3003:46minutes they just say this is way too03:48much you know this must not be normal03:50they must not be good at it no that's03:52fine that's actually the proper path and03:54the way to do it the thing about03:56programming is that there's a certain03:57flow of things and you have to get into03:58that rhythm the study patterns are quite04:01different than other things that you may04:02be normally used to now another reason I04:05think that coding is difficult for04:06people is that it requires abstract04:08thought which is a skill that most of us04:11have not really been taught and many04:12people can go through life without04:14really using much abstract thought you04:16go through most of your say high school04:18without having to actually touch04:20abstract thinking at all and even many04:22people will go through college and their04:23whole lives without doing this but it is04:25about elevating your thinking04:27and generalizing towards more broader04:29concepts and relationships between04:31objects and concepts instead of looking04:34directly at the specific objects right04:36so for example if you take a look at the04:38dog04:39you may say at first that the dog's04:42color is brown and you have a computer04:44program that does this but then you may04:46be thinking if you were to start04:47thinking about this more abstractly why04:49do you even assign the dog's color to be04:51brown in the first place right04:53maybe the dog's color should be assigned04:56when the dog is born when the dog's name04:58is assigned at the same time that seems05:00to make more sense so you group all of05:01those things together but then you start05:03thinking well why is the dog a special05:06object within your whole entire system05:08should the dog be a special object and05:10should you be the one assigning it right05:12here in the program is the dogs more05:14special than anybody else why not assign05:16the cat a name why not assign the person05:18a name and the color as well so then you05:21may say okay well let's generalize the05:22concept of a dog to an animal and then05:25you have an animal factory that is able05:27to initialize these objects and assign05:29them names and colors and then you may05:32start thinking well why are you even05:33doing this client-side should then they05:35all be driven by the server and it05:36should be the server which is the source05:38of truth so you move everything to the05:40server and then the client has no05:42concept or notion about what an animal05:44even is the client is just a dumb but05:46view for rendering things so that gets05:49towards abstract thinking it helps you05:50generalize your concepts in the computer05:52system many people though they're just05:54going to say well why do you have to go05:57through all that the dogs color is brown05:59and let's just leave that that if you're06:01good at abstract thinking I believe that06:02it will also make you a good problem06:04solver another interesting facet about06:06coding is that you're never actually06:09done learning and there is no true sense06:11of accomplishment the field is just so06:13big so usually you just start learning06:16something and you feel that you've only06:17scratched the surface of it maybe you06:20only really understand 10% of it and06:22that's about right let's say you're06:23trying to learn react is you pretty much06:26just learn whatever you need to get your06:28portion of the work done but you never06:30really try to learn the whole thing the06:31framework is always changing and there's06:33always new technologies coming in and06:35parts of it being outdated and06:37deprecated all the time such that you're06:40sense of knowledge is always incomplete06:42and for some people they may not be used06:45to that right you may be learning a06:47physical equation or a math equation and06:49that's complete and you have the entire06:51knowledge right there you could be06:53reading a history book you've read the06:55whole chapter and that's about all there06:56is to it and you can piece together the06:58events 100% almost but in programming is07:01more like you only know about 10% and07:04sure there's a whole bunch more that you07:05can learn but that's fine and you just07:07leave it at that07:08the other thing is because the field is07:10so broad it is easy to get lost in the07:12weeds somewhere and it is easy to get07:14off track if you're not focused and07:16you're learning you could be wasting07:17your time learning all sorts of random07:19stuff that aren't really useful you can07:21spend all your time learning about07:22assembly code optimization which very07:25few people are going to need or you07:26could be wasting your time learning some07:28technology that's just not very useful07:30like how to decompile n64 game07:32cartridges in many ways learning code is07:35a battle against time in which you want07:37to prioritize your learning and make07:38sure that you're always on the right07:39track and not learning some piece of07:41technology that's not very useful and I07:43think people also really need to ask07:45themselves do you really want to code do07:48you think it is cool I think a lot of07:50people maybe they look at the amount of07:52money the salary income that software07:54engineers are making they think that07:56part's cool maybe they look at the07:57lifestyle but do they truly want to be a08:00programmer themselves or do they see08:02that as something that they may be doing08:04for say 1 or 2 years and then just give08:06that up because their heart was never in08:08it in the first place they don't think08:09it's cool most of us we are not brought08:11up thinking that software engineering is08:13very cool right we take a look at rock08:16bands singers musicians being an actor08:19or actress well that seems cool and a08:21lot of people would be willing to put08:22everything else on how to chase their08:24dreams for that but how willing are08:26people to give up say a Friday night out08:28at a bar with their friends to just sit08:30down and code not many people are08:33willing to do that because they just08:34don't think that coding is that cool a08:36lot of people think that coding is08:37something that you just pick up on the08:39side like learning to play that ukulele08:41it's not quite like that it requires08:43more commitment than that now one more08:46thing here is that the results will08:47validate you so you may think that08:50program is hard until you land the job08:52as soon as you have a job then you'll08:53feel08:54like oh hey yeah it was pretty easy and08:56this is where one big disconnect is is08:58that the coding interview process is09:00often completely different than actual09:03practical real-life programming and it09:05is actually a separate skill set right09:07you got to go through whiteboarding09:08questions and solve a bunch of brain09:10teasers and specific coding related it's09:12questions and there's a whole different09:14set of skills involved in that so the09:16challenge is that people maybe they get09:18through some coding practice and they're09:19actually pretty good by then but they09:21can't get the job so then they think09:23well coding is just seems so difficult09:24it's actually a different skill set that09:26you have to learn to pick up and this is09:29where I recommend you get some interview09:30training ex-google and X Facebook09:32engineers we're putting together a09:34training course program for you tech09:36interview procom so check that out we'll09:38get you all set that will teach you09:39everything you know to pass the coding09:41interview for large tech companies in09:43thing so I'm talking about coding data09:45structures analysis communication09:47behavior and all the other skills that09:49you're going to want to watch out for09:50you know one quote that I always think09:53about is the smallest decisions in life09:56often have the greatest impacts when you09:59invest in yourself maybe one day for in10:02the future you will look back on that10:04day that time and you'll say that was10:07the turning point right that smart10:08decision to invest in yourself I10:10invested myself my own skills and that10:13just sent me on a totally different10:14career trajectory and brought me to the10:16success that I have today let me know10:18why you think coding is difficult if you10:20liked the video give it a like and10:21subscribe and I'll see you next time10:23Thanks bye