Yet I work for a very successfully (we have too much work and don’t even advertise for it) small company and we all use windows computers as software engineers. We use C# .Net Entity Framework, SQL, GraphQL, React Typescript or WinForms.
We have some large clients that most people ok earth have heard of.
What exactly are we talking about? Doing Windows related development on Windows is roughly as decent as doing Linux related development is on Linux (or Mac).
It’s just that because like 90% of servers are Linux, 90% of development benefits far more from being developed on a Linux-y system.
For example, the Windows filesystem is very different. Over and over I’ve had issues with permissions being different, with paths being inconsistent (this happens esp. with WSL) and with limits on path length.
You can develop on Windows, but having the test env closer to the real env takes care of so many little headaches.
That’s an uncommon opinion here. Here being the operative word.
Look in I’m not going to say I wasn’t disappointed that it wasn’t Mac which I used at my last job, but when it comes down to what we need to do in a day I don’t notice the difference.
I tried Linux last year as a daily driver and gave up as I’m not looking for something else to debug in my own time. I now just want it to work.
I’ve been using Linux and MacOS my entire life, with brief stints on windows when my job has required it. Every time I have to use Windows I’m gobsmacked at some of the design choices, bugs, lag, and anti-patterns.
You’re absolutely right that it’s mostly the same, you mostly use the same apps, you still use a mouse to interact with them, there’s still a file system, etc. But when the experience is mostly the same it just makes the parts where they differ so much more frustrating in my experience.
Unfortunately my experiences trying to use Windows as a daily driver have been much like yours with Linux, I find myself messing around with stupid bullshit in a never ending cascade of settings menus, each more janky than the last, just trying to do simple things. It’s unfortunate Windows has become so janky as I remember it working quite well back in the xp days.
All this is to say, I think at this point Linux is often as good as Windows (it does depend on the distro, tons of bad ones out there), but familiarity is king. I’ve spent decades using all three operating systems, and have mainlined Linux since 2023, so that’s just what I’m most familiar with now.
I’ve lost track of what we were originally talking about, but yeah. They’re all good enough just use whatever you’re comfortable with and don’t overthink it I guess 🤷
C# development is incredibly efficient to be fair.
Have you considered not asking questions based on conjecture? No it isn’t because we are inefficient. It’s a mix of staff come first and the work comes second and a lack of greed I’d say. Most of our work comes from word of mouth and we keep client for as long as they’ll stay with us.
If a client reads a spec and get the application described and decides it’s not right we will change it for them for free to build a relationship. Which is why we get more and more requests to work with us.
As someone who has worked with a pretty large C# codebase and several smaller ones, I’ve found it to be one of the least efficient languages to program in. This is maybe not a technical fault of the language, but the way Microsoft encourages developing C# means that once you get past a certain point even simple MRs will have 10-20 files changed. There is sooooooooo much boilerplate caused by .NET that even things like Java Spring Boot just don’t have (and even then I’d consider Java to be a pretty bloated language in terms of boilerplate).
That’s ignoring the fact that the ecosystem surrounding .NET is a lot more enterprise-y, meaning a good portion of libraries require paid licenses to use.
Yeah, I totally get where you’re coming from. I think it depends on what you mean by ‘efficient.’ If we’re talking about runtime performance and memory management, C# and .NET are generally very efficient: JIT compilation, span/memory optimisations, and the garbage collector all make it competitive with Java in most workloads.
Where I agree with you is in developer efficiency: .NET projects can definitely get heavy with boilerplate, especially in enterprise setups with lots of layers, dependency injection, and config-heavy patterns. That’s not necessarily a language issue, but more a combination of the framework conventions, Microsoft’s enterprise guidance, and patterns like MVC/WebAPI scaffolding.
Yet I work for a very successfully (we have too much work and don’t even advertise for it) small company and we all use windows computers as software engineers. We use C# .Net Entity Framework, SQL, GraphQL, React Typescript or WinForms.
We have some large clients that most people ok earth have heard of.
Nobody thinks you can’t do software engineering on windows. It’s just worse.
It really isn’t though. I’ve done in on Windows, Mac, and Linux.
Mac and Linux are easier to install stuff but on the whole the experience has been almost identical.
What exactly are we talking about? Doing Windows related development on Windows is roughly as decent as doing Linux related development is on Linux (or Mac).
It’s just that because like 90% of servers are Linux, 90% of development benefits far more from being developed on a Linux-y system.
For example, the Windows filesystem is very different. Over and over I’ve had issues with permissions being different, with paths being inconsistent (this happens esp. with WSL) and with limits on path length.
You can develop on Windows, but having the test env closer to the real env takes care of so many little headaches.
You’ve used modern Linux and modern Windows and think the experience is almost identical? That’s an uncommon opinion.
That’s an uncommon opinion here. Here being the operative word.
Look in I’m not going to say I wasn’t disappointed that it wasn’t Mac which I used at my last job, but when it comes down to what we need to do in a day I don’t notice the difference.
I tried Linux last year as a daily driver and gave up as I’m not looking for something else to debug in my own time. I now just want it to work.
I’ve been using Linux and MacOS my entire life, with brief stints on windows when my job has required it. Every time I have to use Windows I’m gobsmacked at some of the design choices, bugs, lag, and anti-patterns.
You’re absolutely right that it’s mostly the same, you mostly use the same apps, you still use a mouse to interact with them, there’s still a file system, etc. But when the experience is mostly the same it just makes the parts where they differ so much more frustrating in my experience.
Unfortunately my experiences trying to use Windows as a daily driver have been much like yours with Linux, I find myself messing around with stupid bullshit in a never ending cascade of settings menus, each more janky than the last, just trying to do simple things. It’s unfortunate Windows has become so janky as I remember it working quite well back in the xp days.
All this is to say, I think at this point Linux is often as good as Windows (it does depend on the distro, tons of bad ones out there), but familiarity is king. I’ve spent decades using all three operating systems, and have mainlined Linux since 2023, so that’s just what I’m most familiar with now.
I’ve lost track of what we were originally talking about, but yeah. They’re all good enough just use whatever you’re comfortable with and don’t overthink it I guess 🤷
Have you considered that you might have too much work simply because these tools are inefficient?
C# development is incredibly efficient to be fair.
Have you considered not asking questions based on conjecture? No it isn’t because we are inefficient. It’s a mix of staff come first and the work comes second and a lack of greed I’d say. Most of our work comes from word of mouth and we keep client for as long as they’ll stay with us.
If a client reads a spec and get the application described and decides it’s not right we will change it for them for free to build a relationship. Which is why we get more and more requests to work with us.
As someone who has worked with a pretty large C# codebase and several smaller ones, I’ve found it to be one of the least efficient languages to program in. This is maybe not a technical fault of the language, but the way Microsoft encourages developing C# means that once you get past a certain point even simple MRs will have 10-20 files changed. There is sooooooooo much boilerplate caused by .NET that even things like Java Spring Boot just don’t have (and even then I’d consider Java to be a pretty bloated language in terms of boilerplate).
That’s ignoring the fact that the ecosystem surrounding .NET is a lot more enterprise-y, meaning a good portion of libraries require paid licenses to use.
Yeah, I totally get where you’re coming from. I think it depends on what you mean by ‘efficient.’ If we’re talking about runtime performance and memory management, C# and .NET are generally very efficient: JIT compilation, span/memory optimisations, and the garbage collector all make it competitive with Java in most workloads.
Where I agree with you is in developer efficiency: .NET projects can definitely get heavy with boilerplate, especially in enterprise setups with lots of layers, dependency injection, and config-heavy patterns. That’s not necessarily a language issue, but more a combination of the framework conventions, Microsoft’s enterprise guidance, and patterns like MVC/WebAPI scaffolding.
Eh C# GUI development is quite productive. I don’t think you’d get such a pleasant experience on Linux.