BrandGhost

It's An 🛸Alien Invasion🛸 In Blazor! - Interview With Mohamad Dbouk

Don't worry though -- the aliens won't hurt you. I confirmed this with Mohamad Dbouk when we sat down to discuss his journey in software engineering and he surprised me with an awesome little demo of a Blazor game! Not only was this the very first show-and-tell code we got to see from a guest on the channel, but Mohamad had other very insightful things to share. One of my biggest takeaways? You can have an amazing and fulfilling career without having to chase down higher and higher levels. In fact, by being honest with yourself about where your passion is and how skilled you feel you are, you can have an excellent trajectory AND have a very rewarding career. Thank you so much for the chat, Mohamad!
View Transcript
which would be very cool. >> Hopefully start. Yeah, that's the enemy moving. Oh, cool. >> Fire the enemy and nothing happened. >> This might be an unpopular opinion, but some people have very successful software engineering careers without just rushing to try and advance in levels. Hi, my name is Nick Coantino and I'm a principal software engineering manager at Microsoft. In this video, I got to chat with Muhammad Duk and we got to go through his career progression, how he focused on what he was truly passionate about. And that took a little bit of trial and error for him to truly understand that. We also got to jump into some Blazer code. We got to see some cool video game action. So, if you stay tuned, you can see that come to fruition. And it's really cool to see how Muhammad's trying to get that working with Blazer. So far, this is the first interview on this channel where someone has busted out some code for showand tell. So, I thought that was super excited. It was totally unscripted and I think that you're really going to enjoy this conversation with Muhammad. So, let me know in the comments if you like this kind of content and we'll see you next time. Okay. I'm curious though. So, everyone has a very unique journey getting into software engineering, right? So, um I always am very curious to ask people about like what was yours like? even if it was maybe, you know, air quotes more traditional, I think it's still worth people hearing about how you got to where you are and then letting us know kind of what you're up to these days. >> Like the long story was it's been in the family since forever. Like my my uncle was into software development like I remember four, five years ago, four years old. I was >> uh I was very likely to to sit next to him just to see what he's doing then Windows 3.1. So that uh and you're talking about early '9s so it was something very new to have a computer at home at least at least in our region in in Lebanon that's like not something that you can see everywhere. So it it started there and I was like very clear that I need to continue computer science. I need to make my journey as a developer gaming developer for sure because we were kids playing Doom or something like that. So it started there then but the actual change was in university you'll you will get the hard truth that yeah I'm learning a lot of stuff that I have no idea how to use them and are they the right skills for me like I started computer engineering like as an engineering and then I switch into computer science it was a very good switch it was one of my my doctors basically He saw me saw me that I'm doing very well in the computer programming courses. He asked me to switch >> and then I started uh uh start a night work which was basically an IT support the worst worst thing that you can do as a as a developer and it was clear for me like yeah I'm not an IT I don't like it but I learned it because it was my job and then it helped me along the way when I moved to DevOps later on But uh it was good like in that work because it was a night job. I had to learn I learned C by myself like long late hours at night. In in university we learned Java and I didn't like it. It was it was fancy because we learned first C++ and C and then when you start seeing what Java can do it was oh nice objectoriented >> the abstractions they feel nice >> uh but when I started in C it was a different level for me and that's where I start building set of softwares for the company like I used to work in a newspaper company so they produce newspaper so all your software all all the things that you can think about are things that can help producing that news that that newspaper and like I did the archive system I did the accounting system uh probably if I see the code now I will laugh to myself but >> sure >> it's definitely something uh like I think they are still using the archive for now I think >> very cool >> it's been like 15 14 years now and then I start jumping between different uh like I graduated from from uh BS and then I start jumping between different jobs as software engineer um I remember start to chase the titles and that's okay one of my bad experience in the in the field like >> and and why why tell us why you feel like that was a bad thing to do cuz I think a lot of people do this now right especially >> these days with social media, I see a lot of people will and I'm a little bit guilty of trying to say like here's how you can progress, but there's so much information content about like here's the fastest way to do it. And I don't really agree that fast is like the the way. So, I'm curious your thoughts. But before we move on, this is just a reminder that I do have courses available on domain if you want to level up in your C programming. If you head over to do train, you can see that I have a course bundle that has my getting started and deep dive courses on C. Between the two of these, that's 11 hours of programming in the C language, taking you from absolutely no programming experience to being able to build basic applications. You'll learn everything about variables, loops, a bit of async programming, and object-oriented programming as well. Make sure to check it out. Yeah, like I was still young, like 23, maybe 24. And my company my company put me the senior title behind my name. So, I'm now senior. And you start to think that, yeah, I'm senior. I know everything. That's that's a mentality where, yeah, I know that I can do that. I can build it. And then I remember one time I had an interview and it was a it was a change a a moment where I changed everything like I went back from that interview feeling devastated like it was the very bad interview like and in the end the the guy there he told me like you are not a senior don't don't tell me you are senior you don't know that and for me it was very bad but in the same time I took it absorb it and start yeah if if I'm not a senior in title fine I need to be senior in in my in my practice >> let's start learning the right way like when you learn in the beginning you are learning by applying things and it works >> why it works like who cares it works. That's that's that's the mentality in the beginning. But then I remember changing my job from a senior slash team lead into software engineer. That's it. A software engineer in a startup. Eventually I got the title again because I worked hard. I I did very good job there. But when I started to move away from the title nonsense like I need to to be a manager I need to say out loud hey I'm leading a team >> right >> that's when everything has changed like my mentality changed I'm now focusing on the technical stuff and it move on like I kept going in that flow my friends were like are you crazy like you can you can get that title you can get a team you can get the bonus. >> But for me, like >> if I'm not ready, it's not for me. Like once I'm ready, I will get it definitely. I know that as a fact. So why why pushing for it if it's not mine? And moving forward, yeah, like I change a lot of jobs. Maybe that's not very good thing, but it >> I think that used to be something that >> people used to frown upon that kind of thing. But I I don't know. I personally think that if you're switching and like everyone's going to have their own reasons for switching jobs, right? Like even sometimes it's not even our choice because there's layoffs, but you know, I think if you're looking for something that is going to be a better fit, >> like everyone's going to have their reasons for doing it. So, I don't know. I think, like I said, I think people used to really frown upon it, but I don't know if that's so much of a thing. >> I don't think now it's it's a thing anymore. Like yeah like I remember like recently no one asked me if I have a degree or not like I have a master degree but who cares you you know >> the skills that I need and that's it. Um yeah and one of the other major jump cut in my in my career was when I moved into DevOps that's was very interesting career for me like it's a different path. Uh I'm like in in summary I'm the guy that love to do coding. I'm the guy that that loves to build solutions. And when I moved to DevOps, it was very different. Like we had a developer team. It's a very very big team. It's a very big product. And then I'm the solo DevOps engineer that I'm trying to make them work with me, trying to adapt to their process and introduce a new process for them. It was difficult but eventually it was it was like the result speaks itself. So yeah, you can get a very a neat process to deploy to over 200 clients with a click of a button. I remember we did a bot uh a chatbot like teams uh Azurebot that you type to it. you you ask it hey deploy to this client this version we were using Lewis before before all the AI stuff where it's magic like before it was magic >> so yeah using Lewis and it was very interesting like I think it was part of the success of that company what I did there in that time and then another major major stuff >> this is I got bored like I did everything that I need but I remember net 7 maybe net no net 6 when net 7 was there sorry net 5 to net 6 I didn't install net 6 because I'm not using it anymore and it was for me like that's strange I never do that I always update I always been updating ated with everything there but rarely really using visual studio rarely using uh C. >> So it got me thinking like yeah fine like eventually I had a head head of department I have five six people behind me >> and we are doing good but then yeah that's not me I need to build something again. So I left there. I went to the the current company that I'm there with them like out think it's a it's a startup cyber security training system. It's very interesting uh work that I'm doing there. So I moved first as a software developer as a software develop from head to software developer. >> Right. >> Again everyone like are you crazy? Yeah I'm crazy. I I'm loving what I'm doing. That's it. like money. Yeah, you can you can adapt. You have your responsibility. You have like a a limit that you can't like a threshold for you. Yeah. But >> again, like between a lot of money versus happiness and stability and mentally being able to perform what what you love. Yeah. Like that's that's me. And in that period, I start with a blog because Yeah. It was Yeah. Let's try that. I'm always being a fan for for a fan of Scott Hanselman. >> Yeah, Scott's awesome. >> Yeah, he is like he had a very old blog that I'm like reading from from the beginning. So, it was me like and he had few posts where he he say start a blog, start, start writing. And that's that's what I tried to do. start building stuff like I remember like silly stuff, silly tools that I'm building for no reason. But yeah, I can share that even if someone out there has found it uh helpful or not like building a tic-tac-toe using Blazer >> like why do you need that? No idea. But it was my way to learn Blazer actually. >> And if you're going to learn from it, other people will too. Like that's the that's the beautiful thing about it. I think when people think about building software and stuff, so you used an example of >> tic-tac-toe and blazer, who's going to use it? I don't know. And maybe, you know, maybe no one will use the finished product, but they can use the learning that you had along the way because if you went through the steps, >> there's going to be things that you picked up that you can share with other people, and there's value in that. So, I think that's awesome. >> Yeah. uh for Blazer. Uh the first thing that I did was that tic-tac-toe thing like in my like when I I was on DevOps, I worked with Blazer because they chose to build the SAS software. They upgrade the SAS software from win uh web forms into Blazer. >> So Blazer was the winning across Angular and React. uh starting with a preview version I guess it was very early stages there but now it's a very robust uh framework so but I didn't work as a developer so I don't have that development mindset for blazer so learning by doing that game was was nice even even did like >> can single player versus AI multiple player and I stopped where I wanted to do uh online multiplayer using Signal R. It will be a fun uh blog post. But yeah, like you get stuff along the way you forgot. Yeah, >> I'm recently doing another uh type of blazer games, which is a space shooter type of game. >> Okay. Uh yesterday I had like four or five hours of free time. So I like I could been doing a YouTube video that I can upload, but I decided to Yeah, let's try to fix the motion of that ship across the monitor because it's being >> drifted along. Maybe I can share it like uh >> Yeah, if you can if you want to try cuz uh I don't know if I have to change any settings, but I think that you're able to share your screen. So that would be really cool if you have it. >> I did forget to ask you ahead of time if you had any like code or stuff you wanted to share. So this is super cool. >> That's that's one of the reason that I I spent few hours on it yesterday. Uh I think that's it. >> Oh yeah, that is coming through and I can see it nice and clear. So yeah, perfect. >> Nice. Let me do the settings for YouTube. keeping everything so people can see it. >> So, yeah, let me run it. Ah, I need to stop sharing and share again the >> Oh, share the the whole desktop, I guess. >> Yeah. >> Yeah, >> no worries. I'm excited for this. >> It's not Yeah, it it's it's not yet completed, so don't get too much. >> All Yeah, let's do that. Oh yeah. >> Whoa. >> This is a code. And this is a game. Yes. Guardian of Nebula. >> Nice. Okay. >> Retro style that you can Yeah. Let's start. That's it. >> You can move. >> You can move. It's very You can even boost when you click shift. I still need to fix the the focus because it's it's not doing well. And you can f Oh, wait. I messed the Yeah, >> you can bullet. >> Yeah. >> So, there's projectiles. Yeah, you got movement. The even the the rocket itself is animated like the the fire out the back. Yeah, it will move and it's let's let's go back to the code. It's very like I'm trying to do something with zero JavaScript. So, I'm trying >> Let me move you to the right monitor so I can see you. Yeah, >> I'm trying to do it in a way that I don't need to use uh JavaScript. Right? Because I think a lot of people they lean into that, right? They go, "Okay, well, I'll use Blazer, but then >> I want to pull in all the JavaScript stuff that it's I'm familiar with that I can leverage and it's like, well, I mean, the point was if we can move away from it, then let's move away from it." >> Yeah. Exactly. Like, and and now you can do a lot of stuff like everything written in in that was purely C. Nothing like you have CSS, you have HTML definitely, but but not JavaScript. What does the rendering loop look like for that then? Because um you Okay, I want to back up a little bit, right? You mentioned that, you know, as a kid you were like, you know, definitely I'm going to be building games like this and I think a lot of us do that. That was one of the things I thought um you know, as soon as I can program, I'm building games because why wouldn't I go do that? But if you've built games along the way, you know, as a kid or kind of, you know, just in your younger years and stuff, there there is a concept of this render loop generally. And if you're doing stuff like from the very basic, say you're not using a fancy game engine, you need to be able to paint to some surface. So is there a concept of like a game loop here where you need to be painting? >> Yeah. So the thing that I'm doing is very uh very basic like I have a timer that's being updated every 100 milliseconds and one of the things that I'm updating is the background. This is a long uh uh horizontal background that I'm changing only the x and y for the background image. So the background image of this div I'm I'm trying to use my my like fine. Okayest experience in HTML and CSS to to perform that. >> Uh the the ship here how to zoom. Yeah. The ship here is basically an image with four different sprite they call it. Okay. >> I go to the images >> like this is the the new anime ship that I'm trying to add. >> Oh, nice. >> Same ship. But you can have different like I I didn't want to have a GIF file that yeah it's looping like I need to be in control for that. So for my ship it's different >> uh what's it what's they call it the fire here. >> Yeah. So it's a sprite sheet and then the different sprites in the animation right that it'll loop through. >> Awesome. >> And same thing for the bullet bullet one bullet two. And then this is the this is the home background. And this is Nebula >> like Yeah, like I used Chachi to give me some some cool names. So, Galaxy Guardian of Nebula is very >> very >> That's a good one. Yeah. >> Yeah. >> So, yeah, what to talk about here? I have a home. We have the menu item. And if it is running, if you click on start, I'm changing that to true. And then I'm rendering the game component. game, >> right? So you just have a whole component that drops into the main screen when it's running. Okay. >> Yes. So by by default like yeah I stop it by default it will be nothing like it's only the menu. There is nothing render as for like the the actual game >> right >> and then going back game component when it's rendered I tried always to to separate the files. I don't like this. It's I don't >> that's new for me actually. I didn't know. Uh thank you for bringing that up. I'm of the same mindset. It drives me nuts to have and I don't know personal preference to have like the markup with the code. I didn't realize that you could just separate it out into another file like that. I never even thought about it. >> Yeah. So create the same name.razer.css CSS uh CSS for the the the file and you need to it it needs to be partial class and you need to inherit from the component base here. Uh same thing for TSS you can have like this is for uh I tried that because I worked in Angular in the past and you have like a component with a TS file the HTML and the CSS file. So I tried to see if that's something applicable here and it works like like never know that before. If you create a CSS file, it will be rendered for that component and it will be rendered when the component is being there. So the CSS per component is something cool. >> So game component I'm rendering now the playership component. Later on I need to have like a logic. Yeah, >> thank you copilot. I need a logic through. >> Yeah, I always turn it off when I'm doing recourse because it messed everything like you can't you can't predict something that I'm trying to explain. So yeah, I need to have like loop through enemies try to have like a level stuff but playership component game component it will render. I tried the container ref to focus but you can see it's not yet working when starting to change the when you fire using space or something it will mess up the thing but >> so oh can you explain what what the the goal of that is then so when you're when you're saying focus is it because the input on the keyboard is is >> trying to refocus or select a different element >> if by default you are here if I'm clicking anything in the keyboard it will not be picked by by the the the div like I'm registering key down and key up on the actual div actual here. >> So if you click space notice here it's being rendered in blue. I think that's something for the focus. Yeah. So I'm focusing on that and everything that I'm typing now in the keyboard is being registered into that div. So the event key down key up is on the div itself and so that div will send it to the playership component another another component I'm using canvas sue me it's not it's not JavaScript it's HTML 5 I'm still I'm still in the gray area and yeah like the ship I have a width so yeah let's let's go to the to the actual class. I have a player ship. >> Now, this is where the crazy stuff happening. So, I have a class player ship. It has a sprite image. So, you can specify the image and you can have the sprite sheet where you specify the actual background location for every sprite. So, it's 029. So, let's go to that image. So 029 is this one. Then 058 is this one. 87116. Like I literally did that in in the in the browser like in the uh what's called the >> the thing the inspect element where you can change the value. So that's basically it. Any spaceship, any spaceship of entity, any entity that has ah >> has sprite image sprite sheet and an entity has identity health, I entity weapon where you have I bullet. >> Okay, >> see what I'm trying to do? I bullet fired fire async and you have new bullet for now. This is a new bullet. It has also like since n since bullet is an entity, it has already the sprite image and sprite sheet. So I can do >> that like to actually animate the bullet. That's what you you asked for before. So I can animate the >> the bullet. Hey, let's change that. Yeah, much better. >> That new syntax. Yeah, >> I remember that is way long like yesterday I modified the code to have few things but yeah like you notice it's been 2023 like year ago. >> Oh wow. Yeah, >> I went back yesterday to change something from a year ago which is nice. So you have velocity where you can move forward or backward depending if it's negative or not. And where is player ship? I have here move to direction. Yeah, soner is complaining about the complexity but fine. Uh yeah, so I'm doing like you send it the direction. Tear your boy is basically if it if you click on shift, >> right? Not sure why I did that, but it's it was cool back then. Uh, ignore that. It was recent stuff. >> Was that to Oh, I was going to ask if I was to try and simulate that you could boost, but you you have a timeout on the boost like you can't just keep boosting forever. Is that the idea or was that for something else? >> No, not yet there. But it was I had an issue where it's lagging like you can >> it >> it was if I like I'm moving back now but because it's it's there it's on the zero axis it's not going back >> but I try like if you click one second between key down and key up it will register it once but the actual event it's it's working. So I will get that ship behind the barrier and it will be >> locked. >> So I try to do some delay like you move you delay so you can have like it can work alone and the way like I'm using that test. Because I didn't want to change the event I needed to be run on different thread because it was blocking blocking few things. So it was like >> I was trying things yesterday but when it worked I never like it was like this before and then I changed it still still like doing and handle key up and you have a timer. You asked me about the game loop, >> right? The game loop >> timer creating a timer on elapsed update position which is it will update the playership position by doing X plus velocity if it's moving because you are changing velocity when you register key up key down and updating the sprite image. So I can like loop through the array of sprite depending on the index you added. That was like an intelligent an AI based sprite image changer. Yeah, I can >> and you need definitely to to invoke state has changed so it can be reloaded in in Blazer. So yeah, like I I remember I added yesterday the enemy ship and if I do that here, I think that is enough to see the enemy hopefully. >> Which would be very cool. >> Hopefully start. Yeah, that's the enemy moving. Oh, cool. Fire the enemy and nothing happened. But it was like register an enemy running alone and then it will stop there because >> Oh yeah, there's bounds checking to to keep it in. >> But that's awesome. >> That's still not yet there. But yeah, doing stuff. >> That's really cool. >> I've always found I'm curious what your thoughts are. um whenever I'm doing uh something in like a coordinate space and especially this is a good example because you have almost like that like the sides scrolling like almost like parallax background that's moving um I've always found coordinate systems for me >> even though it's a simple concept I have a really difficult time mapping coordinate systems uh I have found like I've been programming for 21 years and anytime I have to do something that's literally represented even in 2D um I have to get a pen and paper out and I have to basically draw everything because in code for some reason it doesn't click. So in this case is it simplified to be that um like if you're just sitting here idle the ship's position is still saying at the same spot, right? Like it's literally just the visual position. It's not like a world coordinate system. Yeah, it's not there. It's not there. It's like >> it's an infinite scrolling type of game. Like the map moves toward you and the enemies come to you. You can move inside your Did you Did you play XAX while you were a kid? >> I don't think so. But I've played games like the what you've done. Uh I've played something >> that was not I can't remember the name of it. I used to play. It was a DOS game and I remember um but it wasn't it wasn't space. It was like a jet fighter. There were still aliens but it was a jet fighter going over the surface. >> Thanks. Thanks YouTube ads. Can you hear ads for me? >> Uh it sounds very quiet but uh it's Yeah, I don't This is a game that I like grow up with. It was my childhood basically. Same thing. You have a background that moving. You have enemies that spawn randomly and you can fire bullets. You can fire one bullet or multiple bullets. And yeah, I need to add the powerups. >> Okay. Yeah. >> Maybe like this kind of blocks here so you can have a a very >> terrain to navigate around. Yeah. >> Yeah. So you know it started where few days ago I have my friend coming back uh from he he was traveling we were sitting and I was like he he he very into Star Wars he's obsessed with Star Wars and I never been a fan of Star Wars like I've never been a fan of like a long franchise and if I did it was like >> you you forget about it. You change your mind and then it's it's in history. >> It's not like your core personality. >> Yeah. Like it's not a Star Wars fan thing. >> Sure. >> Um so what I did, let me stop sharing. It's better so I can see you are speaking. So what I asked him like I'm trying to build my background. So few prints there. >> Oh sure. like I found randomly online like funny stuff. I print my domain here so it will be showing when I'm I'm streaming. >> That's a smart idea. I like that. >> Yeah. Like subscribe subscribe here. And uh and then I asked him like you see all the the YouTube backdrop where they have posters, they have stuff. And he asked me like what did you like while you were a kid? Like what game did you like? What game did you play? And the first thing that come to mind is Xaxx, which is this space shooter. And the other one is Prince of Persia that I was obsessed with until recent years where they like it was different. And I remember like Prince of Persia. I remember the first one and the second one, the DOS games. I did mods like I was 18, 17 years old and I'm doing mods. and doing my own levels for Prince of Persia. So yeah, I thought, hey, I can print something on the 3D like I can print the the character jumping on my domain here >> or maybe I can create a poster like a print out poster. >> But yeah, and then >> hey, I can do Prince of Persia in Blazer. And I actually started but then I started with a sprite. It's the same thing. And then I remembered, hey, I did very similar thing for the space shooter 9000 game. So going back to there and yeah, the rest is history. The rest is now basically. But yeah, uh nice, nice. >> That's super awesome. Well, thank you for sharing that because I think that's really cool to actually go through some code. It's uh >> Okay. So for for the viewers to know, it's unscripted. >> That's right. No, that's cool. But yeah, Blazer is something like I want to pick up more of and historically for like C development. I've spent most of my C professional career building uh desktop applications. So, Windforms, WPF >> and especially because work required that of me like that was my skill set. And as that was happening, everyone is moving to the web. But we were building digital forensics products and like they needed to be desktop based >> and it kind of felt like as everyone else was moving to web I was like hey I feel kind of left behind like I only know desktop development. So >> um when it comes to anything in the front end like >> it's not even like oh I would be more comfortable using JavaScript like I don't know like any of the web front end stuff. React is very like I can get through React and and some TypeScript or JavaScript but like it's unnatural for me. So having something like Blazer come about I feel like hey maybe this is an opportunity where I can start to become more familiar but I have to make the time to go learn it. So it's really cool that you were like yeah I had five hours and I'm going to carve that time out to go build something >> like for for like a pet project that you want to do just for fun. You need to see the result like yeah you can build like a nug get package that can do amazing stuff. You can but visually the first thing that you can show is hey look at what I did it's on GitHub you can see it you can play it so that's why I chose blazer like I remember I have a very similar experience like you started with desktop application I remember doing crazy stuff in desktop application it was very fun >> because it was visual and it's purely C you can you you know the language you know the barrier, you know what to do. But then moving to web, I remember like my blog is WordPress and it's WordPress because I need to type something, post it and that's it. I don't want to to to re like rebuild everything just because I know C# like it's WordPress. >> That's been my exact experience. Yep. >> Yeah. Maybe I'm going to move it to to markdown like they have the engine where you create the markdown. It will be served as static file static site. It's it's cool but still yeah fine. Like I remember had that idea before uh paying the the upgrade last year. So it's soon I need to to upgrade. So, I'm going to upgrade the WordPress plan and forget about. But yeah, going back to to to the point, I start doing some WordP WordPress Jumla. I think it was called Jumla >> Drupal something. I I work with that as a framework, but it's PHP. It's ugly. I don't like it. And then MVC started. So, yeah, you can do MVC stuff. Web form was fine but web forms are web forms you can't rely on them anymore although like new framework new JavaScript new JavaScript framework are now lookalike of web forms and it's like the ugly truth that and they are selling it like you can render things on the server side wow we had that but uh yeah uh It's like start MVC but you need something in JavaScript because it's not enough like you need to do something on the client side. Uh moving to Angular was pain but when when when it's your main job to build like it was a startup where we build a healthcare application and it's a dashboards, charts, benchmarks. It was cool stuff. We have a lot of backend stuff that we need to build and we need to have the visual and we choose angular for that. I learned Angular like like everyone did and I did few things but when it's come to me if I need to choose between build all the back end and give the front end an an API layer that can they can work with or to build a front end I always choose the back end like >> that would be how I opt into things as well it's like if someone >> I like I worked in a startup for eight years before Microsoft in my internships in university was very small companies and startups. So I have that kind of mindset where like hey if the business needs whatever's got to get done like I might not know it but it's got to get done so we'll figure it out. And uh that kind of forced me into like if I need to wear different hats I will wear the different hats but if you gave me an option I will always gravitate towards backend things like nonvisual things because >> that's just where my skill set is. Um, and the side effect of that though is if you're not forcing me into something uncomfortable, it's very difficult for me to tell myself, you should go spend time on this thing that you don't like doing so that you get better at it. So that you don't sit here continuing to go, I don't like React. I don't like JavaScript. I don't like those things cuz I suck at them. >> Yeah, exactly. like you need to be familiar with it like that T type of experience >> T-shi specialize with something and for me it was back end like my current job uh we have a backend team we have a front end team and we don't do any crosswork like I give you the API and that's it it's not it's not on my end like a a story should be done when front end and back end are integrated. Yes. >> Right. >> But my job is done when the API is done. Yeah. After the integration is done, tested. Yeah. But it's fine like you can you can focus on more advanced backend stuff like definitely when you do microservices event based system you need to focus on that. But uh for me front end was challenging before uh I remember one day like I did in JavaScript before having any framework in JavaScript I did something similar like something as look alike like an object-oriented class where you initialize it with set of parameters like before like like five six years JavaScript was hey do whatever and there's before Typescript at least and to do some organized way in JavaScript is like I'm saying like I'm trying to make JavaScript look like C or any advanced language >> wait sorry not advanced JavaScript is advanced so no no one >> more structured or something familiar >> it's perfect language but uh yeah something to think about like you always need to have. You can have multiple hats, but you need the bigger one. The one that I'm specialized with. That's my >> Right. Do you find in your career like I'm assuming when you were more a junior and starting out like when it comes to specialization and stuff were you kind of just like I will do whatever I got to do whatever and you you did or from the beginning did you gravitate towards something like did you almost like specialize in the beginning because it was like I'm figuring this out I'm just going to stick with it and then you kind of venture out into other things or the opposite way >> it depend of that job but it the opposite way >> like you need to do a lot of things in the beginning you need to learn it's as a junior junior and that's the problem that we have now in in the current uh workforce like you are a junior you started by picking one language one framework one hat and that's it and you fight for it like as it's yours like it's the I can't I can't learn something else. It's mine. But it's bad. Like you need at least to have the fundamental of everything else. And that's what I did before. >> Like front end versus back end was not always the thing because most of them were full stack developer where I need to build the front end and the back end to deliver something. >> So you don't have that luxury to to to actually separate yourself and say yeah I don't like that. let's build it this way. And probably it hold me a bit because I didn't have the time to focus on my thing which is the back end stuff. So you remember in the beginning the interview where it changed me. It was pure back end. >> So pure uh backend engineer and I'm doing full stack. I'm a senior. I am building solutions. I'm doing everything. When you say I'm building everything, you are like it's it's very gray. It's you can have a lot of problems. You don't know everything. You you can build the full full software, but not in a way that specified for every set of that software. And >> that's a that's a really interesting point though, right? Because if you were a senior and obviously roles and levels are going to vary from company to company, so there's there's some nuance there, but >> as a as a senior developer at this company, I imagine it was primarily because you could be effective end to end. So if you're thinking about like the ability to deliver software as an engineer at this company, you were probably in a position where you were effective because you did have that full stack. And in other places, um, they're when they're saying senior, it's almost like the depth of knowledge that you have in a specialty. That's what it sounds like in this case, right? >> Yeah. It's exactly that. Uh, it's exactly that because every company has its own mindset. Every company has its own structure, but >> the you grow when you start to adapt to that. And like when I moved to DevOps, it's it was very new. It's a new company for me. Like before I was doing I was doing DevOps stuff because no one else is doing it. Like uh friends don't don't let friends right click publish. That's that's I remember printing that in the wall. So yeah, we need to do some automated deployment. We can't start we can't keep on publishing on my machine and put it on the server. So I start I remember like having like 1 hour drive between my place and my work in the public transportation. So I put my mobile download few courses and every day I have two hours one hour in the morning 1 hour when I'm back just learning how to actually automate the flow using CI/CD using like before it was visual visual studio online if you remember the VSO before rebranding it to >> so before git >> so I start to learn that because we need it and I applied it and That's the reason why I took the DevOps job because I did it all by myself. It was very new. Uh it was like the trend. It was it was that uh year trend. So when I started as a DevOps engineer, it was very new environment, new software, new company and a new set of skills that I need to adapt. And you know you are growing when you start to say yeah I don't know that I need to see what other people say I need to learn from others that's where you know you are now a grownup like yeah I don't know like that's such a many that I'm saying like I don't know how to do that I need to get back to you. >> Yeah. I wanted to to pause on that because I think that's such a good thing to for people to reflect on, right? We I think a lot of us are going through careers and it's like obviously the more experienced you get if you're anticipating what does it look like in 10 years when I'm that much more experienced it's almost like I know more things and yeah you will of course you'll know more things >> you'll have more experience but when we start to move away from this mindset of like there are other things I don't know and you start framing it about only the things you do know your learning just starts to become uh very limited because you will never know all of the things and if you only are basing um what you're going to do based on things you know like it's just so limiting. So I think that's such a good reminder for especially more junior people that may be watching or listening to this that >> like I I love that you said you know become like grown up when you're realizing like you can say things like I don't know. There's nothing wrong with not knowing. It's literally an opportunity to go learn something. And >> uh you know, it's a worse position to be like pretending that you know all these things and then feeling like, oh crap, like how do I go figure this out now? You have this weird pressure on you because you're it's almost like a facade or you're masquerading that you know all these things. But it's okay to say you don't. It's easier now to say that you know because you can do a quick AI search for any topic. You can have get like few points that you can escape within like in a meeting. Yeah, I know that. And you start reading whatever the AI generated for you like before it was Google search or or Stack Overflow. But but still like you need to to know your limitation and that's that's the only way that's the only way like it's it's okay. It's it's the way to go and yeah for junior developers know your limitation. You are like there is how much? Nine eight billions people alive now and the one before like you are not unique. You are one in eight billions. So whatever you are thinking definitely someone else think about it and did it. So if you want to be like very creative, try to to do whatever but do it in your way. But in the same same way like like that's something when you are junior like I have this idea that will blow everything. It's a viral idea. It's a software that will give us millions but you never do it. someone else did it and yeah like you can see the like now you can see all the companies how they are built because it's you need to know the limitation and start acting about it like start practice like this is my my my only uh recommendation for juniors and like currently I'm I'm teaching uh computer science in in university like I have couple hours >> I didn't know that >> yeah that's very cool I >> should start with So, it's been it's been a while now, but uh I'm focusing on programming courses like not the theoretical stuff like I need to get my hands dirty with students. So I always tell them hey guys you need to practice like you are a computer science uh student you need to practice like I remember in university computer like computer lab and programming courses I didn't study for it like there is no need to pick up the book and ah this is how we can do for each or whatever like you should not >> you should practice and you will learn it because you did the practice But >> it's been like it's hard. It's difficult like he maybe because we learn it the hard way and we are trying to give give the advice for the for the young's generation but they are maybe they are doing the same thing that we did and they need to learn by their mistakes but yeah keep on practicing it's the only way like now like I'm when I'm building when I'm building something for the YouTube uh the main the main um what's called the only that the ideas comes from a problem that I have maybe in work maybe in some other places like I have a problem we are doing something in a wrong way or maybe in a different way let's see how other people is doing it you start doing some development start doing some research and then yeah maybe that's how we can like recent the one the one that I did last one was using Azure app configuration with uh your app you can connect and I link it to multi-tenant because it seems that my YouTube channel is moving through multi-tenants more like when I do some multi-tenant uh videos it will get some views so why not multi-tenant is very interesting topic >> uh so I did that in the same way I'm not using it in my day-to-day job because it's we are doing something else but that's how let's say Microsoft is recommending doing the app settings, you link it to a key volt. You you you you grab it, you can have a label so you can filter multiple tenants and then I did it for the YouTube and then I tried to do a PC so I can represent that hey we have this solution and I already did the practice because I was practicing for the YouTube so it was like a win-win. Uh and similar like different topics same thing like build the thing practice it try to like reading is something at least in technical stuff like you read about it in the documentation yeah very cool but if you don't put your heads on it and start typing >> start get your hands dirty with it fail like you need to fail it's it's not good to to have a successful run from the first time like you need to blow things like ah why it's happening. Like you need that feeling. >> Well, people people are afraid of that. It seems like they're they're looking for the shortcut and they want to say like, "Hey, you've been through all this stuff. Just tell me the answer." And it's like the I've been trying to say this and I'm trying to make it more succinct and sound like a I don't know kind of catchy, but like like the only shortcut is that there is no shortcut, right? Like the sooner that you understand you need to be failing, messing up, like that's literally what you should be doing to learn versus tell me the happy path through everything because you will not learn a single thing that way. >> Exactly. So yeah, exactly. >> Yeah. Tough generation, I guess. Like I'm looking very old. I'm not that old. Still 33, 34. So yeah. Oh, I'm I just turned 35 this year, but I I've been joking around like I'm starting to lose my hair here, which was fine, but I'm losing more hair back here, which is making me nervous. I got white in my beard. >> So, >> one gray gray here. >> Mine looks like it's patchy, but it's just that it's white. >> Yeah, it kind of snuck up on me, but uh that's maybe from the startup life, I guess. Well, I had one more thing kind of on this last uh bit that we were talking through that I think you can probably uh help us wrap this up here, but you're talking about doing some learning outside of work. Obviously, you have your YouTube channel and content creation balance, right? There's going to like this idea of work life balance, how we can get through all these things. This is a huge topic. So, um, you know, I'm curious, how do how do you go about your life balancing these things where you need to focus on work? There's this learning outside of work, whether it's for work itself or for YouTube. >> What's the How does that look for you? >> Yeah, that's not very good. Like, I'm okay. >> I'm I'm managing, but not in a good way. Like, it's Sunday. Sunday at 6 PM and I'm doing an interview with you without like being with the kids maybe. So, so it's difficult to have that balance I know but in the same time every every now and then you need to prioritize something like families come first definitely but you need to have after that your career and your hobbies and the things that you love to do like I'm not uh so much of a like yeah I try to exercise before like to go gym like I did few years in gym and then I hurt my back. I have like the last disc in my back. It's always been hurting now. So I can't do actual exercise. So yeah, I skipped that. But thing that I love the most is doing what I'm doing now. But in the same time you need to have uh like you need to focus on family. I remember like when I finished my BS and then like I got married. It's my first year in marriage. I uh got a new title. I was leading the development team. So this is strike two. And then for some idiot reason I started with a master degree. All the three together. And then I remember start having panic attacks. It was like you you start missing very important times from your family and from work and from university. And then I decided it's part of that first uh strike that we talked about before like I I stopped the university thing like yeah I put it on hold. I can continue that later. and I did. >> Uh, so I put that on hold, focus on more on on my family and try to build my career in a way that didn't stress me out like leading developers, leading a project in that early stage is difficult like that's that's the reason if if it is for me, I will get it. I wasn't ready. That's it. I wasn't ready because I'm failing. I'm seeing the result. So in the recent year I try to focus more family first then work family first then work and you have you will have your ups and downs like it's it's life you will do more in that on the expense of the first but you will get to manage eventually recently YouTube channel with the blog it was a new thing it's a new era and like when you start to get uh good feedback from others like saying yeah that's very cool I didn't know that we can do that I'm going to try to implement it in my work today this kind of comments will make you feel like yeah I'm I'm delivering something like I'm doing something very good >> and like few days ago I was talking to my wife and said you know 50 years from now if we are all dead and if YouTube's still a thing my kids can go online and see their dad doing something very helpful like >> right >> I'm giving some some good to the world even after like >> if YouTube still exist and if the algorithm keep on pushing my my content but you you know that's something very like this is something to keep you going like why I'm doing this kind of stuff that's the then you can manage. It's difficult like like I said it's very difficult like hopefully I can get few few contents from this recording so I can push to the YouTube so yeah I can I can have my balance now >> but it's uh I think that's that's really important and I I love that you were mentioning like this kind of thing the content creation the sharing of the knowledge and all of that like part of it is for you because you were like I have things that I can share and like it it feels good to get them out but at the same time Like when you have people that are are messaging you or commenting and they're saying like this has helped me. >> It's such a good feeling to know like and with the reach of the internet and everything. It's like literally like the fact that we're having this conversation right now was because of content creation and stuff right so when you can have someone from anywhere in the world say thank you like I'm going to try this or thank you this helped me. >> Such a good feeling to know like you are making a difference. The first time that I got kind of message was after I finished my master degree like five years ago. I published all my projects to GitHub like it's my projects I need to open source them. In master you do some advanced stuff like I remember doing uh an advanced search engine like filebased search engine. I wrote it in C. It's very interesting. And another one was implementation of the aurori algorithm. So that was also interesting. So the first time that I got like a comment from a viewer from from someone else, I got an email asking me, hey, can you upload the file sample for the app because I'm trying to work it out and I don't know the structure. For me, it was like, wow. Like I put it online. I didn't share it even like it's it's there. >> Someone found it. Yeah, >> someone found it. Download the code, try to to to work it out and they need help. And then definitely like I open my laptop, send the file, I updated the the the GitHub repo and then hey, there you go. Let me know if you need anything else. It was very very good feeling like to to know that yeah I helped someone because I didn't meant to but it was helpful and yeah like sharing this kindness and helpful is what we need to do at least in this in this short period of time that we have here. So yeah. >> Yeah. I love that. I think that's that's so awesome to hear. Well Muhammad I wanted to say thank you so much again for having this conversation with me. um we didn't get to promote your channel and stuff. So, where can people find you? I'll make sure I get all the links that you want to have in like the comments in the description after, but let us know where where can people find you if they want to get in touch with you. >> You can find me on my website. It's back there on the wall. A mmed.com YouTube that was a mistake like MH is Muhammad. So yeah, it's stick there in YouTube, in Twitter and LinkedIn for sure. Muhammad, you can you can find me there. Email, I will put everything. So you can if I if you need anything, just ping me and I'm happy to help. And Nick, thank you again for for giving me this opportunity. It's it was a wonderful one hour and 12 minutes. So yeah, thank you very much.

Frequently Asked Questions

What is Blazor and why is it significant in software development?

Blazor is a web framework that allows developers to build interactive web applications using C# instead of JavaScript. It's significant because it enables .NET developers to leverage their existing skills in a web environment, making it easier to create rich client-side applications.

How did you get started with software development and what was your journey like?

I got started with software development at a young age, influenced by my uncle who was a developer. My journey involved a lot of trial and error, switching from computer engineering to computer science, and learning programming languages like C and Java. I faced challenges in my early career, especially with job titles, but I learned to focus on my skills rather than titles.

What advice do you have for junior developers looking to advance in their careers?

My advice for junior developers is to embrace the learning process and not be afraid to say 'I don't know.' It's important to practice regularly, seek out challenges, and focus on building a solid foundation of skills rather than just chasing titles. Remember, failure is part of learning, so don't shy away from it.

These FAQs were generated by AI from the video transcript.
An error has occurred. This application may no longer respond until reloaded. Reload