Why Startups Hate .NET and C#
ฝัง
- เผยแพร่เมื่อ 11 ก.ย. 2024
- Use code DOCKER15 and get 15% off the brand new Docker course on Dometrain: dometrain.com/...
Become a Patreon and get source code access: / nickchapsas
Hello, everybody, I'm Nick, and in this video, I will go over some claims that .NET and C# are not popular among startups. There is certainly truth to that but I would like to investigate why.
The post on Reddit: / why_isnt_dotnet_core_p...
Subscribe to Dan: @danclarkeuk
Workshops: bit.ly/nickwor...
Don't forget to comment, like and subscribe :)
Social Media:
Follow me on GitHub: bit.ly/ChapsasG...
Follow me on Twitter: bit.ly/ChapsasT...
Connect on LinkedIn: bit.ly/ChapsasL...
Keep coding merch: keepcoding.shop
#csharp #dotnet
"For the love of God, there are F# developers and all five of them love F#". Haha.
Caught me off guard too haha
I really feel bad for F# to be honest haha.
Yeah that was a good one )))
That got me good
😂😂😂 Lol!
Two things I don't understand in tech:
1 - the love for Javascript
2 - the hate for C#/.NET
When my frontend developer told me he rather use typescript instead of javascript, he became from friend.
@@kinggrizzly13 The only reason why people use Javascript is because they have not tried Typescript yet.
@@kinggrizzly13 That does not make any sense. typescript is a language, that transpiles into javascript....you can't have typescript without javascript
One is/was a well structured language which (in the right hands) enforces clarity through syntax and semantics, the other is a mess of anonymous methods and hidden magic. One is now trying to be the other. C++ is calling.
I generaly don't understand the love for any loosely typed language. I had to work with php in the past and I hated it.... Strongly typed languages are so much better because they help preventing erros from happening during runtime because of stupid typos.
My takeaway from this video: there needs to be a support group for the five F# devs.
hahahaha that one line killed me
1 of the 5 F# devs sitting there like why am i catching strays out here?
That cracked me up.
"For the love of God, there is f# developers and all 5 of them love f# and nobody can tell them anything about it"
If C# deserves more love, it's even more true of F#. Much the most practical of the MLs, and the MLs are much the most practical functional languages for real-world work.
And it's not even restricted to numerical computing - read Scott Wlaschin's wonderful book "Domain Modelling Made Functional" if you need convincing. It's one of the best programming books I've ever read and you'll learn a lot from it whatever paradigm you favour.
@@IsraelQuiroz I actually said this out loud to no one in particular.
There's literally dozens of us
Some of the reasons they hate .NET and C# that I have heard are:
- Anti-Microsoft bias (linux good, open-source good, windows bad, microsoft bad)
- Not cross-platform and/or closed source (apparently some people still live in 2012)
- "C/C++ C# is hard, Python is easy"
- "C# is the language of the past, now eveyone use Python"
In 2022 I attended a Job Fair at my previous university. One of the interviewer told me ".NET is for windows desktop app only, you can't create website with it.", and he still didn't believe me even after I showed him the web app I made for my father's clinic.
You already named it, but I think a major reason why C# has never taken off, is that Microsoft has shot themselves in the foot by limiting .Net to Windows with their flagship programming language being mocked as "Microsoft Java". I haven't been around for so long and originally swapped from Java, but if I compare earlier .Net Framework Versions vs Java there isn't really enough incentive to switch if you are already familiar with Java and have your codebase written in it. Sure, C# was born from a desire to improve Java - and having worked with both languages, I think Microsoft succeeded there, but out-competing a still valid programming language in an already established leading position is tough. C# really started out-performing Java with .Net Core and made massive leaps with .Net now, but the stigma is still there, as is the believe that .Net is Windows only.
Another reason for me is that Microsoft is and was quite experimental with no real plan for the future. If you look at front end frameworks Microsoft offer different shades of XAML with WPF, Xamarin, MAUI and UWP (which seems to be discontinued in favour of MAUI) - not to forget Windows Forms is still around, too. It is hard to tell what frameworks are going to be pushed in the future and which will be discontinued. Looking how Unity and Godot are still stuck with Mono and C# 8 (although Unitiy has other problems right now), it should be easy to see how Microsoft has taken suboptimal decisions in the past, that haven't been fully mitigated yet. Asp.Net is nice, because it is basically the only backend framework offered by Microsoft directly.
Let's be honest here, csharp is as cross platform as swift. Why use csharp when all it's going to do is force you to use different stacks for windows, web and linux? There are many easier option nowadays.
@@flarebear5346but C# and .NET Core / .NET 5+ are all cross platform and the .NET backend is open source nowadays.
You can use exactly the same stack for frontend and backend if you want to do so with it.
I worked on .NET / C# backends running on Linux / kubernetes for a couple of years before I left that place for a better paying position. It was actually pretty nice to work with.
@@flarebear5346 so when I can use MAUI in Linux?
From my experience the reason why people hate Windows isn't so much bias but mainly because it's worse for development in general as it can't containerise apps on the same kernel. It has to work around it by virtualising another kernel; hence why Microsoft made WSL. They wouldn't have bothered with WSL if Windows was capable of doing the same thing with the same level of performance as on *nix systems. Even with WSL, it's very clunky to work with.
Don't get me wrong, I avoid Windows for a few reasons - one of them being I don't like how much telemetry there is - so you might call that bias. Having said that, I have to use a Windows instance for a number of things at work and I find the UX super annoying because it's far harder to customise to do what I want (even MacOS is easier to work with and customise, and that's saying something). It's also a huge pain when it comes to things like hashing because it has the tendency to just re-encode things to use
for newline which completely changes the hash.
Chalking it down to just anti-Microsoft bias is dishonest as it isn't telling the full story.
As an F# developer I feel attacked. We have a 6th developer now! Get with it old man!
There are literally half a dozen of us
Still more then Haskell developers.
Hey! I've tried f# in the past and I love it! Where are the best communities to join so I can use it more?
@@taylorswe They are trolling, it's all a myth like fairy dust. Everyone knows F# developers don't actually exist.
@@piotrj333 Underappreciated comment.
What I really love in C# is LINQ. This is absolutely brilliant in balance between magic and transparency. I think people in other languages don't like C# because they don't realize how awesome LINQ is.
It is an absolute piece of shit and is woefully inefficient.
That and as you learn more about the ecosystem and lower level keywords and structs you can write 'faster' code than standard linq, but linq is a fantastic functional-code library to get beginners and startups stood up!
@@andyfitz199299% of the time developer performance and code maintainability trumps code performance. If you can get better code performance without much effort, great, but usually companies want you to produce more faster, not take time to optimise performance unless it's critical.
This is where LINQ really shines. You CAN write more performant code but when you don't have to LINQ is just easier to maintain.
you also have this feature in other languages. so it doesn't stand out
@@blackknight2368 there is a nuance. When you have sex with your boyfriend you both have a dick inside you. But there is a nuance. Same for linq-ish implementations in other languages. There is a nuance
I founded a startup and I love .Net .. In fact I went all in with .Net and Blazor. In the past 2 years it already proved to be the best choice. So much time saved and less headaches. I can't imagine building the whole thing with javascript. Yes, js is probably much easier to write on the short term, but on the long run it would've taken us over double the time and we would still have runtime bugs and a mess as the project grows. Even compared to .Net backend (or other language) and js frontend, we estimate we were still 25% faster with .Net and Blazor.
I have been running a startup which is based on C# and .NET for past 6 years, and it works as fine as anything battletested :)
Are you hiring for. Net, blazor?
@@TheHassoun9 Already had. Currently not, but for sure as the company grows, all development positions will work with Blazor. It's important to mention that we don't necessarily require a lot of experience with Blazor, as we believe that knowing C# well and having previously worked with a SPA framework is enough to learn Blazor with the team in a record time.
I hear that blazor is quit slow is that the case?
@@BeepBoop2221 blazor WASM yes atm due to not having true multithreading support just async/await, blazor server works wonders
“9 out of 10 startups will fail, the money is elsewhere is in the established companies” is the most important takeaway from this video (and one I fully agree with).
No way are you getting paid as much competing with every Java/C# monkey out there in enterprise as you do in start-ups flush with VC cash. Start-up died? Just find another. And the serious money is in equity. That is, if you're good enough that start-ups want to give you a sizable amount of options. What enterprise is good for is stable employment for mid coders who can go home at 5pm and don't have to own the responsibility of success or failure. All this "enterprise" nonsense is just cope from people who wish they could hack building something exciting and significant.
@@paulie-g You can also build significant software when working for an enterprise company. It might not be the next Facebook or Uber, but do I really want to contribute to the next cesspool or worker exploitation platform? I will happily take less money, but still good money, if no VC nonsense is involved. How are the VC-funded crypto/NFT startups doing these days? I also prefer hard cash over stocks that may or may not have value in the future, and I do like going home at 5pm instead of overworking myself to death.
@@Kwpolska Can? Yes. Likely to? No. Some overwhelming percentage of coders working in enterprise will forever work on badly implemented (because the customer is captive so there is no incentive) business software to do mundane business things in the mundane business. Crypto start-ups are a negligible (and not even the most questionable) sliver of the landscape. Options is having the chance - not a certainty, but a chance - to make f-off money. They're not given instead of compensation, they're given in addition to it. And they're not a lottery ticket - if you're good enough, you choose the start-ups you work for based primarily on how much you believe in the business case, and you have a lot to do with the success if you're in the first five-ten employees.
@@paulie-g nailed it but no one wants to hear this
@@omgwat People always want to believe sh-t that makes them feel good about themselves and their past choices, particularly if said choices are hard or impossible to reverse.
I think the root of C# not being chosen by startups is a strong anti-microsoft bias. A lot of that bias comes from Silicon Valley being the hub for most startups. A secondary reason is due to .Net Framework's lack of cross platform support, and many people outside of C# circles not knowing the latest versions of .Net work on Linux.
@@rcherrycoke7322 what about SQL Server for Linux? Is it as good as .net core?
@@rcherrycoke7322 That's what he said.
.NET Core has been cross platform for years.
@@ricardogriffith9384the same people don't know that core 2 comes after framework 4.8
@@rcherrycoke7322 Called simply .NET since .NET 5 (November 2020)
I'm now in my 50's, I've been working on .Net since it's inception and SQL Server since 6.5. I say this not to sound arrogant in any way but just to put things into perspective, I was a Microsoft fanboy and still am to a certain extent. My wife left her company 10 yrs ago to start a hardware business for ourselves. 8 yrs in she was making enough financially for me to leave my job and join her. We needed to start writing internal software to automate tedious manual processes because we were actually doing more business. I wrote every thing PHP. I'm not talking about the little PHP script kiddie code but proper maintainable software that can grow. I hired some really good PHP developers, we wrote our own framework and couldn't be happier, the dev, test, deploy lifecycle is just much faster for some reason. Oh yes, and we have Traits, just saying. 😂😂. Anyway, use what you are productive in, and that's it, the whole language debate is a waste of time. Keep on coding. 🤘🤘😎😎
VERY RIGHT: "use what you are productive in, and that's it, the whole language debate is a waste of time"
My degree actually focused on C# and .NET which was a big plus for me since I really like the eco system and language. And I find it easier to learn other languages with C# being my first programming language. :)
My first language was C++ (terrible choice, never do that). It was all fun until it wasn't (pointer arithmetics, templates, memory leaks..). But now i can learn new language or whatever technology in like 1-2 weeks of hard work (except rust, yikes).
@@eevyl1337 Agree with you in the case of Rust.
I started with C. Today when people ask me what language I am writing code in, I say "The language due jour". Currently that would be Lua, JavaScript, Python, GDscript, C++, and Bash, sprinkled with a little CSS and HTML.
WGU SWE C# Track?
How can you know that it’s easier to learn other languages with c# as your first language? Have you tried forgetting it and having another first language, and then learning new languages? Not sure how one would accurately measure that
I disagree with the notion that c# is not a starter language. To me it really is almost the ideal starter language. It hides the "headache" of pointers and memory management while still teaching that variables require system resources, computation can require threading etc. A mental benchmark which may be helpful is to take any language and imagine how difficult it would be to go from language X to C/C++, if it seems an insurmountable task then language X (or rather its tool chain) is probably hiding vast swathes of things from the programmer.
C# wasn't my first language but I don't think it would be a bad first language to learn
You can make almost anything with it in some way and it also teaches you tons of things most other language omit, like if you learn Python as your first language you're probably not gonna learn OOP-first programming, or class modifiers, extension methods, etc. You spend a bit more time learning but it pays off in the long-term
@@s1nistr433 python is also more seemless for beginners but still allows you to practice modern techniques such as vectorization with ease.
@@s1nistr433I learned C# first and let me tell you, it is a beautiful language to start out with. Visual Studio handles the compliling very easily, and you can just start messing around in a console application so easily since you can just start writing stuff in program.cs. It was so easy to use and learn with, and it is my favorite language.
I feel like something really simple like python is good for absolute beginners just to learn what a variable even is, how logic flows through a program etc. But I think C# is great as a first language to learn actual programming.
While I think someone can find it straightforward to get going with C# and avoid the headaches of other languages, I think C# has too much "magic" behind the scenes that can lead new developers to develop incorrect understandings of how things are working, as well as some poor habits that would be barriers to them using other languages. I think this is why Java is still popular in CS education. It avoids the memory management stuff, but has a lot less "magic" to it such that by default you have a better overall picture of what a system is doing.
In my experience .NET and C# really shine when your codebase grows larger and you have a lot of reused code. Scripting languages are designed to make stuff work faster but when the codebase grows it becomes a mess faster too.
Java has that same reputation, as have most OOP compiled languages. But it is not a given: I have seen a major Java development become a convoluted horror, in part because of badly controlled multi threaded designs.
Not to mention that startups are in a hurry, and long term is a luxury they cannot afford: they have no revenue yet and most fail. So Python is more attractive.
@@pascalmartin1891 of course it's not a given, you still need to make sound and reasonable architecutral decisions, no programming language can make the decisions for you.
But dynamic languages are guaranteed to become a nightmare at scale even if you make the right choices.
@@NihongoWakannainightmare to debug dynamically typed languages
Yes, please make a video about the bad things about OOP and how to avoid them.
Also here are my opinion on the topic: (which are mentioned in the vid)
1. Legacy education: most if not all universities and colleges choose C and C++ as their low-level language of choice and Java as their high-level of choice. C and C++ are obvious. Java in the other hand you ask, why not C#? There is a lot to say here from the ecosystem of each at the time, who owns the techs, etc.
2. Open-source: open-source 100% changed people's perspective about .NET, even when not enough to make a decision to switch over, people don't look at it the same way (whether dislike, hate, disagreement, etc.) This open-source mentality of Microsoft not only empowered .NET from a C# or developer perspective, but also from IT perspective in PowerShell. But change takes a LONG time.
3. Website vs web application: I think this js extremely important, there are significantly way ore websites than web applications, even in our modern day when the term "web applications" covers a variety of web resources. And what do you use for websites? JavaScript. Even in the front-end side of things, web applications are built on JS at the core, which brings ALL the JS related tech that C# wasn't part of until Razor which is very very recent considering the time tech needs to age before it makes a market shift.
I may not be on point in some if my argument, but oh well, feel feee enlighten me!
The biggest problem with OOP is:
Encapsulation is mostly a lie in most projects. Tons of side effects everywhere... And doing it right, is not simple.
This is the biggest, in my view. If you take real attention to encapsulation, you inevitably notice when you are abusing inheritance, etc.
"how to avoid them" - step 1: learn OOP instead of using and OO language without OO
@@JasonKaler Makes sense. I still think OOP is "generally" good. Having a structural approach to thing is almost is always good (unless really messed principles were used) which I don't think OOP falls under that.
in my uni, they taught us both java and C# , though java was 3rd year and C# was 4th and ever since I got into C# i cant stomach java for some reason.
Enlightenment incoming: "choosing both low and high level languages from microsoft" aint entirely accurate to my knowledge.
Neither C nor C++ are made by Microsoft - while they do make one compiler (MSVC), there is a public standard implemented by several independent compilers.
Because C# holds image of enterprise language like Java. That's all
My perception is that the majority of places using C# also use the whole Microsoft ecosystem, which means Windows. Sure, you can work on other platforms, but momentum matters.
Not entirely true. .NET Core works well enough on Linux so it's not much of a lift to build a web app, containerize it and send it to a Linux based Kubernetes.
I think that was true maybe 5-10 years ago. There has been a shift away from Microsoft, even by people who have been in the MS stack their entire lives, myself included. It was self-inflicted by Microsoft. They were practically begging their developers to shift away from their own OS, and thusly, all their enterprise stuff targeting their OS.
I am a C# developer and I constantly deploy my .Net core app on Linux machines without any problem. Many outsiders don't know the existence of Net Core and have no idea how powerful and versatile it is which is a shame, Dot Net Core deserves more recognition!
Our entire stack is .Net with a SPA TS framework, and we develop on Windows, Mac, and deploy to containers on Linux.
Having Linux support is nice, but lack of mobile support is tough. That's the reason most game engines still uses the old .NET runtime and Mono everywhere else, which is fine most of the time, but has some gaps in the implementation which are very annoying (like in networking). Maybe mobile support will be added eventually, but until then I wouldn't call C# truly cross platform.
Many years ago I created my first application (for a previous employer) on a .NET Core backend with a Vue.js front-end. First time using C# and it made me a better programmer after years of PHP and Javascript. That employer was on a Microsoft ecosystem and I had concerns considering that I work on macOS, but other than a few missing features in Visual Studio (compared to the Windows version) I had no issues. I learned a lot! I'm now using Rust and have learned even more. I love them both and came to seriously dislike JS and PHP, although I hear PHP has come a long way since that time, and Vue/Nuxt 3 are very beautiful frameworks to work with.
C# is brilliant. People friendly, mature language and environment, good fits for low and high level abstraction code (e.g. pointers, async/await), don't limit you no matter what programing paradigm you use, new features appear fester then you grow (important for newcomers :))
@@D9ID9Igood thing we have variety of ways and options on what we can use, don't we?
@@D9ID9I What's the problem with sugar?
I started writing JavaScript for a company back around 1998. It has come a long way but still...I cringe thinking about writing large applications in it.
As with all things in tech...OOP has some good concepts that can save you time and headache. Functional programming also has some good concepts that can save you time and headache. Every discipline or methodology or tool has something it offers. I've never understood how people choose just one and stick to it religiously and apply it in EVERY situation they can. Use each tool (or at least the concepts wrapped by the tool) as it fits best in whatever situation you are in (while always considering the requirements of course). I've never been a purist in anything tech; everything has trade-offs.
A large part of why startups dislike c# is that startups tend to have a certain scrappy kind of engineering culture and approach to development that the average C# developer would be pretty significantly at odds with.
In short, most c# devs would not fit into the culture of most startups imo
As an enterprise developer, I had a very bizzare experience with a startup indeed. We had a very, very fundamental disagreement between "think first" and "code first" approaches.
I'd agree with that. This "new age" project management crap annoys me to no end. How about let's just write some code and make it happen?
could anybody elaborate a bit more what's the point here.please?
They hate C# until they understand that they miss the broadest base of developers.
All those other tools exist in 1,000 different variants, change is the normal and if the freak that started the project leaves the company they will have a hard time to find a replacement
Who hates C#? Only a really stupid person or a newbie would really hate a tool like that. If companies prefer other languages like JavaScript that doesn't mean they hate it. They surely should take decisions according to much more meaningful reasons than lizard-brain primitive emotions, no? I don't use a shovel daily, does that mean I hate it?
OMG, that’s so true!!
I love C# and it's my main go to language for anything I create. But I do think it's not popular enough amoung younger developers simply because C# does not get the exposure at Uni or in 'learn to be a developer' courses, as they all seem to use JavaScript/Python etc. It's only when the education sector/private education companies pick up C# as their language of choice will we see it being adopted more. Also C# seems to be more for backend/service work than JavaScript so new learners tend to gravitate towards building a frontend, then they realise they also need a backend and become a bit stuck.
I’ve worked exclusively in companies that use dotnet and other Microsoft technologies/services until my last employer which mostly use nodejs.
This is all anecdotal but what c-digs said reflect my own experience. My Coworkers who are not from a dotnet background still believe that it’s closed source and that it can’t run on multiple OS. I’ve heard the “OOP is bad but Functional is good” dogma from them and it felt like they learned that from school and not from experience. Bad code is bad and neither OOP nor FP promote bad code. It’s the dev who decided to create 4 level of inheritance when it wasn’t necessary who is making the bad code. It didn’t even click with me that I was already writing most of my dotnet code in functional patterns until my coworkers and I started having friendly arguments about OOP vs FP. Despite that they framed their criticism toward dotnet, with my experience with both dotnet and nodejs I realized that the criticism they had was more about coding patterns that they assumed dotnet wasn’t supporting.
Mutation is bad? Yeah it is! Just avoid writing a mutation in c#, pass them as an arguments. This something I’ve always preferred to do for years.
Without the intention to be generalizing, this is just my personal experience with a lot of frontend JS developers I’ve come across in my daily work and that is that they ain’t trained as a software engineer and that shows in how they program and go about solving problems. It’s a whole different world they live in and find concepts of OOP difficult to get their heads around and find the concepts of c# difficult to understand and are therefor reluctant to start with c#, even though we expect our developers to be t-shaped in backend and frontend tech. Again, just my personal experience.
Js (or any dynamically typed language really) should never be used as the first language, its that simple
Javascript is *way* more like the progenitor of OOP, Smalltalk, than C# is. Besides, people with a real CS education like things like Haskell, OCaml or Scheme/Lisp. JS developers are cluetards, yes, but not because they don't know about GoF patterns - it's not that they can't get their heads around OOP, it's that they can't get their heads around why OOP onanists continue to argue over the right pattern to use and the inheritance hierarchy while they've already written the code for MVP and are iterating quickly towards release.
@@paulie-g its not about OOP at all. Its not even about patterns per se - it just allows and sometimes reinforces bad behaviors that lead to janky unmaintainable code. And I mainly mean types there. TS is simply superior is every damn single aspect.
@@Nworthholf I know very few people who still write vanilla JS. TS is super clunky, but JS is so broken that there's no choice really. OP was claiming JS/TS devs are cluetards, which happens to be true, but not for the reason OP claims. If OP's competence bar is modern pseudo-OOP (which is insane), JS as a prototype-based language is much closer to genuine historical OOP (as in Smalltalk) than C#.
It's vice versa. I started with C#, got good at it and I hated the half learned JS. Then I learned it well, and became pragmatic user of the language: I work with simple things that work, no forced OOP, no forced FP. People coming from those philosophies do so many unnecessary steps to avoid theoretical problems.
In northern Europe, this is driven by the universities where Microsoft technologies are often viewed with repulsion and are often considered as an evil cyber imperialistic death star organization.
These younglings often promote application construction with tools like Node, "which is so simple to put everything together", not understanding that change management and the ability to maintain applications is one of the most critical aspects of system engineering.
And in the end, poorly written systems will cost more than properly coded ones ever will. I've only been in the business for 25 years, but as far as I can tell, Java and MS applications are the ones who survive. I am not saying all other languages are bad, but the project culture among the developers utilizing them is often questionable from a maintainability perspective.
"In northern Europe, this is driven by the universities where Microsoft technologies are often viewed with repulsion and are often considered as an evil cyber imperialistic death star organization." why am i not surprised...
Im not a youngster, doing this over 30 years and I also think MS is evil imperialistic company :) Well, not only MS... try Google, Apple,... In my opinion that atmosphere in schools is good. Its a shame we have primary schools here that dont even mention alternatives to Office365, Teams, Windows. Kids don't know what opensource is. Im so happy yhat eventually they figure it out themselves oitside of school.Or they end up completely dependant on thos bigtech companies and i.e. spend 3 years developing their forst game only to get racked by Unity :)
I use C# for work and it's a joy to use if you can drop framework and just use the latest version. I'm considering it for the backend for an app I'm going to build.
Other parts:
1. Strong typing is more demanding for new joiners - not like Javascript or Python
2. Memory management concepts people need to know - GC, class and struct differences etc.
3. Steeper tech learning curve to get in: .NET/.NET Standard/.NET Core/ .NET Framework/ C#. No junior will answer what is the difference
4. Language complexity: C# got many features in recent years. It might be frustrating to new joiners to keep checking what are the differences (lets say between `!= null` `!(x is null)` `is not null` `!= default` and why you cannot do `is not default`)
Agree, personally I think c# is getting too wide and deep in its feature base, some (not all) of the new features are very good though with the compiler implementing the leg work for them via IL. They could still have been done explicitly with the language itself five years ago, though I suppose the implementation speed would be lower.
Who worries about memory management in C# ?
@@alanbourke4069You still have to worry about memory management, garbage collector isn't a magic thing that automatically knows what to remove.
@@alanbourke4069 Recruiters at least
@@alanbourke4069interviewers apparently and the other party when have to optimize poorly written things.
It needs mentioning, that "Popular" doesn't mean preferred or better.
A lot of these surveys ask if you 'use' these languages. Sure, you can use some of these, doesn't mean you enjoy it.
I used to not like C# because of MS indeed. During my masters degree I had to use it; working with the XNA game development kit, Mono and later Unity it changed my mind. Now it is my preferred language and I use it a lot in e.g. Godot. For my day job I still use a lot of Java.
I really don't like JavaScript, but that's more because I hate web development, and to a lesser degree dynamically typed languages.
ROFL - best quote of the day... "There are F# developers and ALL 5 of them LOVE F# ..."
One reason startups tend to choose javascript, especially for frontend development, is the choice of free open source UI libraries. Blazor component libraries are mostly paid. Microsoft needs to attract the open-source community.
Fluent blazor components.
But schools refuse to teach it as fundamentals with c#.
It's kinda sad
Real front end devs create their own components. Backend devs use ui libs! Bootstrap normally suffices!
MudBlazor free and opensource
the most mistake .. front end don't care what behind.. it just api . I can used whatever javascript library without using those react , angular , vue thingy. Currenly i create more code jquery reather then react. react slow..
9:27 "All five of them..." 😂
.NET is not popular in startups, because the learning curve is higher. People that startups attract are smart but do not have a lot of time or do not see any incentive to learn a more powerful language, that can express more complex business rules. Startups do not have complex domains. App has to be reliable and scale, but it does not deal with a lot of business complexity.
Writing ERP for managing insurance claims for a multinational organization is quite different than an app that submits posts and comments, and shows it in a thread.
I started with C# and thought it was very easy to start with. Our school was teaching Matlab, which I hated, and later I did some classes in python - which was easy to learn, but harder to scale. Ultimately, I stick with C# because it scales much, much better for large programs, and is way faster than most options out there.
Maybe you didn't get the point of Matlab, which is doing computational programming accesible for scientists and engineers. C# is not for calculations of convolutions and FFTs, or design of digital filters.
@@JonitoFischer C# can do everything that matlab does. Matlab is dead, if you want to do scientific programming you just use python nowaydays.
It's the same argument as the company with recent submarine implosion. Startups tend to hire young dynamic diverse teams without much experience, because it's so much cheaper than experienced workforce. Until the project implodes under all the incompetence.
I would argue less on "diverse" more the young part, they don't know how much their labour is worth and they are less likely to challenge a superior.
A seasoned engineer would have told the sub guy off.
In fact one did and they fired him.
@@BeepBoop2221No hate on diversity but that's what the sumbarine company said in an interview before the disaster if I remember right. Just quoting ;)
@@the-niker it's more they know they will keep quiet to avoid getting fired.
@@BeepBoop2221Heheh, well in their case, they were so obsessed with young and diverse for publicity's sake that they ignored older engineers who would have saved them.
I think one thing is that most universities teach java.
not anymore
@@azmisudrajat You mean there is progress? thats awesome!
Great video, Nick! Speaking of "why do people don't start programming with C#" - one of the reasons is that the (good) beginner courses tend to be paywalled. Yes, there are resources here and there but they lack the in-depth explanations for concepts. Most of them are "just do that and that and bam! you have an app". I would love to see a good course just like Bob Tabor did in the past.
Also because everything is paywalled at Microsoft so there is lack of ppl that make free tutorials, so when you would like to use some free stuff like DB there are high chance that all help you will get will be about MS DB and only about it.
The C# debugger is still closed source, and you can write C# only on VS and VSC. Language ecosystem (LSP, debugger, profiler and other tools) should be available for porting in every editor (neovim for example). It could be like Google's Go, but Microsoft wants to make money from C# by charging for the ecosystem (and other "smart" vendor-locking-to-azure ways), which is ok for them, and ok for us to not prefer as well
I think Microsoft just got a bad name from forced updates and trying to force most users to be online to use Windows and supporting Digital ID, so after that, people don't like them.
WHAT are you talking about?? You're still stuck in 2004 .NET 1.1!
C# is rarely the best language.
C# is always a good language.
It’s best to have as little to learn tech-wise (use those brain cells to learn the domain instead) so pick one language (C#) so you can get on with it.
C# is fast (but not the fastest like rust). C# is concise (but not the most concise like Ruby). Imperfection is better than perfection (perfect in one area)
Rewrote the whole control plane from C to .NET, running on ARM Linux. Came out very stable and well structured.
Since I started working on .NET Core 6 APIs, I find it very comfortable to work with other technologies too. I can create APIs and work with React on the front end, have any DB at the backend, and with NET and C# I can implement very flexible and structured and strong server side which can scale up easily.
Not sure why would I choose any other platform for APIs.
@@D9ID9I its a lie. node js is 1 thread shit. how it can scale more proper than multithreading async c# model? omg node js comunity ful of stupid idi0ts
1. Many still think .NET is tied to Windows.
2. Startup founders (often not techies but investors) think working with javascript on both FE and BE will make them iterate faster requiring ONLY fullstack devs.
3. Startup highly depends on the current hype. Years ago, it was Node. Nowadays it's Python. Tomorrow maybe .NET ?
During my years of software engineering as a freelancer working for some startups, I often conclude that most of them had NO IDEA about the choice they've made at MVP stage and they engage me years after to solve those problems that could have easily been avoided if they had think about the future just a couple of minutes... The truth is hard to admit but no one cares about software engineering principles. No one cares about .NET, Node or Java. They just want to get money as fast as possible.
They require you to spend hours sharpening your skills for their tech interviews but when you're engaged, you'll code dummies endpoint like any developer on earth. No magic.
1. It is, while it can technically run on linux, linux useres are clearly second if not third class citizens
@@Lena-yt3ylNot technically. It runs, period. Stop it with this misinformation.
Also, the reason why linux users feel like second-class citizens is because they themselves aren't trying to improve the tooling. Someone mentioned MAUI, but both C# and .NET are opensource. What's stopping anyone from creating a true cross-platform alternative to MAUI? A Vulkan to Microsoft's DirectX, so to speak? Nothing.
@@marioprawirosudiro7301 the power of open-source is impressive, but i cant "just write maui" there are things like avalonia, but as long as microsoft bundles things like timers with WPF and some file operations with WinForms it's very wired what breaks and requires odd workarounds.
And there is already a LOT of work put in like the creation of the Mono-Runtime, from scratch.
I think that OOP is not bad. What is costly and hard to mantain is ORM, and anything related to Object Data Classes. Dictionaries and JSON are most likely the way data is transfered accross the Internet (unless it is XML). Why convert the data into something else? Why not just handle the data in the format it is in. ORM is strongly incoraged in Java, and .NET took on the same attitude along with hyping up LINQ, so that people will use SQL Server for data storage. Great for marketing, not great for perfomance, maintinance, price, and Project Life Cycle. Why not just store data in NoSQL, like MongoDB or Elastic Search? So OOP for organization of code. JSON and Dictionaries for all data handling. Seems too simple to be a solution, but it is incredibily effective. So as far as .NET and C#, are concerned, wrangling the the platform to fit with Docker, NGNIX, and Linux seems like lot of unnecessary work.
"Why not just store data in NoSQL, like MongoDB"
Simple answer to that: corporates usually have a team responsible for data management. The problem with NoSQL and Mongo is that they have no enforcement of referential integrity, meaning that the data simply cannot be relied upon. You can't run a business like that.
I worked with a client who persisted in telling me that the last 20+ years I had spent with RDBMS's was a waste of time, out of date and that Mongo was the only way to go. He had a massive Mongo database - classic example of someone brainwashed into using no sql tools as a 'pseudo rdbms' and using a tool because it was free, not because it was the right tool. I offered to check the reliability of his data by importing it into SQL server. Everything went fine until I started installing foreign key constraints. It was reminiscent of the early days of SQL server before developers understood and started using foreign keys. His data was an absolute mess, but no, it was SQL Server's fault, not the fact that his data had broken links and orphaned data everywhere because his tool didn't enforce integrity. And he was running a business on that. We parted ways fairly quickly because I wasn't prepared to assist him in driving his business into failure.
I think the biggest thing is that Java is almost exclusively taught at all university cs programs. I went to an engineering focused university and it was c++ for the majority if not all classes. I don't think I've ever heard of someone's curriculum teaching c# at school.
My university was mostly C# and I hear similar stories from most of my colleagues. My locations I’ve works are Scotland and the north of England. It might be an artefact of UK academia or even down to the region though.
@@TheSpacecraftX US here.
My university taught Java, and I used my spare time to learn C#. I don’t understand why anyone would use Java, but perhaps this is just me showing the same ignorance people show towards C# and .NET?
@@ghaf222tbh java is still big in the database side, oracle still makes servers that exclusively run java apps and their db faster then the standard x86cpu.
@@ghaf222 Java is still more used than C# (more job security, more online help, more books), has more tooling choices, the JVM is very mature and has many languages that run on it (Clojure, Scala, Kotlin), it's more linux friendly (but C# is not far behind) and many multi-billion dollar companies rely on it's ecosystem and have a financial interest in it and it's success.
Also, it's not much worse than C# for many applications. Many people and companies will not bother to switch to get an incremental improvement.
Fsharpers (all 5 of them) are REALLY pissed right now.
In my experience, startups are indeed often made up of younger people, and they are generally freshly following the latest trend. As someone a bit older who has been in the idealogical fresh tech phase of my life already, I think it's great for personal projects. But I'd beware not using an established platform for a business project because the trends change, and you can find yourself struggling to recruit people for yesterday's favourite tech stack. But for the established platforms, there are always resources available (for the right price).
There's a lot of truth in this!
As someone said there is a lot of misinformation about Microsoft. A lot of things changed at this company. I am not a professional programmer but Visual Studio and C# are my preferences by far.
What I notice a lot in companies that use C# is that they seem stuck in very old C# versions. They are using .Net Framework 4.x or .Net Core 3.x.
Even if they are using ".Net" they are rarely on the latest LTS version.
This has nothing to do with startups directly but maybe that disturbs the mindset of startups as most companies end up stuck in an old version.
This is typically true when an application has been around for 10+ years, most startups aren't worried about tomorrow when they have to face the problems of today.
My company's main application still runs on 4.7.2, with no real plans on migrating to a newer version.
That's universal, not just a C# issue. Corporations tend to stick to whatever platform they first built apps in. There is a common (but false) belief that not upgrading your framework is the safest path.
@@SvdSinner It has more to do with the fact that converting a large application is far more difficult than a simple app. We have thousands of files and thousands of customers... each asking for a new feature, management is far more concerned with customer churn than the latest framework.
Although, this is short sighted... eventually something bad will happen which is usually followed by a customer exodus.
@michaelm106 Agreed. Our main application is also still running 4.7.2 as well, but luckily, we have started writing its replacement in .NET 7. As I always remind management, NOT updating is just as risky as updating.
For large apps this migrating to a new runtime can be a pain, but it's worth the effort to get access to the new features. It also opens up a hell of a lot of new packages, which can be very useful.
I think another very big problem is:
The advantages of C# are mostly about productivity IMO(and sadly it is not very well known), which is something kind of subjective and may not be very tangible and critical to business.
For example,
JS/TS and Go are well suited to serverless applications (at least before the AOT ecosystem is mature).
Python is pretty much the only choice when you play with AI.
Java has a larger supply for developers.
Those are something that drive companies towards those languages.
While .NET and C# are free and open source the ecosystem still favors Windows if you are not writing a web application.
Also, Microsoft has prioritized Windows and Visual Studio when it comes to features.
It has happened that a new C# .NET feature would come to Windows first and to other platforms later.
It's things like these that keep devs away. Why take the risk of Microsoft doing a rug pull?
Wouldn't be the first time they do that, would it?
Honestly, I would move to Python if that wouldn't make me less employable due to my work history being dominated by Azure and C# .NET.
None of this is true, nor has been true, for years. I'm mystified by the statement "features come to windows first and to other platforms later". No, just no.
And who in their right mind would use Visual Studio to do dotnet development nowadays? VSCode is a vastly better ecosystem to work in than that legacy crap.
You prefer they have one platform ready, and hold it back until it ready for all platforms, to give you a better feeling ? There is no other positive outcome, than your feeling.
I'm in an enterprise and have recently moved teams after 10+ years on a .net only team. The team I work with now are more python (which I love ) and java/javascript. We have a few open defects in our ecosystem that could be resolved with proven examples in .net, but it's really difficult to get these guys to actually consider it. It's a work in progress to demo the power of C# to these guys, but I'm hoping to open their eyes a bit more to what it can do.
Honestly? I think a lot of it has to do with where startups come from these days. It is becoming less and less required to have a degree as bootcamp programs become more and more prevalent. One of my friends who has a degree in French/English teaching recently went through a bootcamp and immediately got hired at a startup who were scouting specifically these kinds of programs. And I think the reason is because they need to get going fast. College doesn't do a great job at teaching you *what you need to know* for the current job market, although you will have a strong background and it won't be as difficult to learn. But bootcamps are focused on the current trends like ReactJS, NextJS, etc. I think maybe if Blazor were more prevalent, we could see .NET becoming more viable for bootcamps. But it's not, and that's not likely to change.
An interview questions will be kinda triky in order to determine how experienced you are. With C# there will be a lot more tricky questions. Closure, try/catch in combination with tasks, garbage collector with allocations in stack/heap, dispose, finalize and using, especially with streams, different types of pipelines for a web. LINQ has been introduced in C# as far as I know, so all the fuss around it will be there too. I think these are hard to comprehend in comparison to analog situations in other languages.
A point to add with this in regards to JS being a better full-stack is also rather mute. You can take one of the strongest JS frontend platform React and put it side by side with Blazor, I would state that blazor wins on multiple fronts, the only one where I see react (since we're talking about this in my example) wins is in the amount of 3'rd party components. However I don't think that the quantity of 3'rd party libraries is that strong of a metric in this comparison.
I've been working with JS, Java, C# and python through my career and few things has made me as happy as Blazor has.
If Blazor didn't exist I think that I would have left the dotnet ecosystem. Because since WPF there is no reliable and bug free framework from Microsoft for building desktop app even in Windows!
Javascript as a full stack language, please sent all those developers back to school.
how many multi-instance back-end applications are written in "full-stack" JavaScript?
It’s works both ways, no C# developer wants to get a job doing JavaScript anyway!
As you've noted, 9 out of every 10 startups will fail. A big factor in their failure is the technology stack the product is built upon. Loosely typed languages result in a greater number of software defects, and the untyped variables make it extremely difficult to identify the source of errors. Hiring hacks who cannot code in a strongly typed language is a huge problem for startups.
@@gppsoftware True, but it is a bigger problem for startups for their financial viability hinges on the quality of the software written.
I don't understand why people don't like C# either. To me, it's fastest to develop in this stack,. it's the fastest running language in the top 5. It can code just almost anything, with Maui now days. It also has a huge community and Microsoft themselves to support it. You don't even need visual studio. You can learn the cli and just create everything using VS code. The language will run on anything. And if you want to lock it in a single runtime, just containerize it and you'll be good to go for ages. I don't get it. When a company scale with traffic, they will come to know that they should have gotten C# in the first place. Especially when startup development time is soooo low.
Maui doesn't do Linux.
@@Christobanistan , you can't win it all.
I recently did a project with C# and MAUI. My impression was industrial-strength tools to solve industrial-scale problems. I know people do big things with JavaScript but it doesn’t feel the same, somehow. Flavour-of-the-month is a big thing. So is the what you already know factor: not everybody wants to invest in the learning curve for new technology.
I recently tried to start MAUI hybrid app last week. Wasn't even able to scaffold it. Missing project template, errors during compilation of empty project. Fuck this shit. I switched to electronjs, works like a charm. Have no regrets about it.
@@GdeVseSvobodnyeNiki MAUI can be tricky to set up, especially if you're using VS Code instead of Visual Studio. Once you have it set up it works fine.
Good luck with MAUI, noobs
MAUI the new silverlight
Imo, JS has to be outright banned as the language for beginners. It is a very dangerous (conceptually) tool that makes many people develop a very specific programming approach that effectively prevents them from being able to use any other language and in general becoming engineers rather than coders.
9:58, Actually, C# is 3rd programming language. JS and Python are script languages. That's maybe the reason why newcomers prefer them over programming languages - they do not compile thus do not blame you if your script has syntax errors.
I absolutely loathe Microsoft: their history (they're a convicted monopolist), their present (e.g. forcing everyone to have a microsoft account), and their mostly diabolical business practices (e.g. all the SaaS nonsense).
But even I have to admit that C# is excellent, and that 95% of .NET's built-in library is too.
Microsoft shot themselves in the foot early on when it used to only work on Windows. While it does work on other platforms as well now, it's not well implemented in non-microsoft environments, and much of the third party innovation and development is still very windows ecosystem centric.
not many people at looking at this obvious point
Everyone hates when Microsoft used to have hardware limited language but nobody ever cares that Apple has the same...
I've noticed that people don't seem aware that NET is cross platform. You're not tied to Windows. You can develop and run NET outside of Windows.
maybe the reasons why 9 of 10 startup fails sits on some misconceptions like embrace bies, trend gurus, early adopters technology and mindset of a product fast to build and not scalable for future.
When I tell people I develop in C# I do get the feeling that they assume .NET Framework, and possibly don’t realise that .NET is fully cross platform. I always have to drop that into the conversation to check they know that.
Because those days they teach garbage like python or node.js and get the quality they paid for.
Of course it all depends, but startups tends to evolve quickly and changes are sometime radical, so using the same language for FE and BE gives you that flexibility. For example, in 2023 I'd rather go for node with tRPC for a startup knowing that my API will change a lot over time, rather than dealing with constant DTO changing or using some code generation which might be fragile. Yes, you can always use C# on frontend and you have similar benefits, but I would argue that toolset and community is not as rich there as it is in JS/TS frontend community.
Being a c# and javascript dev for 30 years OK sorry 22 years. C# is is still cool. You wait till November when they will show case semantic kernel the greatest move for c# devs in the last 20 years. Love your videos over the last few years.
Thanks for the heads up - will check it out
"Theres F# developers, and all five of them love it." Chapsas, Nick
I worked for a couple near startups that were both .NET / C# based. Worked great. We had some other companies we'd bought that had applications written in other languages. They seemed to spend more time working around little things and tooling issues, while we just kept plugging along with C#, pushing out code every 2 weeks. Dev hours are expensive, a set of tools that lets you focus on the important issues and not get ratholed on the minutia is worth more to me than a whole truckload of new and sexy.
C# was my starter language and is and always be my favorite. I understand the hate because i felt the same when i first started working with it. But that's because of Microsoft reputation and i hope eventually people realize how good dotnet ecosystem is
Video about OOP negative points from your personal perspective would be really nice to watch!
I think they also had a huge problem with naming and in the last couple of years not being able to make up their minds on how configurations work really confused a lot of people.
I used C# many years ago so I was a little shocked at how much has changed when I started using it again last year.
For a large company the changes (that Microsoft needs to do to generate upgrade sales) are a negative once you have a large, long-lived codebase. Most developers cannot see the strategic, management aspect that causes things like the very stable incremental Java roadmap to be selected over Microsoft technologies.
Microsoft has an history of changing the language and the libraries for no apparent reason. This creates more work for developers and companies in order to keep up with the language. Companies do not want to carry these costs
Most of the changes I've observed have been in the native app space, with Xamarin, WPF, Modern Apps, MAUI, etc. In the web space things have been pretty stable and you're not forced to use the new stuff. I can still make web requests the old style that existed back in .NET 2 days. Microsoft has been been WAY bigger on backwards compatibility than other companies.
There are exceptions of course. .NET Core still doesn't have a full port of SOAP support, which you may encounter with older FinTech companies.
Google however really broke backwards compatibility between major releases in Angular at some point. And then there are a smattering of OpenSource libraries in the Java world I've encountered that have no qualms dropping functions, making breaking changes, or just dropping whole features with the expectation that you'll just upgrade and adjust.
I migrated multiple codebases with SDK versions ranging from .NET Framework 4.0 to 4.5 to what was then .NET Core 3.1 and the experience went rather seamlessly. In my short experience as a professionnal dev, I think that it's actually pretty stable.
My boss asked me to do the same for a PHP codebase from version 5.6 to 8.something. We cancelled this almost immediatly lol
That's no 1 reason
Then they certainly don't want to use JS. LOL
Going for a different language than a highly used one because "developers are cheaper" is a really dumb criteria to use.
Yes, I’d love to see a video on what you hate about OOP
1. Once you are in the Microsoft ecosystem, is seems every nail has to be hit with a hammer made by Microsoft. 2. It can be difficult to integrate to other things. (example Postgres is great but SQL server is so much easier to integrate and on and on) 3. When new open source ideas come out you have to wait for Microsoft to implement them. 4. The license fees start to slowly creep up. 5. You are dependent on Microsoft support. I am in a large shop and we use everything, but those windows server costs add up.
This is 100% my reservation. You lose flexibility when you couple yourself to Microsoft. For most orgs it’s a good trade, but if you want to stay flexible and keep vendor costs as low as possible Microsoft can cause problems.
You're not a C# dev, are you?
1. This is a huge strength. It means the way things are written are highly consistent and you don't need to go elsewhere for basic functionality. You're also not constantly chasing fads!
2. Postgres is extremely easy to migrate to in .Net. I've done it and it's very similar to SQL Server with a great EF driver.
3. Nooo, just use a third party nuget or lib that uses them. Not only are .NET/C# FOSS, the FOSS ecosystem pretty much dominates as much as other languages.
4. There are no license fees, .C# and .Net are open source and totally free. VS costs money after 1M$ revenue, but VS Code is a FOSS alternative, and Ryder is cheap (and better), too.
5. No you're not, it's FOSS, and see #3.
Because until now there was no NET 8,the fastest release yet. 🎉
C# is a startup lang. I'm doing my latest startup and LOVE using C#, and yes, .NET MAUI too.
My main belly ache is on Linux since MonoDevelop archived. Only using JS for websites
Maui doesn't work on Linux.
To me, The problem is the poll question from SO. It asks what languages do you use/know. Everyone has to know some js so therefore it is "popular". The question should be... What is the language you write in for front end and language for backend?
TS for both: Angular in the frontend and Nest.js in the backend
@@flanderstruck3751 and that is perfect for your vote of 1. But for java, python, php, and c# (many more) they use their language on the backend and some sort of javascript on the front end. So they "know" javascript. That doesnt translate to "I use Ng and Nest" like it is being interpreted.
The point about multi threading makes literally zero sense.
"I work single threaded in whatever language but I fear C# because I don't understand how multithreading works in C#". Excuse you, if you don't understand C# multithreading then just use it single threaded. Have you at least tried using your favorite language multithreaded for comparison? Who works only single threaded and calls himself a developer anyway?
In my experience which is by all means very little, every app should have at least one method that executes on another thread to avoid freezing.
When I was in college, Pascal and C were the primary languages. Java came much later, and then how it's largely Python and JavaScript. There's also a lot of polarizing hate for Microsoft, which is ridiculous. As for OOP, most schools do a terrible job of teaching it. There are different markets, industries, etc. that will use different tools for their purposes.
"There is F# developers and all five of them love F#..." 😂😂😂
Licensing everyone and every server and every MS SQL instance, etc. isn't cheap.
The main reason is the startups will get them self vendor locked in m$ world, while m$ is not very trustworthy for keeping their word. For instance the agreed ntfs filesystem will be under specification so linux can have stable drivers, but then out of the blue they changed the specification for a new version and hid something important that breaks compatibility. Also, they love monopolization of things and have a lot of antitrust lawsuits. So, who want to trust them knowing their long history from the beginning.
My guess: speed of development (actually writing code) is the main driving factor (+ new and shiny bias)
Startups mostly have time scarcity and highly volatile feature sets, making strongly typed languages less preferable as the additional rigor and planning require more time to code. I would even say that document databases are likely more preferred over relational for the same reason, it's easier to change.
Node, python etc. also have more stuff readily available (code, tutorials, influencers, bootcamps, employee pool etc.) that help save time.
Raw "performance" is rarely an issue for a startup, even in scale up phase. The main focus is on feature development and even if it pains me to say it out loud, not even bugs change this.
At the end of the day, fearures allow startups to survive the initial death valley and once you have money, you have resources to solve problems. Unfortunately this doesn't translate well to engineering as the cost of change goes up the more you grow your unstable foundations, but that's startup life 😂🤷🏻♂️
p.s. I'm assuming you are VC funded as they have more time pressure compared to bootstrapped.
Please make a video about the things in OOP that you hate!! Maybe also discuss the other methodologies of development that you agree with more. Pretty please!!!
There is nothing to hate. It's just little more complex, and harder to learn.
It's like starting your book with a piece of paper, but if you got 10 sheets of paper, maybe you introduce a folder.
But still, people don't like to hear "if you want to write a book, you need a folder".
I learned a LOT of different things (VB, C, C++, Java, C# [Framework, Core, [Xamarin, MAUI]], HTML, CSS, JS/Typescript, PHP, Python, Lua, ABAP, Haskell, Assembly, Bash, Batch, SQL, Kotlin, Objective-C and even creating an own compiler, thats everything I learned for AT LEAST months that came in mind)
Thats a lot, but the only thing that kept me going is .NET/C# and my current (and first) company is primarily focused on C#
It is up to yourself which programming/script language is suited best for yourself, but be open to any language some other likes and uses. Everything has their own use case to shine and thrive.
Acceptance.
Why do Java developers need glasses? Because they can't C#
❤
that made me laugh, fuc# you
I understand that it's an older language and framework, but writing something like Go is sooo much verbose and I don't feel nearly as productive with it. I've worked in both .NET and Go professionally for years and feel like I can achieve my end goals much quicker with .NET. Maybe it's familiarity, but I don't think .NET gets nearly enough credit for having some solid and reliable libraries. I would love to see a comparison between Java and .NET.
I would also add the point that Microsoft has the annoying habit of launching technologies and then dropping them.
I miss Silverlight.
I will miss VS for Mac.
That’s not C#
Ever heard of Google? 😂
Like new, faddish JS frameworks every week?
I also think that the strong connection between C# and Visual Studio in part keeps the unfounded hate for C#; many people just don't like Visual Studio and in connection thought C# was an exclusive language for it, like Objective-C or Swift for XCode. Microsoft understood that and came up with VS Code to just have a way to promote C# as a language on it's own and separate it from the IDE; same as Apple that open-sourced Swift in order to have that same separation between language and coding toolkit. When people discover tha they don't need VS to code in C# at all, that releases tension imho
I agree, although Visual Studio is the best IDE to work with, awesome tool.
@@JoseAlvarez-dl3hm it’s a convoluted mess just to install it and setting it up to then be productive until it starts to fail. I wouldn’t call it “the best IDE ever” to be honest
Do not mix free with open source. Some day Microsoft can say C# is not free anymore. Like Oracle did with Java.
I work at a Czech company with $1 billion revenue, and we're using C# for BE and React for FE across the entire company.
Recently had a chat about this. To put it frankly C# seems intimidating to green developers, they prefer Python or JS(TS). A bunch of the people I talked to are university students and they do study C# but don't prefer it. The consensus was that finding a solution to a problem is never easy in C#, new things are introduced all the time and while it makes my work easy it pushes startup teams away. It's really important to understand that these teams usually include self-taught, junior or entirely inexperienced developers. Having 10 ways to sort a collection and 5 ways to make an API is not a plus for them.
Another bit I missed is that most of them stated that a lot of resources around C# and F# focus too much on dos and don'ts rather than solutions.
True, given that C# has a long history and everything since first version still works.
But same goes for JS too, however unlike C# most of the study material focuses on latest stuff.
The 10 ways to sort a collection and five ways to setup an api is a plus for them, they've got the basics down. What they lack is the experience, like what you once never had.
Honestly speaking I won't say JS or Ptrhon are good entry languages. My first language (of my personal choice before uni) was C++. In uni they required us to learn C, then C++ and Python, then C# (.NET Framework, WinForms, .NET Core, ASP .NET Core), Java (Java-FX, Android), PHP, Assembly (A51), then more advanced C# or Java (I've chosen C#) and C for microcontrollers.
Surprisingly on my uni I've never met JavaScript as required language. I've graduated from faculty of Electrical Engineering (but still in Computer Science) thought.
Currently I use mostly C#, Bash and Python.
A thing which I really experience a lot: people stick to the stuff they learned in university and apparently .NET is evil corpo stuff (MS hate) that only runs on windows. 😜
The one point I disagree with is the second point. language should never be a barrier for you as a full stack developer, and there is a LOT of reasons not to have java script as a back end given its not compiled and can hide bugs and major issues until run time.
Been using C# for a decade and I love it.