Breaking Into Tech: Is a Computer Science Degree Worth it?
hi it's laura hawkizer back with a another breaking into tech software engineer edition this time i'm joined by uthkirsch and he went the computer science route oopsies um so he's got that kind of uh clear path into software and he's working at bloomberg currently so he'll be an awesome person to hear from and so just to get started uh would you kindly introduce yourself and let us know like from an early age how you knew you wanted to major in math and computer science hi folks um yeah absolutely thanks for having me um i'm utkarsh and uh um as lara introduced me um i currently work at bloomberg as a junior software engineer and uh uh graduated university not too long ago as a computer science and mathematics major um my um sort of introduction to uh programming really was in high school and uh i found it very interesting to continue on and uh at least learn it in some form and very heavy academic depth at least and then eventually towards the end of college i decided that industry is a good way to start off um as opposed to you know staying in school and pursuing more degrees right as opposed to getting a master's for example computer science so in high school were the classes you took um elective like did you choose to take those computer courses or was it kind of standard where you went yes i believe they were elective courses um yes they were they were optional in fact i think there were people that didn't take them that's pretty cool because i think sometimes when we're at that formative age we can tiptoe into something that turns the lights on for us it's like oh aha that cut that like this is something i might be into so that's really cool so when you landed your job at bloomberg first of all how prepared did you feel your degree and any internship or any experience you may have had which you're welcome to expound upon how it prepared were they were you to actually apply and pass technical interviews and then thinking back to your first days on the job how prepared did you feel like did you actually understand the life cycle like like you know there's just so many like working with other you know people that are working in product and people working in design like all of the um things you don't really run into in college so i'm just wondering what that experience was like for you sure um starting with the interview um yes i felt prepared for it i felt that my degree on or at least some parts of my degree were very relevant to the interview um as for my day one on the job um a couple things um immediate in my immediate department which is engineering as they call it here was it's pretty familiar stuff there stuff that was going on there um what's pretty familiar to what the um core things are taught in a computer science degree um you know your regular distributed systems um um just regular components software engineering um 3t architecture right back in south uh back end front end middlewares uh concurrency operating systems all these things were present and uh um completely i mean uh in the scope of my uh degree i would say um this wouldn't exactly be the case at a at a smaller company where you're closer to the other departments like uh design sales management where you know most traditional degrees don't teach you how to uh collaborate with these other immediate departments but in terms of engineering i feel like i understood at least a lot of things that were going on right off the bat interesting so working at bloomberg which is like a larger company the the engineers are more siloed so you're sort of all all your heads are on that kind of broken apart from everything else and you're not really having to interface as much so it really was directly applicable it sounds like two courses you took in your undergrad were there specific courses you would because i you know i heard you say systems i heard you say a few things like um concurrency were there particular courses so maybe somebody doesn't want the whole degree but there's certain courses they might want to take at a college level what courses would could you name that were the most helpful and also i know you did mathematics and that might help with log you know algorithms and data structure and things like that so be helpful even if you were calling from from both computer science and your mathematics background yeah um just to be clear none of my mathematics background applies here really um yeah i was a pure mathematics major i like doing uh research mathematics so right um not to mention that of course it comes up in the background um smarter folks that actually work on smarter things um we don't really need to understand that is but in terms of uh quick things if you don't want to take uh uh take on a full degree um to be honest i've seen a lot of people just know a few programming um libraries uh languages and a paradigms and uh farewell uh in a company right um because uh right like html css javascript and uh and a framework of some kind or like yes so it depends on the team right the teams i work with do not interface with a typical front end right okay um and uh in fact i haven't heard the word javascript in a while yeah so for i think for front end folks there isn't uh i mean you can't exactly say what's going to come up on the job but there isn't exactly interfacing too much with what uh the power of computing um lower level layers you i mean it would be nice to understand how an operating system works how computer architecture sort of plays role how networks work but um for an instance a front-end program would certainly enjoy or i mean certainly benefit from learning what networks how computer networks work although most of your programs work on an application level which is the highest level of abstraction you can achieve learning how socket programming works um how routers actually work how the internet works can uh will uh you can improve certain parts of your application to it and an extent that will first help you keep your job um secondly improve uh the infrastructure of a front end at your company to a sustainable degree so computer networks some part definitely some part of operating systems and uh concurrent programming would be three of my top most uh top things that you would want to learn i would say to some degree and this doesn't have to be a you know proper college course work um because a lot of this study stuff um at least the basic stuff can be learned from other resources um there are also certain other technologies which are becoming popular such as secure and uh security so not improper cryptography but more so um you know you need something about maybe knowing something about how encryption over a network works um plus um virtualization technology such as most engineers or at least beginners may have heard of docker right exactly and you don't exactly need to know how it works because it is complicated and i have like college coursework to back that up but um knowing abstractly how a virtual machine runs or how docker runs when the actual software is deployed because i guarantee you you will see this stuff once you enter in the industry it's so true like i look at my notes from boot camp and coming out and i've got like five pages on docker and like five videos i watch and just like kind of learning the basics and then like i'm like oh no suddenly i'm learning kubernetes and then i'm over here like um i think a lot of people who go the boot camp route or the self-taught route we end up trying to go really broad but i think the problem there is because we're not doing like a full semester long slowly within intervals right like you're learning all the stuff slow and steady for me that's really a huge advantage when i try to learn something quickly it doesn't stick as well and then i see that i've kind of got like this expansive viewpoint i'm starting to see where it all fits together but i i feel like there's a skill lack there like i don't feel like all of the things i previously learned are steady enough to then be adding all those extra elements so when i think of like at least how i function as a learner i'm like oh a computer science degree sounds like it probably would have been a better bet for someone like me that can kind of scatter my attention when it being really grounded in a curriculum that is vertical you know day one to you know from beginning to end um you're learning things in a particular order and sequence where when you're learning on the internet you know like things are either like super beginner and then it's just like kind of no man's land where you're you know it's i think kind of difficult for people to go from that beginner-ish to from to intermediate outside of a real work environment so i really see the value in the cs degree like hearing you speak um eloquently about i mean these things should all be basic topics inc encoding but i can i can definitively say the vast majority of people i know that did the live boot camp not integrate all that learning whereas the people i saw do like a flex where they're learning it with more time while they live their lives they actually sound almost as intelligent as you when they're talking about what they saw on day one um but you do stand out to me i've spoken to so many people you stand out with competence so if people watching this are thinking i want to sound competent i mean cs degree could be a thing for you or maybe just connecting with people who have that background and that can steer you to the right resources so um so if somebody is considering a four-year i mean they're like they want to do software would you steer them to a four-year college degree why or why not um well thank you for your kind words in terms of what if you want to sound uh competent or want to be actually competent i think the real driver of that is curiosity right and uh and answering uh you know coming back to your example on um you know the notes on docker you took right and uh anyone any beginner even a uh you know student at university if they encounter that first they would have some serious questions about well okay how does the framework work how is it implemented what's the use case for it um and uh what optimizations are being made and uh you know a vast majority of questions come around from just uh the first few days of exploring something new right and uh to sort of distill that curiosity you need time you need lots of time which is what a computer science degree is right um it's taught by um well firstly it's taught right it's not self-taught it's taught and it's taught by people folks who actually wrote stuff like this for example i had a professor who uh worked hands-on on docker and uh right and uh right so he really knows not just what it is but why they made the decisions for it to whatever works day one sort of thing right and uh that that's not to distract from the fact that um you know that a computer science degree is necessary um it's really the um curiosity behind it because uh because learning docker for instance um is great um however um companies such as mine choose not to use it all the time right right some teams in your company will not choose to use it standardization on virtualization or networks or whatever is not standard everywhere right so you need to have this um ability to horizontally horizontally uh scale yourself which is to change context and so you need to learn more theory in some cases right to learn how virtualization is done so that you can only apply it to docker which is you know five to six commands of doing whatever um but you can apply it to other contexts uh other than those systems right and this is uh i think critical for becoming uh a senior software engineer for instance for becoming a senior in this field a long-term career enhancement is uh abstractly knowing what's going on rather than uh learning the specifics or you know just breaking into the industry right well i've heard that you know so much so first of all um that horizontal approach and the theory i think is so important because when you're a junior looking for your first job and every single uh description has different requirements you're not going to see the same requirements in every role and what are you only going to work at your next job has the exact same tech stack that's absolutely insane to have the skills to understand at a glance at a bird's eye view what and why i think that's critical um and some of the most interesting senior engineers i'm you know in community with really can take a look at any code stack any tech stack of anything and they immediately know how to ground themselves in what it is because they have that horizontal learning and the years so it's like it doesn't matter if it's dockers or kubernetes or something else aws they they can immediately read the code they immediately know what's happening they immediately understand even if the the testing is different you know just or whatever it's um meaningless the details because they are able to they have horizontally learned all of these different aspects of engineering and architecture and i think that you that once you have that vantage point and experience you can also explore careers as like an architect versus um a developer yep cool okay so you're in your job now you're not talking to your professors every day so what in your day-to-day are the resources you use when you hit a roadblock it could be people you work with it can be you know whether you reach out to people that you studied with it can be things you google uh the sites you use books resources really the things that ground you um day-to-day so that you're not your wheels are not spinning i mean obviously your wheels are spinning because you're a junior engineer but so that you're able to come back and be like what is the question and how am i going to answer it yeah um if i hit a engineering sort of roadblock which we just i mean i think the standard industry word for it is blocker um i just do like the most common things any person would do is to well reach out to a senior if it's a you know sort of an architecture question if it's or maybe it's an advanced programming question um stack overflow usually gets the job done almost like always because stack overflow is answers of answers from senior engineers to junior engineers usually or um paul goes down check out documentation in libraries when worth comes to worst read the instructions read the instructions isn't it yeah those those really are my top three right well i think it makes the most sense to be humble and ask because i you know having spoken to so many seniors at this point the biggest waste of resources in time is when juniors and mid-level engineers can't admit when they have a question and they conceal it and they try to figure it out alone and then enormous mistakes can be made and you know bottlenecks and the project timeline so coming forward to say can you can you just get a set of eyes on this with me or can i hear your perspective is so important but i know there's a lot of cultures at workplaces where that is frowned upon and there's this kind of like almost hazing where it's like if you don't know you don't deserve to be here um hopefully it's i heard bloomberg has a great reputation for um you know for for working with juniors and getting them to where they need to be so i i'm not accusing that of bloomberg just having so many friends that are new software engineers so um it's great to hear you could reach out and be you know responded to with an answer instead of hazing and i i just hope more companies have the culture of mentorship and and on the job constant learning and sharing of knowledge as you know like that that should be policy not that you disrupt somebody's workflow every five minutes we have to be strong enough to think about it ourselves but once you've hit that whatever the allotment of time is that should be reasonable it's wonderful to know there's someone there to you know reach back um i think that's one of the hardest things a lot of my boot camp grad friends didn't get placed at wonderful jobs and they're kind of alone in a silo trying to figure it out and they're way beyond their ability so um i think bloomberg sounds like it's a great place to work so last question and this is kind of like whatever you want it to be because you know you've gone your path um you've found your first job it sounds like you may even have some idea where you're going from here do you have any advice or anything else you wish to share that you think might be useful to somebody trying to move into tech specifically software engineering don't mind if i think about this take your time right so if someone is trying to start off um [Music] this is sort of weird advice um or i mean not weird more so counter-intuitive um but try to aim for big companies hmm probably more about that yeah and i'll expand on why exactly that is um smaller companies can um may often come with you know smaller budget for engineering departments on what they can hire and may try to cut corners on you know certain funds and uh you may end up in a position where you are a junior developer um and more often than not you will be working with a stack that you may not have full knowledge of so consider day one or day two or whatever when you are working on a project have a little to no idea what's going on and uh you reach out to a senior engineer but your senior engineer is also plugged by many things because well scenarios they don't have enough help from the companies yeah right exactly they are in charge of so many things at smaller companies that they do not have the time really that might be more reflective of the issues my colleagues have been running into is there senior folks are not bad people they are they have a lot of responsibilities you should most of the time well some could some of those people couldn't be bad people i guess but um what i'm really trying to say is that folks want to help out other people but just can't because um right it's a bandwidth issue so so companies that are well resourced might be a better choice if you want to have that mentorship and ability to reach out and be answered correct and uh what i've seen from my experience and at bigger companies is that um well i guess one of the best candidates you can have as fresh you know software engineers is someone with a computer science degree from a well-respected school for instance right and then uh someone that you may have doubts about maybe from a well from not a very well respected let's say boot camp right um and then how does this candidate go about uh sort of like with this paradigm is that you um attack big companies which have had experiences with hiring all sorts of different folks for instance here at bloomberg they really do believe that um college degrees are not the only way of becoming great engineers right yeah i've seen that that they have interesting hiring practices and they've experienced beyond that yeah and my colleagues um have been from various backgrounds um mlm my immediate team not so much but organization-wide yes there um there is a um sort of like that diversity and even at bigger companies um and by big i mean you know the big tech companies you would find the thing yeah yeah sure the acronyms and whatnot um and why is it counterintuitive is that they're hard to get in right they're hard to get it um because they expect you to be smart smart and uh but one thing is that they really don't care about how exactly you got there right um so i really would put my resources into trying to make it to a bigger company and of course um i'm not and do not make any generalizations out of this because small companies can also be excellent companies when it comes to providing resources um helping you build your career in the long term yeah it really depends on the founding team if it's a startup i would i would tell people to if it is a startup ask about your 30 60 90 day plan and what the onboarding will be because then you'll get more of that feedback directly from the you know the hiring manager's mouse what will the support be so if somebody is more interested in that kind of smaller company tech startup there are ways to know you're going to be in good hands but you have to know what questions to ask exactly um in fact at well-founded startups um folks have really good support systems for any sort of incoming engineer boot camp uh graduate otherwise um so i'm not discouraging anyone to just you know not uh apply to startups because just because i said bigger companies are better but just as a sort of uh even as a sort of like a general rule to keep in the back of your mind is that your acceptance um into bigger companies may be harder but your time there will be smoother that's really wonderful advice so uthkirsch i'm so grateful for your wisdom today um if there's anything um you want to share like i can link to it in the description and in the uh you know your linkedin or whatever i'll add that i'll add resources you mentioned stack overflow um and the people will maybe have a little more clarity as to what to do and why so thank you so much everybody for watching and i'll see you next time
2022-09-13 16:20