From the comments, a viewer wanted my perspective on whether or not it's worth it to learn C# these days with all of the AI advancements. Let's discuss!
📄 Auto-Generated Transcript ▾
Transcript is auto-generated and may contain errors.
Hey folks, we got a great question from the comments and the question is, do I think there's an ROI on learning C? And this will be the shortest video you've ever seen. The answer is yes. Thank you for watching. I will see you in the next one. Just kidding. But uh yeah, I think this is an interesting one. Um because if you watch my content, you know that I am a C developer. I've been working with C for a long time. this channel on code commute I don't do a lot of you know diving into C stuff because it's a lot more general software engineering but like my my main social media content when it comes to technical stuff is all in C andnet and um that's just because what I've been building in for ages and so uh disclaimer to start this thing off
like my obvious bias is that I heavily use C and have for a very long time and I am not going to sit here and try to like convince you that like I think C is the best language ever and like I'm not like a a zealot about it. I'm not like I see a lot of people whether it's C++ or Rust or or whatever. It's like no I I acknowledge like I like using C. It works really well for me and basically every situation I found myself in. So I like to use it. But doesn't mean it's the best language. I don't think that exists. Um, and so when I go to answer this question, um, I actually want to say that the reason that I think there's an ROI on learning C has nothing to do with C. And that's going to sound kind of funny.
the way that I see things going and I don't have a crystal ball or anything but uh with how how much AI is affecting software engineering and how we develop software I think that having knowledge of like or like let's say like deep knowledge of like specific frameworks and things like that is less valuable. Okay. And before I continue on that, I have always thought that like having extreme like uh knowledge and like just the frameworks themselves is less valuable than having like a deeper understanding of like in general how things work in patterns and practices. Okay. So the reason I say that is because if you're and you I'm not trying to argue and convince you of this. This is just I'm explaining my belief on this. If you spend um you know all of your your mental effort, mental cycles trying to or like know the nuances of something so that you can work around things.
is if that's where all of your mental energy goes in on specific frameworks, then I would I would really hope the side effect of that is that you are understanding like the general uh patterns and and systems that are that are there. But I don't know that's always the case. It's kind of like when people are uh I don't know like I'll see like you know the C interview questions and I'm like what the hell do you mean C interview questions? What like I've been programming in C for I don't even know how long at this point. Uh since what like grade it would have been no first first year of university. It's way too long ago now. um a long time and and uh in terms of like a C sharp interview question like what what does that even mean? This is just like it's just knowledge that you could search and you've always been able to do it.
So I don't think there's a ton of value in in that kind of stuff. I I do think for example something interesting is like C has like garbage collection. Okay, like what does it mean to be a managed language with a garbage collector? the nuances of how that specifically works in C I think has a lot less value overall in your software engineering career than just understanding the pros and cons of a garbage collector in a language. So to me like the the really specific language knowledge has always been kind of a thing. And I realize I'm sounding like very one-sided on this. I'm not saying there's zero value in understanding the nuances of a language. I'm saying that like if someone is valuing you as a software engineer based on that, I think that's because it's it's so specific that like what I would really want to understand about you as a software engineer is like do you understand the principles behind that?
Do you understand what that means? if we were to switch the language, right? So this language doesn't have a garbage collector or this language with this runtime or when we have syntax like this and these types of patterns like what are side effects that we see of that in uh how software is developed, right? Um like call back hell with some uh some node stuff, right? Like it's not it's not specifically that I care about a language or a framework. It's that it's that you're learning these like foundational things and some languages will exhibit that more than others. So I do think there's kind of two parts to this. One, I do think that um understanding programming languages I think that will continue to have a benefit. And I think this is the case with literally anything that you pick. Think of anything, anything you want.
Let's pick cars cuz I'm driving a car. It doesn't there's a a lower ROI for me to go spend all of my mental effort on understanding exactly the inner workings of this AMG GT. It's not that there's no value in that. It's that there's diminishing returns. What would be helpful for me to understand are things like what does it mean when you have a turbo in a vehicle? What does it mean when we're talking about cylinders in a car, a V4, a V8, like what do those things mean, right? Like what when it comes to oil changes, what why is there different viscosity of oil, right? Not specifically uh this Lexus that I'm passing right now, what kind of oil does that specifically take? Like who gives a If I think if you understand the principles, it's always more helpful. Pick sports. You're watching sports on TV.
I don't watch any sports. You can't see my shirt underneath. It says sports right now. Um, but you know, you're watching sports and something happens. Like it would it would probably be helpful if you understood the rules and like there's lots of weird and interesting rules in some sports. Like it would be helpful to know about those things, right? There is a lower ROI on knowing all the ridiculous nuances or knowing every player's stats. It's not that there's zero value. It's just that there's a lower ROI on going ridiculously specific and not spending any time understanding foundations. But to the first point, I think that there is always there is always additional value of some sort in understanding how things work. And I firmly believe that about anything you pick completely unrelated to software engineering or specific to software engineering. And I guess just to to briefly summarize that my my my rationale for that is it's just information to help you make better decisions if and when you need to.
because without information or an understanding of things, it's more challenging. So, not that there's zero value. Again, going back to like, do you understand specifically how the garbage collector works in C? Of course, there's value in that, but I think that there's more value in understanding it from a general sense and being able to apply that across the board. Okay, so that's part one of that. Part two is that uh if you do have this um kind of like I shifted what part one was as I was ranting about it, but I think just a an addition to that. If you do know the specifics, I think that can be very helpful if you're working in niche things. Right? Very brief example. uh one of the teams that I'm working with right now, we have a hypers scale caching system and there's C in it. it needs to be extremely performant.
And so there are absolutely things that are being explored right now where it's like if you don't have an extremely deep understanding of how C and work, you won't be able to get to those points. However, just to kind of put another little loop on it, the person or one of the people that is working on this, it's not like they went into it and they had, you know, 40 years of like deep diving into all the C nuances. Absolutely not. But they are a very smart engineer who understands things like fundamentals of things, has different experiences in different programming languages and they're able to start digging in and learning about those details. So again, the foundations for them are allowing them to go hyperfocus on these niche details and they become very effective in a space. Um, so it's not that there's no value in going deep.
It's just that I think that the ROI starts to drop. That's not specific to C. That's specific to to things in general. Now to pivot I think with AI uh because I mentioned this near the beginning of this video with AI uh there is a lot of sort of like interesting effects of this because anyone right if you're listening to this you could pull up co-pilot claude cursor whatever you want okay codeex I don't know we got a million things you can pull up any one of those tools and you could say pick a language you don't Right. I I've written hello world in Rust and that's the extent of my knowledge um that I programmed. So you could say I want to go build something in Rust, right? And if it's at least don't get me wrong, uh some of these tools are obviously getting better and better and doing like one shot of like more and more impressive things, but keeping it scoped.
If you said, I wanted to build like an HTTP server in Rust, right? A a simple HTTP server in Rust, you could have one built. And so, did that require any Rust knowledge at all? No. Right? You could be like, I don't even I don't even know how to to run this Rust program. And you could ask the LLM and it would say do this or I don't know what dependencies need to happen to build this or do I need dependencies to run this Rust program and it would tell you, right? You don't you don't actually have to know. But when you're stuck and you have questions, having a foundational understanding of things helps you ask the questions. Right? You just heard me say, "I don't know what dependencies I need to build this." If you've never programmed anything before, do you even What's a dependency?
What does build mean? What about like compile time dependencies versus runtime? What's compile even mean? Is is Rust interpreted? Like, you know, if you don't know any of these details, it's really difficult to ask the right questions. And it's not that you can't figure it out. It's not that you couldn't sit there with an LLM and just be like, "It's not working. It's not working. Here's the error." You will absolutely make some kind of progress. I'm not saying you won't. But when it comes to effectiveness, because this question was about ROI. When it comes to effectiveness, I do think there is a lot of value in understanding how things work. And I will give you I think I talked about this in a recent video.
I won't go into all the specifics of it, but I was playing around vibe coding some MCP servers and one of the criteria I had was that I wanted to uh make it so that if someone wanted to go use this MCP server, they don't have to install any dependencies, right? Like it's a trivial MCP server. It's literally just wrapping an API. It's not even my API. It's just a convenience thing. And I said, "Hey, if anyone else wants to use this, they probably I know I don't I don't like pulling down people's code, building it, and then going, "Ah, it's not working, messing around, spending a day getting to build just to go, oh, like this thing kind of sucks." So, I would rather just give people something where they can download it and do like no effort, right? If I'm going to do it, I might as well do it that way.
And so I was chatting with Copilot and because it based on context knows that I have a lot of C# development, it was kind of steering in that direction and I said, well, let's talk about other things. I don't it doesn't have to be C. I don't I don't care. I'm not building this MCP server because I'm so fascinated by how MCP works. I want this tool. And so it suggested a few things and it came down to like you could have it in go and it was like by the way and like it was doing this table breakdown. It was like you could you could also compile it into uh a self-managed like net executable where you don't need the runtime. I said cool do both. And so it built for me this MCP server that is in both Go and C. They parallel each other in terms of features.
And I've never read a line of go code ever. Now, it's not a not a flex. I'm not not going see look how good I am at vibe coding. Uh not at all. It I'm just giving you an example of like I did not have to know Go to be able to have that build. But I think with having zero software development experience, I don't know if I would have got to the same point at the pace that I did. I'm not saying it's impossible for someone to do with no programming experience. I actually should say like out loud. I think that it's really awesome that people that maybe never before considered that they could build software because oh, I don't know math or I'm not smart enough. I think it's so cool that at least people can get their foot in the door and start.
I love that because that is one of the the things in general I've been trying to do with like Dev Leader, which is my my personal brand that I do for all the software engineering stuff. I know we're on code commute right now, but this is like a sort of a subbrand with Dev Leader. My whole point, it started off with trying to help engineering managers, like devs that went into that role, but along the way, it's really just been like I want to help people get in, right? There's no there's no magic behind the curtain and you got to start and it's going to be hard and that's okay. No shortcuts. Just, you know, work at it and, you know, if you're if you're maintaining your interest, you'll get there. So, I love that, you know, air uh quote like non-technical people can get into to building software.
I love it. I don't think that if you maintain zero interest in how software works that it'll be effective. So, I would hope that as people get into it and they're like, "Wow, this is so cool. I can see things coming together." that they maintain curiosity that they do try to learn because that is going to be how you get better and more effective. So, I did not have to know go. But I bet you if I would have got stuck along the way, right, I could lean into my software engineering knowledge and ask co-pilot questions to help me. And I bet you if I hit a Go specific thing and I caught on to it, if I knew Go, it would probably have been beneficial for me. Buddy, you got to let me in here. I need to get in. No. Running out of options.
There's a cop up there and I can't fly ahead of everyone to get in. So, you got to make the decision. Thank you. Thank you, kind sir. Andor, madam. Uh so sort of just evidencing that like no specific knowledge of a programming language required to be able to build something but uh having general knowledge and using AI tools I think is helpful. We were just talking about this um there's a a product manager I work with. There's there's a bunch but there are two in particular. one uh it's actually a product manager and his manager and the one product manager is really like I think it's so cool. He's really leaning into AI tool usage. Um and it it almost seems like multiple times a day he's having these aha moments where he's like this is so cool. I've we've never been able to do something like this and it's like I love seeing it because it's like uh I don't know like seeing people get excited about learning things and trying things out.
It's like I don't know it's it feels contagious like it's very exciting. So love seeing that for him. And I was actually talking with his manager uh the other day after work, not not about him, just about AI, software engineering in general, his career. And we got talking and I said, "Hey, like I don't know if you're using this stuff. Uh I know the one guy on your team is in particular, but like if you're interested, we should sit down and and talk." I got to go around this police officer. So, we ended up having like this group session together where we were chatting and uh yeah, just like super cool to see um you know uh people that it's not like they have no technical skills. I'm not I'm not trying to say that about our product managers, but they don't write code every day, right?
and and seeing them in this position where they're like, "We have these tools where we can explore this stuff." The the one product manager who I I bet you if I were to call him right now and say, you know, do you consider yourself a programmer, he would say, absolutely not. And then if I said to him, do you think that you could put this together? and gave him something like a, you know, a little web server, something, you know, something tangible, something not ridiculous, then he would say, "Yes, I think I could. I think I could work with AI and build that." And I love that. So I I think that over time with more like more AI tooling, the better the models, the better the the harnesses around them, the more that we're going to be in this position where um understanding how software works, understanding differences in languages, foundations of things is going to be super helpful and it always has been and I think it always will be.
I don't think as much around uh specifics or like hypers specifics of languages will be valuable except for cuz I realize as I say this stuff someone it's easy to hyperfocus on different parts of it. I think that if you were to draw like a a distribution of this like the hypersp specific stuff will have less and less value across the board except for these situations where like the model is getting stuck on on things and like you can't get yourself out of that hole. And if you had that hypersp specific knowledge you might go ah yes like here's the trick I can unblock this thing. Um but the occurrence of those happening I think will be less and less and less if that makes sense. So that's my take. So to answer this person's question very succinctly, yes, I think there is a great ROI in learning C and any other programming language you pick.
Take care. See you in the next one.