Yes. Im running C# dotnet core 6 code on docker containers and knowing linux really helps with the underlying commands to manipulate the image.
@IAmTimCorey
Жыл бұрын
Thanks for sharing.
@7mo0do49
Жыл бұрын
Couldn't agree more. Setting a goal is always the wise option to choose because it is like the light in a dark tunnel
@IAmTimCorey
Жыл бұрын
Thanks!
@valolebassiste
Жыл бұрын
Thanks, so first language, second small application, third web application, fourth deploy on Azure, fifth use docker to deploy on Linux and finally learn system administration. Would you consider docker to be the easiest way to deploy on Linux? I had trouble to deploy my Blazor Web application on Debian. Issue with the code unable to access CSS.
@jamesbest3347
Жыл бұрын
Docker is definitely the easiest way to deploy on linux in a multi/micro-serviced environment. Probably overkill for a single service application. Use something like Terraform to run all the Dockerfile scripts you have in order to build up the services. The only problem with this is that most personal projects don't need to have this micro-serviced architecture and can be done in one app. So unless you really like or want to know how to do some DevOps stuff like this then it's annoying to split out your APIs/projects into different services just to learn how to do use docker and an orchestrator (terraform or kubernetes) with linux.
@7mo0do49
Жыл бұрын
I think it is overkill for small-sized applications. Because Docker will mostly shine in microservices environment where you must deploy many services.
@IAmTimCorey
Жыл бұрын
Docker is a great way to learn how to deploy to Linux. And to address the comments about Docker being overkill for single applications, I would disagree. It isn't for every application, but it does work really well for single-installation applications that need it. The idea that if it works on your machine, it will work in production exactly the same way is a really big benefit.
@micro2743
Жыл бұрын
Excellent video, loved the short format and it was packed full of excellent facts!
@IAmTimCorey
Жыл бұрын
Thanks!
@crustydev5561
Жыл бұрын
This is definitely the best answered question on the channel. The one thing I wish I had done differently in my first couple of years is to have focused topics with a clear direction
@IAmTimCorey
Жыл бұрын
Thanks for sharing.
@bartson4425
4 ай бұрын
I want to learn how to setup servers etc should i focus on Linux or Windows Server as .NET Developer? Windows seems to be a natural choice because it is from Microsoft but i know that Linux is widely used by the Industry so what to learn?
@IAmTimCorey
4 ай бұрын
If you are learning about setting up servers just to support .NET, probably Linux. If you are learning about setting up servers to add to your skills in general, I would recommend learning both.
@codyjmathis
Жыл бұрын
Good answer overall, Tim. I would caution people however, by just deploying your app to an environment without FULLY understanding and configuring that environment or without the proper team behind you, the risk of security related comprise is very high.
@IAmTimCorey
Жыл бұрын
It's always important to understand your environment and how to secure it properly. Definitely.
@JinnGuild
Жыл бұрын
Hey there! I'd go a different path than "Yes, Eventually." I'd start by pointing out that 2/3 of this video is fluff in relation to the question. Where the beginning is moreso answering the question, "May I learn Linux as a C# Hobbyist?" and the end is moreso answering the question, "Is Linux a cool OS for anybody to learn?" -- Perhaps specifically for an SRE/DevOps person to learn. Of course the answers to those questions is: Absolutely, go for it. Both if you want to, and also if you need to. The middle of this video focuses on the question asked as an "eventual requirement" of a paid "C# Developer" who is writing code. If not paid, then at least a person who is learning C# with the goal of being a paid C# Developer. Further disambiguation: A C# Software Architect or a Senior Engineer who is more of a team lead, SME, or abstraction writer, are not "C# Developers" per se. Yes, they develop, but a "C# Developer" is the person writing code for the 95+% of the product's implementation. The Senior or Architect develop abstractions or cross-cutting-concerns, but otherwise focus on planning, documenting, diagraming, managing, and communication. For those Software Architects or Leads, there are rare tasks where some abstraction needs to be written to check the platform to do something special with Networking, FileSystem, Environment Variables, or maybe something else. But to be honest, those are less and less a concern because SRE teams wire up their Containers in helpful ways, and the C# language has platform agnostic abstractions built in. EG: don't go writing your own Windows-Opinionated String Parsing libraries to build out file paths and whatnot. Use .NET Core's built in abstractions and be platform agnostic. Linux is the OS decision that SRE might have chosen for a multitude of great reasons. Though most C# applications, even a lot of new ones, are running on Windows. But these are all SRE decisions. SRE may reach into your repo to add a YAML or DockerFile or something, which the developer never even has to look at or touch. So learning Linux is an SRE thing. And as somebody on the Dev side of DevOps, a C# Developer communicates with the DevOps pros in SRE. Therefore, knowing a tiny bit about Linux could be conversationally helpful. At least knowing some concepts. But that really falls into how closely you work with the SRE team. I'd say Developers don't need to work with SRE much, though the Dev Lead or Architect may do so. And again, there is only a tiny bit of reason for them to have to discuss Linux in today's platform-agnostic .NET Core world. As for the actual C# Developers writing 95+% of the product code and using abstractions appropriately: My answer in response to this video is: "No, probably not. If you feel that you need to learn Linux, you may be doing something else wrong. Talk to your Senior Engineer or Architect to better use abstractions." That all said, a lot of small companies don't have an SRE Department. The "C# Developer", even if they're brand new in the industry, is expected to be the DBA, SRE, Infrastructure, Help Desk, UIUX Designer, Front-End Dev, and everything inbetween. So yeah, you need to learn Linux. Or, find a company who cares about your mental health.
@IAmTimCorey
Жыл бұрын
Hmm, I'll address some of this. First, no, there isn't fluff in this video. In less than 8 minutes, I answered the question for people at all levels of their C# development careers. You took 8 paragraphs to respond because it isn't a simple answer. As to your identification of the different types of "C# developers", it sounds like you are looking at this from a large enterprise standpoint. Small to medium-sized businesses don't have these levels of distinctions (and more developers work there than at enterprises). DevOps have become more popular and more and more has fallen to developers. It isn't just the small companies that don't do this. I'm not saying that's right, I'm just saying that seems to be the trend. You also make the assumption that these skills are only needed for production deployment. The modern developer is using Docker personally more and more. Creating production-like environments on their machine makes for a better development experience (the closer you are to production settings and setup, the less likely you will say "it works on my machine"). One example is my video on SQL with Docker. I showed how a company can take their SQL backups and restore them into cleaned Docker images that developers can use as their development SQL so that their data is as close to production as possible (without the sensitive data of production). That is an automated process that tests the company's backups and provides a better dev environment in one and it all runs on Linux. The dev will need to know some about Linux if they want to make any changes to it. Bottom line is that it depends on who you are, what your goals are, and where you are at currently. That's why I answered it for hobbyists, new C# developers, experienced C# developers, and more.
@JinnGuild
Жыл бұрын
@@IAmTimCorey You're right that it isn't a simple topic. As some others have said no, and you requested feedback or reasoning, I was fine expanding for them. It's great to have a video format that is short. Perhaps short TLDR videos should be later accompanied by the longer format. It sounds like we agree that a Developer (Like most people at smaller companies) wear multiple hats. Sometimes they're a FrontEnd and Backend, sometimes they're Backend and DBA, sometimes they're also SRE or QA or something else. I frequently talk about Separation of Concerns and how, if you wear multiple hats, you should take off one hat before putting on another. Otherwise you will accidentally break SOC. So that small company who gives a person two or more hats should expect the person to take off one hat while putting on another. And while being a C# Developer, they do not need to know Linux. Similarly, while being a FrontEnd developer, they should not be applying their knowledge of the database schema to their UI development. It will contextually couple them. And we want to stay decoupled, even at a macro level. I think the difference is that you have seen DevOps fall more and more on Developers, or have seen Developers spinning up whole environments on their local boxes. Whereas I have allowed a developer to do that if they wish (of course), but have encouraged a shared development environment, which is a whole different conversation that I'll put on your suggestion form. (Shared Dev Environment versus Devs work in local containers).
@IAmTimCorey
Жыл бұрын
Excellent! I think that would be a great topic.
@AleksandarIvanov69
Жыл бұрын
naah, let your DevOps guy take care of that nonsense
@IAmTimCorey
Жыл бұрын
lol For most people, the “DevOps guy” is the person they see in the mirror every day. I think every developer should know some Docker in order to have a better developer experience, and that includes knowing how to work with Linux.
@CripplingDuality
Жыл бұрын
Short answer: yes Long answer: yeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeees
@IAmTimCorey
Жыл бұрын
lol
@pylvr8021
Жыл бұрын
He tim i have a question , please , i have a asp.net wep api that receives a raw html input , how i can xlean it using c# to provent xss attack , before serving it back to my users ?
@pinguincoder
Жыл бұрын
70-80% of Things in the Cloud Run in Linux! So yes you should definately learn It
@dietermeyer3531
Жыл бұрын
Software Engineering student here, and a Linux (Ubuntu) desktop user, I have started coding programs on Linux for over a year now, and I don't know if it is just a placebo effect, but I feel more productive when I code on this OS, than windows. The only real downside that I have now noticed is that with my latest project, which has a requirement for C# .Net Framework, I can't build applications for it on a Linux machine, which is understandable .Net Framework is a windows specific framework, whereas Linux is build totally different to run those builds. So my workaround for this was to create a Windows VM, to run Visual Studio on it. I am wondering though is .Net Framework still a very popular tool in C# or are people slowly starting to move to .Net Core to handle most of the stuff?
@MrTheFletch
Жыл бұрын
Awesomely; you are the opposite of the target audience of this question. The question can be flipped for you; If I'm a C# Developer on Linux (Imagine Ryder), and my web app is deployed to Windows/IIS, do I need to learn Windows/IIS? The answer is the same in both directions: No. The deployment OS/Container doesn't matter when using a runtime that is platform agnostic like .NET Core purports to be.
@00wiking
Жыл бұрын
I work on linux distributions everyday and prefer them over windows as C# programmer. Many things go much easier and faster to do for me on linux.
@IAmTimCorey
Жыл бұрын
Good to know.
@alessaro92
Жыл бұрын
Focusing on learning linux desktop environment as a developer is almost useless, but knowing how linux works and how to use the shell is very useful!
@alessaro92
Жыл бұрын
@@asanokatana yes but any thing can be done through shell/terminal, therefore should be leant first, desktop env are likely subject to changes
@yt-1337
Жыл бұрын
linux is the superior development OS, i mean windows is good for normal people using word/excel or moving some files (these basic office jobs) but not for dev
@aimene_.
Жыл бұрын
Thanks for the answer, Hope if you make for us a video about Nginx
@IAmTimCorey
Жыл бұрын
Thanks for the suggestion. Please add it to the list on the suggestion site so others can vote on it as well: suggestions.iamtimcorey.com/
@PeterArriola10
Жыл бұрын
The $50 per month access pass is the best investment I have made this year. It’s incredible the amount of value you get in return.
@IAmTimCorey
Жыл бұрын
Awesome! I'm glad it has been so helpful.
@gefallenesobst6855
Жыл бұрын
Really good video! Thanks!!
@IAmTimCorey
Жыл бұрын
You are welcome.
@williamliu8985
Жыл бұрын
I think github action could be one of the reasons for learning Linux.
@IAmTimCorey
Жыл бұрын
Why is that?
@williamliu8985
Жыл бұрын
@@IAmTimCorey Github action is powerful. Ubuntu is one of the most popular runner images in github action (the windows image counts twice time as the document states). With some linux knowledge, you can customize powerful scripts to suit your needs.
@zulhishamtan4308
Жыл бұрын
To me.... You should know Linux.
@IAmTimCorey
Жыл бұрын
That's what I concluded too.
@WillEhrendreich
Жыл бұрын
the next question is, Should a C# dev learn F#.. and the answer is yes. Even if you don't end up liking F#, you're going to be a dramatically better developer for having really learned it. I know it's skyrocketed my understanding, and even when I have to write C# code I'm better at it... but then I just miss F#..
@IAmTimCorey
Жыл бұрын
Thanks for the suggestion. Please add it to the list on the suggestion site so others can vote on it as well: suggestions.iamtimcorey.com/
@WillEhrendreich
Жыл бұрын
@@IAmTimCorey ok, it won't let me go over 500 chars there so I'm just going to leave my rant here.. Lol. Learning FSharp has been an incredible experience for me, and I have grown by leaps and bounds as a developer because of it. Learning how to think from the functional first approach, having all code depend upon what comes before it, learning think in terms of minimizing or eradicating global mutable state, learning about the elegance and simplicity of algebraic data types (which make enums look like a cheap half hearted try) especially for domain modeling , having access to really smart type inference, an increased focus on interactive programming, an increased focus on thinking about composition over inheritance, idiomatic code being significantly easier to test, and quite frankly much cleaner syntax making for easier to understand code has been a huge overhaul in my understanding of what makes programming great. In the end it comes down to functions and data. It's the epitome of keeping things simple, especially when you play by how the language is designed to work. Even on the OOP side of the tracks, FSharp has a nicer way to deal with it, especially when you can just instantiate an interface directly..
@MahmoudSaadawy
Жыл бұрын
Thanks Tim!
@IAmTimCorey
Жыл бұрын
You are welcome.
@soufianemakmoul815
Жыл бұрын
Thanks
@IAmTimCorey
Жыл бұрын
You are welcome.
@firebirbeuh
Жыл бұрын
no
@IAmTimCorey
Жыл бұрын
Why not?
@henry-js
Жыл бұрын
WSL
@IAmTimCorey
Жыл бұрын
A great new addition to Windows.
@joaogabrielv.m328
Жыл бұрын
I think it's 50/50 situation. If you are keen into work with desktop, Windows is the best choice, no shadow of doubt, because of WinForms, WPF and legacy code such as WebForms. However, MVC, WebAPI, Blazor, Console Apps and Docker development... Linux all the way (at least for me). Great video, Tim By the way, on Linux Rider it is a great IDE for Web, not that much for WinForms due to the more confuse designer in comparison with VS
@slipoch6635
Жыл бұрын
depending on the application, you may need to do it after a webapp. Webapps are pretty easy where a 'real' application can be very complex. Sysadmin is a separate field of expertise entirely.
Пікірлер: 57