Do You REALLY Need To Write Tests? - Principal Software Engineering Manager AMA
October 1, 2024
• 267 views
career advicesoftware engineeringsoftware engineermicrosoftmsftAMAask me anythinglive streamlivestreamsoftware engineering managerengineering managerengineering manager day in the lifeprincipal engineerprincipal software engineerengineering managementengineering management careerbig techbig tech amadevin aicognition labsdevin cognitionaicognition aidevin software engineerai software engineerartificial intelligence
Looks like you didn't write tests for that code.
... But do you need to? Do you reallllly need to have test coverage?
We are constantly bombarded with many best practices in software engineering, and testing is one of them.
I'm guilty of doing the bombarding too! But are there situations where we... just don't need to test?
Let's talk about it.
As with all livestreams, I'm looking forward to answering YOUR questions! So join me live and ask in the chat, or you can comment now and I can try to get it answered while I stream.
Today we focus on:
- My newsletter focused on iterating from interviews that didn't go as planned
- Jumping into articles/posts from LinkedIn & Reddit
- Answering YOUR questions
View Transcript
things off just got to get chat and all that fun stuff pulled up here should be good to go we'll get Instagram going it's always the last one to get up and running we get that nice okay cool I think we're all set for folks that are joining Let me refresh my chat here too if you are getting settled in here in the chat if you're watching live versus the recorded version if you want to do me a favor say hi in the chat let me know it's working it's always helpful because I never know and I double check and every I think we're good um hope everyone had a good week SL weekend I am officially bald now this is my head it was uh it was about time it was uh yeah haircut that's right yeah this is what I'm going to be
looking like from now on uh I guess nature was doing its thing and uh trying to take the hair from me and I said no thanks I'll do it myself um yeah but funny enough uh this was this was a long time coming and I started recording my last course with Ryan Murphy and then because it's a a course we're doing together even if it was on my own I can't just like shave my head partway through the course so I got like one haircut before we started filming and then as it was growing out I was like it's time like I need to do it so I had to kind of grow it out a little bit longer we finish up the course and then as soon as I could I cut my hair um and that means when we start filming this next
one I'll be bald the whole time um so I'm trying to get used to Bald life it's a bit uh bit interesting so far people were saying oh you look younger which is interesting because of that does that mean I looked old I'm not sure um I don't know it's weird um it feels really funny so I keep touching my head cuz it's like a new new kind of feeling like one way it's really gross the other way it's very smooth but that's the that's my head so looks kind of funny but hope you guys will still be my friend cool um yeah so haircut uh today's conversation is going to be based on my uh I hope Mrs Nick had some input she did um and her name is Leah by the way she's amazing uh my wife let me let me wrap up
the hair part before we progress um no we've been talking about it for a bit because for me I'm not sure if I can I got to move the mic down when I talk um and the the video feeds delayed so for me this part of my head I could see it receding and I was like whatever I can deal with that but what I didn't realize until the past couple of years is like I'm I'm short so I was seeing pictures from behind that people would take and if they caught the back of my head I was like oh man like that hair is not growing in and it's the back of my head so I didn't realize but what's been happening over the past few years is when my hair grows in it's just like thinner and thinner and I'm like oh no
there's there's only so much runway here uh so yeah she was like she was totally fine with it but she's never seen I've never seen me bald so she's never seen me bald and um I I think she knew the day that I was going to get it done but it was also funny because like I guess she forgot so when she came home from work and I came downstairs from my office she was like ah so yeah she I think she's okay with it she hasn't uh she's not left me yet it's only been less than a week though so fingers crossed and she's still okay with it after a few more weeks but yeah that's uh that's it that's my head um the topic of conversation is going to be about testing and and uh the newsletter article that I posted I will
put that into the chat right now in case you are curious and friendly reminder for folks if you like these live streams if you want to know more than likely what I'm going to be talking about it's generally going to be the newsletter issue from before so this one was framed around like do you really need to write tests for the thing that you're coding and uh [Laughter] uh which haircut AR this is going to be the the whole chat this entire time is going to be about my bald head now this is uh this is definitely the clean clean code haircut uh depending on the angle it could be like hexagonal architecture I suppose but uh yeah it's it's clean code awesome uh the the newsletter topic and what this conversation is going to be about is uh is this idea around testing software
and the reason wanted to write this article is because there's so many resources that are out there for um how to test and you know what we should be testing and uh different styles of test like all this stuff and I think it's great there's lots of different opinions on on this kind of thing but one thing that I don't feel like in my opinion gets enough conversation is like is like kind of this like real world situation of like do you really need to write tests oh did I mess up the title does it say live do really need to write test no I don't even know if I can change it it's messed up for forever um I can't I'm not going to worry about that for now is if it's messed up though I'll edit it after so I apologize if that
went all screwy um but yeah the the idea is like in in real life we want to be talking about like we're writing this software there's going to be deadline for things uh it was really interesting feedback when I was writing about this and I had some like LinkedIn posts and stuff that kind of led up to this but the you know people had like really strong opinions about this which was cool and uh there were some people I was still kind of surprised to see this cuz I'm shocked when um when people are saying things like I never write test like tests are a waste of time I'm still shocked to hear that people kind of have that mentality uh but everyone's got their own different experience and it's not for me to say what's right or wrong but generally generally people feel that
like writing tests is a good practice in software development and if I look at the chat already from Nick hod you need to justify why you are not writing a test right so like this implies that writing tests is a good thing um Patrick here is saying no you don't need tests just don't make any mistakes in your code right good luck um so yeah these are um like of representing this idea that I think most of us would probably agree with we've been told writing tests is a good thing and I'm not here to what I I want to clarify in the beginning of this is like my goal is not to suggest to you don't write tests that's I want to be very clear about that I have a lot of material that I put out um about how to test my philosophies
on testing I think it's very important I'm of the mindset that like um it's not like you know just integration tests or just unit tests like I I really like sharing with people that I think that there are many different ways to test and sort of like it's going to be situational what's Best in that situation for you the team the product the um the maturity of that product there's all sorts of things that will influence how and why you're testing so again goal is not to say hey don't do it the goal is to get you thinking about other types of things and I wanted to write this to just offer different perspective so outside of this article um I had posted on social media sort of like this uh this open-ended question that was like uh something along the lines of like okay
so if you're in a situation where uh I think some people will say like okay there's code we're making changes and it's like untestable code and I want to kind of Park that one for a second but the question that I put online was like if you have code that can be tested so it's testable code are there situations where you still choose to not write tests and it it's not like a it's not meant to be sneaky it's not meant to be like a trick question it's like a genuine question like in real life if you're working for a company you have code that can be tested are there situations where you opt to not write the tests and I had a a lot of very interesting feedback I had people uh people were telling me that the question itself was wrong and that
I need to ask it a different way which first of all I disagree with I'm asking it a certain way for a reason but I thought that it was uh an interesting response because that's just how like how passionate people were about like you need to be writing tests so very very interesting and the the idea that I wanted to kind of put in front of people was like we always have different things that need to be prioritized literally as part of software engineering and not just like computer science or like theoretical things as part of software engineering um what we need to be able to think about is how we are shipping value to customers we work as software Engineers for businesses the goal of the business is to deliver value to a customer so that the customer will pay money that's how the
business stays alive and we repeat this now I'm speaking in very general terms here on purpose but some of the responses that we're coming back we're like um for example you know management or or product owners they're always telling us like there's no there's no time like just get it shipped and we kind of hear this same sort of thing with tech debt right that comes up a lot by the way I'm still sick and I need to cough sorry my goodness I hope hoping I can make it through this I am at the tail end of a a cold today was the first day that I woke up and started to feel better so I was like I'm doing this um tomorrow is still going to be not perfect but Wednesday Wednesday is going to be back to Perfection I can feel it so
I'm going to drink this diet coke okay um yeah some people were of the mindset like yeah like the only time I don't test is because I have basically people in management or leadership positions being just ship it get it out the door we don't care which kind of sucks to hear I've I've seen situations like this I don't think it's I don't think it's uncommon unfortunately but kind of sucks to hear this come up where people are like we don't have a choice like I don't like that hearing that for engineering teams but um because sometimes I'm like okay like is that your perspective or like is there's some coaching opportunity where you can be able to have like a more cohesive aligned engineering team it's not my business but like it just makes me curious so we had some people like that uh
we had some people saying uh they always test it doesn't matter like code is not complete unless it's tested which I think is again my perspective is like that's an ideal way to look at things right I think like I would like that if I had all the time in the world I would encourage more testing just to have more confidence again that's my philosophy is like testing provides confidence I saw in theat chat um where was it again uh Nick hod said good tests help you sleep at night right they give you confidence in your changes like that is My Philosophy so given sufficient time yes we should be writing tests for all the code we have that's again an ideal that I have um so some people were saying that and then others were uh I mean there's a bunch of perspectives but
one of the other ones that I was looking at was like uh people were telling us about situ where they have code that's volatile or changing and like the act of like having to put tests in place when that code is changing so much is like almost like double work and I wanted in my newsletter and what I'm going to be talking about today a little bit more is like that's been kind of my experience so as someone who loves to write tests have testable code uh I have definitely worked in a lot of situations where I have found that writing tests on code would literally just slow me down so that's what I want to share more about today and I want to remind people too I can already see the chats going uh surprisingly like YouTube we got more representation today especially um
especially one sec that's Brad's on Brad's my boss's boss hi Brad I'm gonna read your comment in just a moment um that's cool to see um he's going to he's going to sass me about this at work I better be on my best Behavior okay uh just professional things um no the um more relevant sorry I'm trying to catch up on the chat too now I forgot my train of thought Brad you threw me off um so I was I was saying I wanted to talk about uh skip levels here scatter Brad is awesome though so the yeah so the idea oh I was saying in the chat um hi Brad Nick guys no no no come on um in the chat please participate uh not sassing Brad or anything like that but the idea around if you have situations like around testing where like
we don't write tests or whatever if you're making conscious decisions about this I would love to hear and please share because that helps other people get this perspective as well so let me catch up on the chat though um SP sellers on YouTube finally caught alive solo Dev uh it's hard for me to justify writing tests yeah so that's a good reminder one of the other themes that came up in some of the comments was this idea that like if I'm working alone and I can kind of keep the context of what I'm building in my head then test for some of these people commenting they were saying like test is just extra work it's just extra overhead but some of them were acknowledging that like when we start adding more people to the team like okay interesting like now I need tests to help
me communicate unicate expected Behavior offer some protection so I thought that was a pretty cool Insight so SP sellers thanks for sharing that again as a solo Dev it's it's interesting to hear that perspective as well um here from Patrick I feel like test are more relevant for mathematical functions or really complex algorithms for crud application who cares yeah so um just on these two comments I will say certainly like um I will I used to be really really big on unit Tech like true like pure unit test like you're not touching any part of the external system you're mocking anything that's external that's not being touched uh trying to reduce the surface area to just your your code um and I'm not against that kind of testing but now that like functional tests and a lot of the Frameworks and stuff have come a
long way like I can stand up a mock databas or not mock a real database in a Docker container like like that um I can get a lot more value at a functional test for the time that goes in now so I I invest more that way personally but on the really complex algorithms and mathematical functions sometimes for me in my development even if it is going to be like throwaway code or something if I just need to get something working there are certainly situations for me where I'm still like I'm going to write the unit test because the inputs and outputs are what I'm validating and my brain just gravitates towards that and I can basically gut the entire internals and just like treat it like a black box I got my scenarios let me tweak it all and uh I have these scenarios
to to cover my butt uh for crud application who cares though I think this depends on the complexity of things um so so to give you an example bit over like a year and a half ago last year no it was yeah about a year and a half ago I had um I was trying to do like a sass on the side called meal coach and like I had tests over all of my my web apis like truly like a an integration test hitting the route going to the database coming back um it offered a lot of coverage and I was really happy I did it um but again it's you know for each their own to each their own I'm going to read Brad's comment now I don't know if he's still here um maybe he wasn't even on maybe he just dropped it
on LinkedIn uh let's see though I think it's trimmed so I'm going to refresh this because in the chat it looks like it's cut off so let's see oh no that's the whole thing okay let's let's check it out can AI help to make help us to make this dead simple can people use GitHub co-pilot or the like they get the code coverage we need has AI shown some gaps with doing this job by agree catching issues pre-checking is the best situation yeah so I would agree um with that last part of the statement for sure um catching issues pre-checking is the best situation so the phrase that we say a lot is like shift left right it's kind it's a weird phrase I don't know um but I've always said like if you could imagine it sounds impossible imagine a world where when you're
coding things like as you are typing the code like you have feedback to tell you if it's going to work or not like that's literally as far left as you could shift it as the code is coming out of your fingertips so that would be the ideal spot if you could have feedback about something working or not the next level from there is kind of like static analysis on the code and we can get that a lot of the time in our IDE right so if you're like if you're using visual studio programming in c you can have like Roslin analyzers telling you like yeah that code you wrote that's going to compile that's cool um but we have these analyzers running and they can tell us like this is a bad pattern you shouldn't do this or there's this case that we can't check
like necessarily with the compiler uh not easily at least and this analyzer will run to kind of protect us so the more like we are shifted left air quote shifted left to catch this kind of stuff the better because and there's other posts and articles and stuff on this kind of thing but the later on the further down the line that you wait to catch the problem the more expensive it becomes right so if you think about it all of the work that goes into developing something and then people are reviewing it and then especially say at big companies or if you have a distributed system you're deploying these changes over time and then after it's all deployed you have this bug that's spread everywhere now you have people investigating it you have people recovering things like the cost of a bug further down the
line just gets ridiculously big so the earlier we can catch these things the better so to Brad's question here can AI help us make this dead simple can we people use get co-pilot and the like to get code coverage we need so this is interesting because I think that some of the earlier examples I've seen with AI or people being like dear llm of my choice like please generate the unit test for me and I think that people that are doing this at least from what I've heard I don't know if they're they're questioning like the coverage which I think is an interesting part of Brad's question is like yeah you can use an llm to do it but is it doing a good job and the other part is like do you understand or not if it's doing a good job or did you
just see that it's spat out unit tests that compile and gave you a green light like do you know what gaps there are so I'm thinking his uh his questions kind of scrolled off the off the chat here but like can people use GitHub copilot or the like to get the code coverage we need I think this is a a different aspect of that like can we be using llms to to question what we should be testing never mind generating the test itself that's a I think these are two ideas in my head that I want to separate so can we be using an llm to suggest to us like this seems like it's a spot you should invest more code coverage on this you should write these types of tests like basically telling us where there's more risk or something in the code that
could be very interesting um and like yeah I think co-pilot is absolutely capable of that but I think that at least from what I've seen in the tooling like you as a developer have to be thinking that you have to go ask it it would be really cool and I can imagine that we'll see this you know in the not too distant future that like it will just be recommending this kind of stuff to you as you go um beyond that I wonder if there are things like it could just be generating tests and stuff and running them for you as you go I I can't I can't imagine that's too far out so um I don't so to to truly answer Brad's question I think AI will be able to push us in that direction to make it dead simple but I think right
now we're at this point still where people need to be asking these questions and when I after I get through some of the chat there's a lot of chat and it's awesome to see YouTube is definitely pulling ahead on the on the chat usually it's Twitter Twitter you're not doing it um Brad long time listener first time caller yeah thanks Brad um so yeah that's that's my sort of idea there but the when I get over to the newsletter what I want to talk about are these situations where like I have found there isn't actually value in the test if they were written automatically by Ai and I wasn't investing the time I think that would be completely different it ends up being for me a tradeoff in time so we'll see that in a moment um okay into the chat though uh unit test
on smaller isolated logic I'm kind of reading Nick Hodge's comments they might be off the screen though so unit test on smaller isolated logic integration test elsewhere be careful with Mock and F human plus automation UI tests and UI World um okay so on some of these thoughts um for me used to be unit test absolutely everything and I would write very unit testable code and then integration test only as needed I've kind of flipped this around so for me it's basically integration test to get as much course coverage for as low cost as possible that's kind of how I've been approaching things now I still write code to be very unit testable in like a pure test sense so then I can go back and touch on complex logic or stuff that I don't have confidence in go unit test that uh I don't
use fakes or stubs at all because um I think that this is my opinion on this I'm not saying it's wrong but in my experience um a fake is just more code that you have to go test and it's not tested because it's in your like testing project whereas mocks serve a purpose of being like they are designed to be set up and mocked and I only use strict mocks um so I use theq framework if you set it up it has to be called so I use the verify part of it and people will say well that's not real and I say I understand I'm not trying to test the system I'm mocking I'm trying to test that I'm calling it and responding to things properly and that means that I can mock out error situations and have full control but that's why I
like using mocks fakes to me give you uh my experience false confidence I've seen people like fake uh databases by like putting like a a dictionary or even an in-memory database and then they're using like link to SQL if you're from C and net land and the link to SQL Works differently for an inmemory database versus the real one so like you get false confidence as a result of it but these are things in your own experience you will pick the tools they work well for you um for I don't like using a human test at all except for validation of things uh and then after a human has done it and they validate it I would say automate it uh and in fact I actually like finding ways to automate UI tests without even showing the UI which sounds kind of silly but um
I've definitely had a few different uh UI testing Frameworks where as much as possible we would make UI changes testable in code with like being headless which is pretty cool um um AJ working with compilers lately never thought tests were so necessary interesting yeah um I assume that means that you're finding them very very necessary now uh before building CPUs they simulate and write many test testing everywhere uh okay find 100% test coverage purus and meaningless test and then that often makes it easier to miss the actual Corner cases yeah it's a bad sign when you have to change test on each refact uh to Lenny's comment here I would say the um I do have many situations where I do test um implementation details and I've talked about this a whole bunch and people people get very polarized by it because they'll say well
no you should never test implementation details and I I have a video on YouTube where I demonstrate that the only way that you can get the test coverage on this with confidence is literally to test the implementation details not to say that that's the only thing you should do uh I do think that the more that you if you write pure unit tests on things where you're testing implementation details cuz you have everything mocked out that's going to be very brittle for refactoring um I have also worked in teams or that's all we did and it worked very well my point with all of this is like there is no right and wrong and you got to do things in your teams and in your projects that work if they're not working you're working against your tools don't do that that like adjust right find
the things that's going to that are going to work today I would not go unit test the way that I used to unit test some projects um but if you I could if I could get him on the call uh I could phone up a previous colleague I could phone up the test strategist as well uh and probably another guy from the team as well and we could all tell you with confidence that the way that we unit tested everything in that project worked extremely well for us it was very engineering Centric even with this test strategist that was not in the code but we could show him the unit test and prove to him that things would work it was it was great but that won't work everywhere and it won't work for a lot of the stuff I'm building today either so things
to consider uh now some companies are hiring software Engineers to audit code generated by AI yeah so uh so who should create the test the AI syster the testers yeah this is going to be interesting right we're in a situation where we can have a lot more stuff generated by machines and we have to kind of figure that out um yeah Nick hod you you kind of you hit the nail on the head the answer is it depends that's the secret to all of software engineering uh and 99% in projects die before seeing significant amount of real users so I don't write test there we go okay that's the perfect segue game and music Melting Pot I'm going to jump over to what I was writing in my newsletter um I suspect the newsletter part of this will go pretty quick I spent like literally
30 minutes talking through chat so thanks folks for being so active today this is sweet um but I'm going to talk a little bit about my circumstances in the newsletter but as uh game and music Melting Pot was saying 99% of projects die before seeing a significant amount of real users so I don't write test before reaching that point otherwise it's a waste of time and resources and the reason that this is a perfect Segway for me is because before Microsoft I've been at Microsoft now for four years before that I worked at a digital forensics company digital forensic software and I spent a lot of time prototyping things so like one of the primary things I did at my time during my time at that company was prototyping things I built a lot of their um sort of original uh base like code base
um so if they were standing up new products I would go basically prototype things we'd feel it out and then it would either Crash and Burn and we'd say no or we would go build it like and they would stand up a team and they' take it over so like most of my eight years there and even I had internships where I was doing prototypes like a lot of my career before Microsoft was prototyping things but uh the other part to that is that um I had to balance that with stuff that would live on so what I wanted to talk about again it's going to be probably pretty brief is like uh let me I'm just pulling up my newsletter so I can kind of scan through it not miss anything um so on the on the idea of prototypes like because you might
say like again I posted this online this question about are there situations where you choose to not test and some people were saying your code isn't done until it's tested but when we talk about things like prototypes um I don't know if a lot of people get the and their and their software careers so like be prototyping things like as a as a dedicated function you might have smaller things you're doing a proof of concept and that is still very much the same it's very applicable but from my perspective and from doing it professionally the goal of a prototype is to answer a question and that's it the goal of the Prototype is not to live on that's a cool side effect but like it's not the goal so the kind of couple of questions I wrote down like I said it serves a purpose
to help answer questions for the business so you know is it going to be feasible do customers even want this like what's uh or is this technology viable what's the impact of us you know building this thing and switching over to it like prototyping is about answering questions and to to prototype effectively we always said like do it sounds really kind of kind of funny to say out loud but do the least amount of work to answer the question and we would literally say like if um for example do customers want this do you need to literally code up a proof of concept to answer that question or could you just have a UI mockup done up in a tool to show people because if that's the easiest way to have that question answered do that so for us prototyping wasn't always just writing code
it was looking for the easiest the quickest way to successfully answer that question so when I talk about my experience being a lot of prototyping this was a lot of what I was going into was like okay like we have this idea and we're talking about like digital fics here so we have this interesting idea and we might be trying to say like is this even a feasible thing that we could go look at so okay well how do we go answer that do we need to go prove any of the techn ology um like sometimes for feasibility it was more around like write some code to see like can we get some sort of traction in the code to prove we're moving in the right direction if so like if as long as we can prove it's feasible we might just stop early and
say yeah like anything beyond this point is like proven technology pieces we're picking like we know what going to work like we know it's feasible to build well that's one question you you have to ask too like okay is this a thing that customers want is this a thing that um is feasible customers want um is it even does it make sense for our business to do it right like these are all different questions that have to get answered it's not just write the code ship it um so this can look very different so uh on YouTube from Brad 9987 sure it's great to do some testing during the planning phase but when you're ready to go you go a book that resonates with me is boiled down to think slow execute fast do a lot of thinking up front to understand a lot about
the work you're doing and then once you're con uh convicted go yeah okay so um one second I'm just kind of scrolling through okay so uh in my newsletter I found basically uh and I kind of touched on some of these already but let me switch my view hopefully this will come through for people on Instagram okay I apologize if not it's probably going to be cut off a little bit but um I put in some quotes that people kind of responded to um so I talked about this one already like if the app is in a lot of volatility tests are more work than they're worth right so then they said I brought this one up too if the app is stable and the team is growing I'd expand that so using um sort of test is a way to uh kind of communicate
expected uh functionality right kind of leaving the idea of prototypes in this case so but the the volatility part I thought was interesting I thought that resonated at least with my experience with prototyping things like I'm literally just throwing stuff together who knows if it's going to live on uh this person said if I'm going to write them I prefer to start at a high level business requirement so this is where we're talking like integration tests kind of over other things so that's one option we kind of talked about that as well hello on Facebook thanks for joining uh personal projects don't have tests and then when there's more than one Dev I write them so again using tests to communicate things right uh this is expected functionality other people have to work in here let's make sure that we have test to kind of
prove that for us this person said do I write tests for everything definitely not it would be a waste of time right if people write unit tests for things that don't matter on uh on that scale like every class has test why right and then why not test the uh the actual whole path of the application so this person's already saying like they're kind of differentiating unit test between like a functional integration test um so I thought that was interesting too so a lot of people were breaking down that question into like the types of tests which is again interesting perspective to have so on on the topic of prototypes though a lot of and again if people haven't done a lot of prototyping in their in their soft software development career so far prototyping is interesting because you have to be ready to just
like throw things away and I don't think that a lot of people are comfortable with that and like from my experience uh like to kind of share when we were standing up prototyping team people were like oh like that doesn't really seem fair because like the prototyping team is the team that only they get to look at the new shiny things which isn't true but like I I can see that per ction right like it's prototyping it's only going to be new things but the the thing that was missed was that prototyping a lot of the time means that you you basically build something and throw it away and there were people that truly like they weren't okay with that because they would be building things and they want to keep building the code they want to make it better they want to improve on
it they want to make it robust and it's like there isn't time for that and it's not it's just truly not a good use of the developer's time in the business for that goal now here's where it gets really interesting is because yes prototyping a lot a lot of stuff gets thrown out but what's important to note is that when you throw out a prototype it's not a waste and I think there's a bit of a misconception there is that hey look we wrote this code like we didn't test it we got our question answered and now the end result of that is like we're not using this thing it's garbage someone might say well that code is thrown out so you just wasted all of that time building it which is why we're trying to minimize the time we're putting into it but it's
not a waste because the goal was just to get a question answered right it served its purpose so it would be wasteful if we were going and adding tons of tasks going to make it more robust trying to um use a new fancy architecture that was slowing us down unless that was the goal of the Prototype was to try it out but these things could be very wasteful if they're not serving the goal of the Prototype um so yeah Nick hod is putting some comments here prototyping and proof of concept is volatile proof of concept and prototypes can be framed as the test yes that's exactly it right so you're setting out to answer a question with these okay what happens now in the situation where the Prototype is not garbage where you get the question answered and uh maybe you started off by trying
to prove some feasibility and you had to go code something up I have to cough sorry guys falling apart um so you go you know code something you get a proof of concept working and it's minimal but like you're like okay like technology wise we can see this kind of working it's cool and then the question about uh you know if it's going to be something that customers want like you already have this prototype that you proove the feasibility and then you're like hey like we can basically just use this same thing to to get that question answered too so like let's just use it and now you got customers going oh yeah we would use that you've proved the feasibility and you're in this situation where you're like okay well like we kind of we're just tossing this thing together to build this prototype
we acknowledge we didn't want to write test and now we're saying we want to use it and it gets kind of crazy because then you got people like on the sales and the marketing team they're like and the product team and they're like we we customers want this and we have a thing that's doing the job like when do we ship it like when can we start selling it and it's it's exciting and people are jazzed up and it's like you got to remember like it's not it's not go time yet right it might feel like go time it might seem like hey look we got interest like what could we possibly do to move it faster but now we have to start talking about what we're building here right so we have at this point a prototype that's probably been rushed it's probably been
hacked together it um we've proven the viability or like the feasibility we've proven that customers have interest uh we got sales people and marketing people and product people that are stoked on it they're like this is definitely a thing we want to move forward with but what so you have a couple of options one is that you say okay well we obviously Rush this thing like scrap it scrap it and go build it properly because now we know we know we know that we've answered the questions we can go build this thing properly um I've been in situations like this for sure where we uh we stood something up as a standalone product and just to to get it going and then people were like cool but like that's not the way we want to integrate it actually like it's not going to be a
standalone thing so we would get rid of it and then go build it properly in the spot where it's supposed to go um and I can see like even Nick Hodge put into the chat it might be feature flagged as beta so what would happen sometimes is we would take a standalone thing that was just like a the proof of concept you could scrap it you might take parts of it and then we would go put it into the main product and feature flag it or something and that way we could release it early some customers they could try it some options there in other cases we would just take the Prototype but what needed to happen um and this varies a lot I'm not saying this happened perfectly all the time but what needed to happen is that we were like look like we
can we can go keep finishing up the Prototype and get it to a spot where we can launch it but like we need to remember it's not just adding more features to the Prototype now we've immediately incurred a ton of tech debt to get here and yes it's working but like we need to pay down as much of that Tech debt right now or else we can't even take the next step so sometimes there was this decision of like okay look like is it quicker for us to just kind of make it more robust right now and move forward with the code or is that already so much work that we have to toss it but at this point this is generally where we would start saying okay what pieces of this are going to live on because either you were taking some of it
and moving forward with it or you were scrapping it right and if you're scrapping it there might be a couple of pieces but the reality is if there were parts that were living on you would say okay well this is the part that lived like we probably want to test this make sure it's covered make sure it's working because that is the part that lived on and again from doing this enough times personally the way that I would write code even for prototypes is as much as possible I just pick patterns and practices that allow me to test effectively and that meant that when it was time to move code from prototypes it wasn't tested most of the time but when we would go lift it out and put it somewhere else to go write tests on that now would still be very doable and
for me programming in c and.net two things that allow allowed me to test the way that I test more effectively was using a lot of composition so not inheritance hierarchies a lot of composition and using interfaces to basically make sure that I could work against an API and that meant if I wanted unit tests I could mock out different services that I didn't need to cover especially thirdparty dependencies so those two things for me used an awful lot of that to make sure that if we needed to have part of a prototype live on that we had a way to do that um okay so let's check the chat here um at test of the Prototype done this at least three times the last three months if it's in customer hands it's no longer a prototype yeah like that's the thing um and the interesting
part is like good luck convincing other roles about that I mean depends on your organization right like where I worked before uh we worked together really well across the different roles but you could tell the excitement of uh you know sales and marketing people that were like you're telling me this this is a thing that's going to work that people have been asking for and like you're going to build it like I'm so ready to start like trying to get people to to buy it but like we'd have to let them know like look like even if we have beta users and stuff like it's not a prototype anymore we have to be more uh cautious about how we move forward and and truly have things like test because it's going to be real um okay and then then you're going to be as at
features based on customer features then you refactoring then you need test yeah that's exactly it so especially when you start integrating into a main product like if there's already an existing code base and you're prototyping something that's going to be functionality tacked in yeah like that's exactly right what Nick H just saying and hello on Twitch to high emotions good to see you okay so as I mentioned that's going to be a pretty quick one from the newsletter uh again folks if you have situations where you have decided to not write tests I would love to hear more about that um like I said at the beginning of this sorry if you join late but my goal was not to to suggest to people like don't write tests I I actually enjoy writing tests maybe I'm a little bit weird but I like writing tests
I like feeling confident my code changes but there are absolutely situations from doing prototyping for almost a decade where I'm like it just doesn't make sense for me to do now uh I figured today I probably will try to jump over to Reddit and we can go through some articles together I say articles posts and comments um I wanted to talk a little bit about one of the reasons why this is kind of relevant for me talking about testing because I'm like I said I'm at Microsoft now I'm not doing prototypes So what had come up recently for me uh I kind of shared this on the live stream and set up before is like I'm building a SAS on the side and it's what I use for all of my content creation it's called brand ghost so if you follow me on social media
you see the stuff I post like everything is posted through brand ghost um and one sec sorry there's a gladson on um on Instagram I will come back to your question in uh just a moment I want to kind of finish this thought though so the way that brand ghost has worked is like there's been a backend for it that I've been building build that I've been using for a long time and I use it to basically allow myself to post to social media across platforms uh which means if you read my social media content it's very likely that I didn't go on to Twitter directly or onto LinkedIn directly or even YouTube YouTube's a little bit of an exception for long form videos but I generally don't go onto the platform to post unless I'm commenting and that's only for now so I use
brand go specifically the back end for it to be able to get my content to go out but recently we uh recently as in like the last 6 months or so we've been building the user interface on top of it we've been getting people to use it and what's happening now is that it kind of like was almost like a bit of a prototype in the beginning because we're trying to again answer questions like are people even interested in this is it feasible so we're answering some of these as we build it out and we've been able to get away with some things like for example I go to ad functionality some of the stuff is kind of weird with social media because like to make sure it works it has to be live so kind of I don't want to go into all the
details but um there have been situations were like in production I'm I'm testing something other people can't access it but I'm able to do it in production still and it's been working and it's fine and even if it's broken it's only breaking for me I'm the only person that can see it in production but now that we have more people that are getting onto the platform this kind of thinking through some of the questions and the or the comments in the chat it's like it's not really like prototype territory anymore like there's people that are using it and if I break something from doing stupid stuff for testing like that's embarrassing because it's entirely preventable so I I was thinking about this a lot when I wanted to put this article together because like I said I love writing test and having testable code and
for a lot of pieces of brand ghost it was not tested and it really resonated with me some of the comments that people were leaving on on my on my post where they were saying like oh it's just me like I'm the only person working in the back end I can keep the context up here as it's growing though it's a lot more difficult and then we onboard more people to help and it's like okay now I need to communicate these things with test so all of these things were very much resonating with me and now I'm at the point where I said okay like it's too risky to start making some of these changes especially with users that are actively on the platform I need to make sure that I can still validate things I can still make changes rapidly and now I'm leaning
back into a lot of the styles of testing that I've been using before so in particular for me I was doing a lot more testing on uh like using test containers and Docker to have my to have MySQL I wanted to say my MySQL instance but that's too wordy to have my database stood up there we go and uh that's allowed me to iterate really fast because I have high level tests on like large code paths so I get a lot of value out of that so another thing I'll mention just going to switch back over to here so uh I actually so I have this other YouTube channel and I've been trying to share it out a little bit more but um I actually was talking about this in this most recent video I think I can share right into the chat um so
if you're curious I do have this other YouTube channel it is a car Vlog basically so when I'm commuting to work to go be in the office with Brad who was on the in the chat earlier uh I I basically have this Vlog that I do now because uh I don't I like the people in the office I like being at the office but I don't like commuting so uh the days that I go in I try try to make sure that I film a vlog going to the office and coming back and that last one that I just put into the chat if you have access to the chat um that is an episode where I was vlogging and talking about like uh getting into like turning the test back on and kind of getting going with that so um just wanted to share
that with you if you're interested otherwise um because this is going to seem kind of ridiculous because I know there's a bunch of people from YouTube on here this video will go to YouTube but if you're not where I do have this YouTube channel Dev leader um this is where my polished content goes the Vlogs in the car are not edited these ones I have an editor do for me so uh he's much better than I am at editing things especially compared to the Vlogs where I don't edit anything at all but if you haven't checked out my main channel uh that's where I have my tutorials and stuff like that so do check that out so let me get back to the full camera here I'm going to answer some questions um gladson on Instagram that you guys can't see it in the shared
chat it doesn't go there so I apologize for that but question is I'm really new to software and very much interested will you suggest me where to start I'm a graduate in agriculture science but like to switch to software please advise cool so first of all congrats on considering software I think it's an awesome spot to be in I personally love the fact that like software development can be in any domain right like you could be developing software for agriculture you could be developing software for space for finance for digital forensics that's what I was doing before before Microsoft right so there's so many different domains that you can go into that's one part the other part is there's so many form factors that you could be programming for like mobile web-based embedded programming so it's almost like when we say like you know if
you're interested in software there's so many options that it can almost be paralyzing to figure out like where do you go what I like reminding people is like there is no wrong answer for picking one spot to start and I I mean it seriously like you could uh at this point in my career I've programmed for like desktop applications embedded devices for Android phones iOS devices web applications uh I manage teams now for basically planetary scale stuff at Microsoft like everything right and it started with like strictly windows form based applications like you can start anywhere and what I recommend you do gladson is that if you're interested in starting I would say try to um couple things one is like I highly recommend you consider some of your hobbies um so for example uh if you like watching movies you like listening to music
you like playing video games Sports pick something related to your hobbies and an example I like to bring up is like if you like video games and you love po Pokemon for example you could go make something related to Pokemon maybe people don't like Pokemon pick anything right but you could say okay I like Pokemon that will keep me interested and that's an important part I like people picking Hobbies because it will be interesting to you that means when you get stuck you'll say at least I like Pokemon and this is exciting for me to see this come together so I will keep building it the next thing that I want you to consider is like what type of software do you want to build like and there's no wrong answer cuz I just need you to start somewhere because you can always switch and
it's not like you're going to be building a Pokemon app for forever right so if you're like well I want to build something related to Pokemon and I want it to be a mobile application great okay now we have somewhere to start so you could just go online pick any um mobile development framework you could go program for iOS or Android do a little bit of searching you can ask chat GPT like you know which framework should I use which language should I use and I would just recommend starting with one thing related to a hobby the idea behind this is that a lot of people will go the other way and they will say I've been watching tutorials some people know where I'm going with this already but it's called tutorial hell and what happens is people are going to say I'm going to
give you an example the same thing um say you arrived at the fact that you wanted to go learn um I don't know what's a you want it to go learn web development and you're going to use uh react and you're going to use typescript so what you do instead is you go on to YouTube and you search react tutorial and you just keep watching tutorials and what happens is you're watching these and you feel like oh I'm learning so much I'm learning so much because you're covering a lot of material I couldn't mute in time I'm sorry the cold is getting the best of me so you're you're consuming a lot of material and it feels rewarding but the challenge here is that if you're not applying it it's not actually you registering properly in your brain so what happens is you get stuck
that's why it's called tutorial hell because people that get stuck in this pattern you say great tell me about what you're building and they're like I don't like I haven't started I've been watching YouTube tutorials for two years and I can't like I don't know how to get started coding something and that's because it's the uncomfortable part is coding something and you need to do it and you need to practice and you need to get stuck um it's common it's okay like that's how all of us got better at software development we go build things and we get stuck and then we go look for the tutorial the article whatever and that's why having a hobby associate with it makes it better so when you're frustrated that your code's not compiling you can say well at least I'm going to be able to see Charizard
on my screen when this is all done because I wanted to get this Pokemon app going right like it keeps you motivated for other reasons but that's what I would recommend doing so gladson there's no wrong spot to start any programming language is fine any form factor that you want to go program for is fine at the end of it you're going to make progress and you can switch languages you can switch whatever it will all work but you just have to get started building stuff so I hope that helps and I wish you tons of success in your software Journey software is a totally awesome spot to be in uh hi emotions I'm in college for cyber security I was thinking about switching major to software engineering what are some pros and cons about software engineering sure okay um so cyber secur is interesting
for sure I think that's a very uh I don't know relevant field to be in so I wouldn't try to necessarily like deter you from cyber security uh certainly not and I think that probably at different levels of cyber security probably different amounts of like scripting or uh sort of knowledge of like algorithmic thinking would be very valuable so uh I'm not here to say don't do that I think job opportunities and stuff will be great so I think you're in a spot it's great if you know if you're interested in cyber security stick with it uh and I also think that like software engineering I'm biased obviously I think it's a an awesome spot to be in as well um the interesting example I want to give you here right is like I went to school for computer engineering so very close to software
engineering and when I graduated I I've already mentioned this in this live stream but like I worked at a digital forensics company it's not quite cyber security but I worked in digital forensics for almost a decade and before that company I knew absolutely nothing about digital forensics what's cool about this is like as a software engineer or my case a computer engineer whatever like doing software development you can go into these different domains so you could go work in cyber security as a software developer and you might not have any previous experience in cyber security get into that space doing software development and then learn tons about cyber security so one of the pros in my opinion about software engineering is that you have this ability to take software Concepts and take them to different domains so uh when I was answering gladson question one
of the things that I mentioned was like was this concept right like you he said he has a background in agriculture lit I'm not I wish I was making this up it's actually a really good example one of my first internships was embedded software for agriculture right two very interesting things that don't seem like they go together I was doing an internship where we were making embedded devices for needleless injectors to medicate farm animals so I would never have been exposed to that ever in my life if it weren't for software development right so um I like that as a pro for software engineering if you are the kind of person that likes algorithmic thinking uh I definitely think software engineering is good cyber security is also going to be good for this because you'll have to think about intrusions different types of protection things
like that you kind of have to think through scenarios and that's kind of like algorithms so that's one thing um I think in these types of roles I think a lot of people don't consider the people aspect a lot and so sometimes people might gravitate towards like uh this idea that oh if I work in cyber security or software engineering I don't have to deal with people um and I see Brad this if Brad is still listening in the chat Brad can if he's willing to type a brief message about this Brad is Brad is my skip level manager at Microsoft Brad Brad's up there and when I'm saying that people skills are very important in these types of roles I'm sure Brad could tell you how important people's skills are and I think a lot of people get into like software engineering cyber security
like very technical Fields thinking this is perfect I don't have to deal with people you have to deal with people it's a very important part of your job so I just wanted to to mention that for folks that like you need to be thinking about that don't try to escape the people um cons about software engineering I think right now it's very competitive um but I I want to be careful how I say this cuz I don't want to discourage people I think there's and I don't want to come across like condescending either I think that there are a lot more people getting into software development and a lot of them are focused in a very similar skill set and there's nothing wrong with this that's the part I'm trying to be careful about nothing wrong with it I think there's a lot of people
that are uh jumping into a lot more like web development front-end Frameworks and things like that again nothing wrong with it there's a there are a lot of people that are asking for this as well so the demand is high but I think the supply is even higher and the reason I'm saying this is because from being on LinkedIn a lot I notice that people are struggling and they're going yeah but like I know JavaScript I know typescript I know react I know angular and it's like that's and that's good and it's awesome that people are are getting into software development but the problem ends up being that like you and all of these other people are doing the exact same thing so I think that it's important um I think it's important that if you are kind of doing something that a lot of
other people are doing you just got to find ways to differentiate yourself but I think that's one of the cons right now for software development is like competition so again you could do something just to give you an example if you're like hey I want to switch into software engineering great like consider that and maybe one way you could stand out is by saying well like I have all of this uh interest and experience in cyber security and that might be a really cool thing that differentiates you from other people so I think that's how I might try to address that con of software engineering but High emotions let me know if that answers your question I hope that's helpful um let's okay let's see what Brad had to say I put that I put his question off for too long I hope hope he's
okay with that um great advice from Nick thank you Brad I appreciate that you can attach your passion at tinkering with code you're going to make progress it's also nice to have a friend who's ahead of you yes that's a really good example I recall being stuck and having someone who was way ahead of me who could get unblocked friendship helps friends help sorry Tinker with friends twf Tinker with friends it's a great acronym I'm gonna I'm going to use that one at work when I go in on Wednesday so um no thanks Brad I appreciate that I think it's a cool um cool reminder like I feel I'm trying to think back I feel like I didn't have a lot of friends um I should leave finish the sentence right there I didn't have a lot of friends I have a lot of friends
that were super interested in software development I think in high school when I was learning to program there were definitely people like I had a bit of a weird circumstance I they let me like skip ahead in programming so I got to go into like the grade 11 class as a grade n so I had people that I would consider they should be like way smarter than me they're two years older um so it was cool for me because I had these people where I'm like oh man like this is cool I have people to look up to and what ended up happening was like because I was so into sare like just programming in general as a kid um by the time I went into like University and stuff my class felt like it was very split like there were some people that liked
to program and other people that they actually it weird they like hated programming but they were really good at math and they liked math I feel like there were just two dichotomies like that and um I I feel like personally I didn't have a lot of people to surround myself with that that love to program and if I think back on that that would have been so cool to have like um I think what happened for me was like I was the the nerdy friend at of my friend group and I would be like coding in my room and then like people would like come into like our University house and like oh like Nick what are you making now and i' be like I'm making my stupid Pokemon game and they're like show us and then I would be geeking out on the code
and but like I didn't have um I didn't have like like close friends that were like really into programming that I could like uh talk to about that kind of stuff and I think that it would have helped a lot uh but I was like personally driven so that's a bit of an exception but I think for other people if you are in this situation where like you're trying to get into it and like you you're you're just finding it like challenging I think finding a friend or someone or someone who's like one step ahead could be could be super helpful so I think that's great advice cool okay um let's jump over to Reddit I'm nervous Reddit always makes me nervous I'm not post on Reddit though we'll see we'll see what's up we're go to experience devs I'll get my screen shared in
just a second here okay um let's do that just pulling it up I guess before I should do this I'm not very good at this so before I go to Reddit a quick reminder to folks let me get my screen switched over um I did launch a course recently this is the the sales part of the of the live stream I did launch a course uh with Ryan Murphy uh on dome train it's called nailing the behavioral interview if you want to check that out um this is a really cool one to make uh Ryan and I are going to make more choruses together uh but this one is the first one on dome train that is not specifically like C and doet and I'll just kind of scroll the curriculum into view if you want to check it out um here it is so
we kind of go through a bunch of different topics regarding behavioral interviews these are not your coding and your system design interviews strictly behavioral sorry if you're on Instagram it's totally cut off uh I apologize it's a vertical video my bad but um yeah we even have like a mock interview section and what's cool about this section I really like because we asked each other interview questions and we didn't prepare each other with what the answers are going to be so the answer are uh are ones that we didn't know we were going to give each other and then that way the analysis is actually real so um you can check that out uh we have more on the way but um this is exciting for us to make it looks like should mention it looks like the sale is still active so that's 30%
off it's a pretty good deal I don't think that's lasting much longer end of September so literally right now uh I don't this isn't my site so this is Nick chaps site I don't control the sales it's just coincidence that this ends like basically real soon so no pressure but if you're interested in a course on behavioral interviews you can check that out Ryan and I both also post content regarding this kind of stuff for free so if you're just interested in kind of perusing stuff about your career advancement you can uh check us both out online uh Ryan's got a pretty big following on LinkedIn and also his own substack newsletter so with that said let's jump over and we'll see what we can get going on here um I haven't yet looked so this is going to be kind of interesting to see
if there's anything worth diving into generating on it Trail [Music] no Consulting come on there's got to be some good ones here it's an ad oh this one's cool okay let's start with this one um staff Engineers how much decisionmaking power do you have and okay so this is an interesting one to start with because the word staff um different companies have different words for this kind of thing so uh at least where I am in Microsoft we don't have staff I believe this would be the equivalent to like what we have as principal so we would have like a uh like a software engineer a software engineer 2 senior uh and then principal at that point and I guess that would be staff in this case so I'm making that assumption as we go read this together so a switch from management to staff
a couple years ago interesting uh by the way people do this right manage agement to staff so they went from being an engineering manager I'm assuming to uh to back to an individual contributor a staff a couple years ago and while I was told be retaining autonomy and decision-making power I found that in practice I often need to pull in management to back me up to have any real sway okay examples range from the ability to get important work prioritized to simple things like getting upper management to sign off on proposal okay I'm curious to hear how others in staff positions what's your experience been and any tips for building up autonomy on the staff track so this is interesting um I'm not reading the comments yet because I want to give you my perspective first I think that for me Microsoft with my principal
Engineers I actually have an expectation of them that like they do have that autonomy and that's not to say that if they ask for help or they want to collaborate on something that I'm like no way man you're principal like get out of here um not the case uh but I I do kind of expect them to have some of that autonomy that kind of Drive where they're they're kind of looking for the opportunities to do things right that might mean that they're identifying things collecting information on it and trying to put a proposal together to start driving it at that point I would say they're not just disappearing and doing work they will be trying to get you know buyin from team members or especially at principal level staff in this case if it's going to be cross teamwork that might be something where
it's like they're starting the communication they might loot me in to say like hey look like I want to make sure this is aligned with business priorities like you like all the principal Engineers I've work with at least in my experience it's been very good where they're well aware of what my management is telling me so if I have leadership saying these are the goals like my principal Engineers already know that um the difference might be if I have like late breaking updates or something where I might try to switch around um or it's being switched around I have to communicate it that would be the exception but um usually I'm kind of expecting them to have a little bit more um kind of autonomy to start driving these things and it's Nick hodj just put into the chat a manager's job is to help
prioritization so that's exactly where if I had principal saying to me hey I've identified this like these are the right stakeholders I think I want to bring in maybe it's an architectural conf we have to have um this is where ideally like I'm not I'm not the person who's going to tell them they're right or wrong but I might need to step in to say look like um in terms of where we can afford to be having people focused that might not be a priority right now doesn't mean that it's not good or it's not valuable but it might not be a priority given all the other things that we're being asked to do so um to Nick Hodge's point in the chat one of the things that makes an engineering manager's job kind of challenging one of the most challenging Parts is like when
it comes to work that's getting done it's not it's not just like how do we get the most number of things done and it sounds kind of funny but um you have some people that will say like they take a management perspective is like it's purely a function of like how much productivity can we get how much like how many pieces of work can we turn out and I take the perspective the exact opposite direction which is like management for me is 100% people first and the reason I say that is because if I can enable my team to do the best work possible that if I just let them know the direction and the priority and they're very motivated and they're very suppored Engineers are very very smart people like if I enable them to do work effective L they're going to be doing
work effectively and it also means that if I need to draw a little bit more from them like we have tight deadlines that come up or we have some U outage or something like if people feel supported and they don't feel like they haven't had autonomy and this kind of stuff then people will be happy to help because they feel like they're supported and growing in their career so um when it comes to prioritizing things sometimes it means um balancing people's interests their skill the urgency of something it might mean uh some learning opportunity could be a whole bunch of different things maybe I need someone to uh have a a mentoring opportunity so I need someone to go help out someone more Junior and they have to dedicate time towards that so it's not quite just like clearcut business says you know ship as
many of these things as possible I have to layer in the people element which makes it kind of uh tricky sometimes um uh managers have a higher Horizon understanding of organizational details I'm just reading nick uh Nick holl's comments many things that staff lead Engineers shouldn't have to worry about yep and good manager should give air cover from the organizational BS that always exists y that's true so I think those are great comments um I'm going to read through some of the comments on this threat and just want to double check High emotions um what the comment is here okay I'm going to high emotions I'll come back to your your question as soon as we get through this uh this Reddit post and then that way we answer it for you um so this person says to answer this about as much as I
did as a senior not complaining though if the company wants to have a a BS meaningless position and pay me more for still being a senior but with a different title I'll take it it's sound of like I don't know I don't like seeing stuff like this not not not because the language whatever um but like kind of like kind of hurts my soul a little bit and don't get me wrong like everyone's allowed to be motivated by literally whatever they want that's totally okay but like to me like I don't like reading a comment like this because it like it feels bad it to me it suggests like this person's working at a spot like where like they don't love it and they're saying like they're not complaining but like if the company wants to have a meaningless position and pay me more just
for a different title like I'll take it yeah and like I wouldn't blame someone for that but like it doesn't it doesn't feel good to me because the idea is that the promotion into the title is supposed to come with more responsibilities and expectations and I can't I don't know where this particular person works or what their circumstances are like it's not fair for me to comment um but it kind of feels like there isn't like a like that kind of career opportunity there and it's not it's sounds like management doesn't care so I don't like reading that the other part that bothers me is there's 425 votes on it so like that ratioed the original post right like man um and like I said don't get me wrong like I'm not going to obviously if someone's going to get paid more and get a
fancy your title for doing the same thing like obviously you're not going to say no to that but like it's just not how I would want to go through my career I guess like Yeah the more money Parts nice the title's nice but it would be nice to to be like I'm getting more responsibility and I I'm I'm kind of leveling truly leveling up as a as an engineer not just like leveling up my salary so that kind of sucks to to see but um okay what else what else sir how do these comments work at a technical level I have tremendous decisionmaking power for technical architectural decisions about other more organizational things I have to work with my peers in leadership to move the needle there so this is a lot closer to my expectations I would say like um it's interesting as a
as an engineering manager at least this is just from Microsoft side of things um engineering managers to the the best of my knowledge at least where I am in Microsoft the the sort of first level that you can be an engineering manager is at the principal level so if you are a principal engineer and an engineering manager at sort of the the entry engineering manager level they're both at principal level and at a as a principal engineering manager which is the lowest level of engineering manager at Microsoft at least in my area um I have an expectation on me that I'm having architectural conversations and like I'm not expected to code but I'm expected to be able to have these conversations now when it comes to technical things like I absolutely participate in architectural conversations but the people that are generally leading these things are
my principal Engineers or there might be like senior engineers and stuff on the team as well but the the principles are going to be the people that are like we call them feature Crews within the teams I might have like a functional area that they own and so on these feature Crews the principles might be like the tech leads in the area official title or not um but they're kind of like the subject matter experts and I would absolutely lean on them for the technical decision making um do they include me yes do they include the team yes but like they're the ones who are kind of leading the charge on that and I would timately if we were like debating about things I would like to make sure that you know they're supposed to be the expert I would like to give them the
benefit of the doubt and we would roll forward with that but on the more organizational things like this person is saying I work with my peers in leadership to move the needle there and that's been what I've experienced where all have principal Engineers come to me they're looking for assistance on moving something forward so we might coordinate with a project manager or something I can tackle so that's that's what it looks like for me as well I'm going to get this okay um we'll see a little bit lower see if there's anything anything else interesting being staff is about managing via influence and example how easy that is depends on the orgon the rules you want to take when your partner manager wants to be the architect just becomes a tall go yeah so again like kind of resonates with my experience personally where um
I'm expected to have architect Al input but I am not the person that's creating the architecture I absolutely lean on my principal Engineers for that they loot me in uh and ultimately it's like it's their efforts like leading the charge on that and uh even if I participate I don't I don't go taking credit for that kind of stuff it doesn't make sense like that is their their job and they are the experts but I get involved so yeah this this one I think you know the the Avatar um what they said that that resonates with me as well okay let me uh let me jump to high emotions comment it's uh kind of scrolled out the chat view so I'll just read it out I used to work at Red Ventures so that was my only big it job before college but landing let
me switch back to my face so we're not looking at Reddit here um but that uh but landing an entry-level job in the IT world seems to be hard so hard because a lot of jobs require multiple shts um I don't know I've never I shouldn't say never I don't know of jobs that require Sears personally uh in fact I've seen many people on the internet saying to other people looking for Sears don't bother um that's a whole debate on its own my personal take on that is if you want to get certifications for things as a software developer by all means if it helps you learn I don't I've never never heard hiring managers or myself gone looking for CS I think if they're a tool for you to learn absolutely do it in it in general there's other things like uh Network Administration
or other types of it roles where Sears might be an expectation um 5 to 10 years of experience this is a common thing right now uh people people keep calling this out but there are jobs 100% that are posted that don't require 5 to 10 years of experience and I can tell you this because I've been doing interviews for them at Microsoft they're not for my team but I have absolutely been doing this and it's the expectation is not 5 to 10 years this is at Microsoft which is a big tech company the jobs are posted they are available I know I'm sorry I know it feels like there is like there's no other option they absolutely exist we do hire Juniors um how can someone who has less experience stand out from others who have years of experience and where can someone find better
opportunities for an entry-level position okay so bunch of different things here um I think in terms of standing out uh we had one example a little bit earlier was it was it from high emotions they're talking about cyber security where was that I'm lost okay I'm not going to scroll through the chat but on the idea of like um I was using cyber security as an example like if you're if you want to get into software development something that could be very interesting in terms of standing out is saying like I have uh experience or interest in cyber security I've built applications that focus on some cyber security things that you're interested in and people people have different takes on this too I'll tell you my perspective is a in manager in terms of projects and stuff you build cuz I love seeing this online
people they'll post on Reddit they'll post on wherever and they'll say what like what do I need to go build to put into my portfolio so I can get hired and I'm like I think people are missing the mark a little bit um and the reason I say that is because at least for me as a hiring manager I I don't go looking for projects to like as in I'm going to go look for the person who started a company with their their mobile app and they had 10,000 users like that's super cool but like I don't need to see that I like seeing projects on resumés even if they're not finished and the reason like why why I look for projects is for a couple of reasons one is that you were being curious you were trying to learn you were picking up new
techn IES right like you you're basically being proactive trying to skill up now if you've worked on stuff even if you don't have users and you're not making money from it like that's a whole other ball game um that's not like a requirement but if you're building stuff it just shows me that you're interested and you're trying to learn and that way if you don't have the experience of like professional programming experience you can at least demonstrate that you've spent time building stuff that goes a long way um I've shared this example before but like I got my first internship at the University of watero the the guy that was hiring his name's Peter Hansen Peter's awesome I don't think he'll ever watch one of these but uh really looked up to Peter um I've said this before too I I should have acknowledged that
he was like such a good Mentor but um I don't I don't think at that point in my my education and my career I was like paying attention to that kind of thing but Peter ran this small Consulting software company and when I was going for my interview it was like I'd never inter i' never had a software job before and this is an internship and the way that it worked at my school was like at least for the program I was in we go for four months of school and then you're immediately into four months of work but the tricky part about that is to is to get that four months of internship you have to be interviewing like right away so pardon me sorry so it meant we'd start school and like right away they were like prep your resume because you're going
to be interviewing in like within two weeks and it was like what the heck how is this possible so I I applied for Peter's company and on the on the information for the interview it said bring something for show tell okay so bring something for show and tell and I was thinking perfect I have something for show Andel I've been working on this roleplaying game uh it's a 2d kind of looks like Pokemon and it's basically just this thing that I've been building and been working on it for now for like over 20 years and it's not done and it will never be done but the point was that I had something I could bring to show and tell and the interview was pretty quick for like what we were talking through and most of what Peter focused on the interview and I've actually kind
of taken this to Heart in how I approach hiring people this is just my experience by the way I'm not trying to tell you that every recruiter and every hiring manager like this so please don't uh interpret that but in in my interview with Peter he was like he's not he's not like oh look like your game sucks or like oh wow you made uh you know a AAA video game like it's not that's not the goal the goal was that he had something in front of him that he knew I had worked on and now he could ask me all sorts of questions about how I build software so Peter would ask me things like oh so tell me about like which game engine did you pick for this or why did you pick that okay how did you get this thing working why
did you decide to do this oh you can save and load games tell me how that looks oh why did you decide that you were using XML instead of Json or uh tell me about how you store these things in memory I can remember this question in particular I was explaining to Peter how I had put all of these things into dictionaries so I could make it really extensible but I was in the middle of changing it all back to some other way and I remember him saying like hey if your goal was extensibility like using a dictionary for that purpose actually could really afford you that like that opportunity he was like I don't know if I personally would move away from that it seems like you have a good thing going on for that the point that I'm trying to make here is
that I had a very unfinished thing and when I finished that interview it felt really good felt like it was a great conversation I ended up getting the offer for that job and I remember when I was talking to Peter about it after he said were you surprised that you got the job and I remember telling him honestly I was like well I left the interview and I felt like it went really well like there wasn't anything where I felt caught off guard you seem very interested so I said I don't think I'm surprised that I got the offer and I wasn't trying to be cocky about it it was just like you know you know when you're not getting an offer that's for sure but this one felt like it all went really well so I said no I'm not really surprised and he
said well that job position was only for like third and fourth year students so he was like I was just curious if you noticed that because that was my first internship so Point here not to brag the point is to tell you that if you want to stand out I think having interesting projects that not everyone else has done they can stand out and just having things that you're genuinely interested in building can go a very long way you don't have to have a bunch of users doesn't need to be a AAA video game I literally had a video game that kind of looked like Pokémon didn't even have a finished level it had a like a menu system with music and an inventory and you could walk around that was it and that allowed me to get my first internship so again if you
are building stuff that looks the exact same as every other person all that I'm going to say is that it makes it harder for you to look different and stand out it doesn't mean that it's bad or wrong it's just harder to stand out so uh High emotions I hope that helps uh where can someone find better opportunities for entry-level positions um they're out there like I I don't know like LinkedIn there's other job boards uh couple of recommendations I have for for applications and stuff um John vaner I like giving him a shout out he has latterly doio John has a lot of information that is very uh statistics based so like he has a a bit of a system put together and he will recommend you go learn front-end Technologies because he says like stats show that's the highest in demand so even
though it's the highest in Supply it's the highest in demand so he recommends that uh he will recommend things like applying I'm not making this up like he he says apply to 80 jobs per week because that seems to be a spot where you can start getting feedback about like AB testing your resume I know it sounds like a ridiculous amount but like when people are like oh I I applied to a couple jobs this week and I'm not getting anything he's literally suggesting 80 like 8 z um the other thing that I will mention is that and I've talked about this this is on another code commute uh Vlog um so if you do want to check out that channel again code commute on YouTube uh actually it's code commute Vlog what is it no just code commute it's just code commute here um
I have a video where I talked about this in one of the videos and I was basically saying like you when it comes to networking like that's the other thing you should be doing networking with people is a long-term play so don't go on to LinkedIn message random people and say please review my resume don't do that but be genuinely curious reach out to software Engineers managers ask them questions express interest like think about the fact that you have this opportunity to connect and Converse with people and you wouldn't go up to a random stranger and say hey give me a job so don't do that to these people either but you build up the relationship with them over time asking questions engaging with their content whatever it happens to be and then over time that might lead to something and if you take both
of these approaches the networking approach which is longer term and you're blasting out more resumés your applications I think that can be effective so um the opportunities are out there I I do acknowledge that it's it's uh very competitive right now but they are there so um okay I think I think that might be it folks um I might cut it a little short than the two hours cuz I I'm still a little sick and I do want to try to get to CrossFit in the morning so I want to try to get a little bit more sleep um I should mention too last week I tried to get my stream going again for the morning didn't do it it's not going to happen tomorrow I promise I will try getting back on the coding live streams it's just been kind of challenging for me
so I do apologize for that um but yeah thanks folks for tuning in I hope this was helpful uh same type of thing will be going on for for next Monday I did get feedback and I got to go through the the survey results I might move this up as in do it earlier and the reason why is that I start this at 900 p.m. PST um the uh the jobboard site I mentioned was just LinkedIn um oh sorry there's so I mentioned LinkedIn uh the other one is I'm going to put it in the chat sorry it's delayed so this probably feels like it was a century ago latterly it's not a job board but I think he has he has a bunch of resources and stuff so John vvir uh he's awesome uh check him out he he posts a ton on TiK
ToK by the way um so if you're a tick Tok kind of person you can check him out there um but yeah sorry live streams they're at 900m PST and I realize that kind of alienates like a lot of the people in North America that I am generally conversing with a lot more so the survey results I still have to aggregate but I feel like I might bump this to be a little bit earlier uh at least the majority of people voted sometime before 900 p.m. so I apologize to folks um that are kind of overseas and stuff um that might mean that it's it becomes a little bit too early for you or something so sorry about that but it might be it won't be any earlier than 6:30 p.m. PSD but it will probably be before 9: so I might try doing seven
or eight for for next week but we'll see uh so I wanted to say thank you for supporting me if you've been watching at 9:00 p.m. PST has been like the perfect time for you um I can't remember who it is in the chat but they they always drop in and they say that they they watch the live stream during their standup which is really funny um pay attention in your standup meetings guys but yeah um I might bump it up a little bit earlier so uh stay tuned for that but folks thank you so much I wanted to say that uh definitely YouTube caught up with people that are uh that are streaming it especially in the chat awesome job best representation but Twitter or X whatever we call it now Twitter definitely still has the overwhelming majority it's very impressive so uh YouTube
folks got to catch up to the the Twitter folks um and yes I will be bald next time as well so that's sticking around so thank you folks I appreciate you joining in um if you ever want me to cover different topics in the live stream uh comment on my stuff message me whatever you want to do let me know what topics you want to hear about because I always like reminding people the live streams are to engage with you so I can have conversations with you because otherwise I would just make the YouTube video so um I do appreciate you jumping into the chat okay folks thank you take care
Frequently Asked Questions
Why is testing important in software development?
I believe that writing tests is crucial because it provides confidence in the code changes we make. Tests help ensure that our software behaves as expected, which is especially important when working in teams or on larger projects.
Are there situations where you might choose not to write tests?
Absolutely. In my experience, there are scenarios, especially with prototypes or rapidly changing code, where writing tests might slow down development. It's important to weigh the value of testing against the urgency of delivering features.
What should I do if I'm new to software development and want to start learning?
These FAQs were generated by AI from the video transcript.I recommend starting by picking a project related to your hobbies. This keeps you motivated and engaged. Choose a programming language or framework that interests you, and begin building something, even if it's small. The key is to practice and apply what you learn.
