17 ms·
.NET for Beginners (2020)
- syspec 6y agoI agree with all of the above. I love C# as a language having used it in Unity in the past. I wanted to try to a server backend with it, but I was lost as to which framework to use (ASP.net / .NET Core / .Net 5) so I ended up choosing neither. Which is a shame, because I really really like the language
- wvenable 6y agoThe framework you choose doesn't even matter that much. You're unlikely to even a notice a difference and changing from one to another is often as easily as selecting it from a drop-down (or editing a file) and recompiling. Yes, you can get into situations where something you're doing needs one or the other but it's very rare.
- syspec 6y agoI'm sure you're right, but as a beginner in a new programming language there is a real fear of "choosing the wrong thing" You know that it will not matter that much, because you're familiar enough with all three. A beginner doesn't have that information. Think about it like this: Is it better for beginners to have such a 'non-choice'? Or is it better for them to be presented 1 maybe 2 options and say pick from these 2 these are the differences?
- wvenable 6y agoIf you start a project in the IDE (or even the command line) there is already a default selected for you. Whatever that default is, would be fine. I don't think there's a single .NET tutorial out there that has you explicitly select the framework. The problem is you're informed enough to ask the question! If you had no idea about the different frameworks you wouldn't have a problem.
- Hawxy 6y ago> I wanted to try to a server backend with it, but I was lost as to which framework to use (ASP.net / .NET Core / .Net 5) so I ended up choosing neither. The new C# tutorials have solved a lot of this issue just by completely skipping over the legacy parts of .NET (.NET Framework & ASP.NET) and using the CLI to create a new project. You install .NET 5 (for context, it's just a newer version of .NET Core with the naming realigned), and then write `dotnet new webapi` which will create a new ASP.NET Core API project.
- syspec 6y agoI appreciate the reply, and I will try that. However this sentence made me inadvertently laugh, because it captures every bit of confusion I had. > You install .NET 5 (for context, it's just a newer version of .NET Core with the naming realigned), and then write `dotnet new webapi` which will create a new ASP.NET Core API project.
- Hawxy 6y ago> However this sentence made me inadvertently laugh, because it captures every bit of confusion I had Haha, for further context, .NET 5 is the SDK + runtime. ASP.NET Core is the default Web framework that includes a ton of out of the box functionality. I'd highly recommend taking a read of https://docs.microsoft.com/en-us/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-5.0 https://docs.microsoft.com/en-us/aspnet/core/introduction-to..., which links to the relevant tutorials for your scenario.
- syspec 5y agoThat's clears up a lot actually! Thx
- tester34 6y agoJust install newest .NET 5 and type `dotnet new mvc` or `dotnet new webapi`
- gameswithgo 6y agoThis goes on critiquing how C# has a high barrier to entry because you have to learn [insert long list of popular C# frameworks]. But no, you don't have to learn any of those things, you can just start learning C#. Then: "Just think about the upcoming release of .NET 5 and how it will invalidate most of the lessons taught just a few months ago .... the wider .NET community has failed in making .NET a more beginner friendly language" .NET isn't a language! It is, I will agree, absurd that Microsoft way back when decided to give the totality of the infrastructure around their language a name at all, let alone one as confusing as .NET, but that is all it is. A name applied to sometimes the compiler/runtime/core libraries or all of the above. Unfortunately this has led to people wandering into forums asking "how can I learn C# and .NET?" nobody ever wanders into a forum asking "How can I learn C++ and llvm"?
- Rochus 6y ago> How can I learn C++ and llvm" Rather "C++ and Qt" or "C++ and Boost".
- powersnail 6y ago"C++ and Qt" would be more analogous to "C# and WPF". .Net to C# is perhaps more like JVM to Java.
- devmunchies 6y agono. CLR would be the JVM equivalent. .net would be like the OpenJDK
- gameswithgo 6y agodon't try to make solid analogies for nebulous ill defined terms like .NET!
- t-writescode 6y agoI know you're making a joke, but the article says: > In particular questions around the differences between .NET, .NET Core, Mono, Xamarin, and the relation between C#, F#, VB.NET and what a target framework or a runtime is add very little to almost no benefit to one's initial learning experience. So, I assume they primarily mean the particular set of libraries being used
- DylanDmitri 6y agoLike other design-by committee projects C# has considerable sprawl. As a result, it's overwhelming and confusing for brand new programmers to start writing hobby projects in. But C# is beginner friendly in that it's easy for inexperienced programmers to contribute business value to existing codebases. The everything-in-one ecosystem (IDE + autocomplete + database + deployment + source control + package management) removes many sharp edges that experienced programmers are used to working around and take for granted in other languages. I've known smart high school kids with limited programming experience become productive C# developers in weeks, and that doesn't happen the same for e.g. Java.
- tracker1 6y agoI will agree and disagree... a lot of things around the edges really do change between versions of .Net .. while C# is pretty progressive, the .Net framework does have some rough edges if you're either inexperienced, or have tended to hold on to a version for too long and now need to jump ahead a version or two. The evolution of .Net Core (now just .Net 5) has been interesting and at times very painful.
- nobodyandproud 6y agoThe evolution of .Net standard, core, and framework has been mind boggling and difficult. I’ve lost track, and I don’t even know how to keep tabs on this any more. Too much information. I envy the greenfield developers who can start with .Net Core or .Net 5.
- caspper69 6y agoFor those that care, Framework is the old original .NET for Windows; Core is the new multiplatform .NET; Standard was an, ahem, standard, for writing code that would work under both Framework and Core. Since the release of .NET 5 "unifies" Framework & Core (for some value of n), there is no longer a need for Framework, Core, nor a unifying Standard.
- Stevvo 6y ago
- radicalriddler 6y agoI didn't read the whole article, just scanned it. But I'm surprised he chose Golang as a low-cognition entry barrier language. As a developer on Windows (relevant since we're talking about .NET), setting up Go was a pain in the ass. Making sure that my PATH variables were set up correctly and all that jazz, and then I'd run into issue after issue with packages and paths. I don't know what it is about golang, but man, it's hard unless you just start up a WSL and install it on there.
- sethammons 6y agohaving never worked with Go on Windows, was that recently? With modules, you can just pick a new directory of your choice, `go mod init` and you are ready to start work. As for packages and paths, it is just URLs.
- kovac 6y agoSame here. Package management was non existent at the time, not sure how it is now. There are pointers without pointer arithmetic, I really don't know why they are there. If you already know programming you will be fine with go, but if it's the first language someone learns I think they'll go catatonic when they are exposed to real pointers, dealing with shared memory, package management, generics, etc. because its going to be hard unlearning ways used in go. On the plus side go is small and very performanent.
- jhgb 6y ago> There are pointers without pointer arithmetic, I really don't know why they are there. Because you need some way to distinguish between having a sequence of bytes in the middle of another sequence of bytes and having the former sequence of bytes somewhere else, at least in languages that allows both for any data type. For example, Java doesn't suffer from this since everything is pointers implicitly. And C# doesn't either because every type belongs to one of two kinds, the first kind corresponding to the former of the two cases above and the second kind corresponding to the latter. But Go doesn't have this luxury (intentionally, for the same reason as C does it).
- 6y ago
- jliving207 6y agoThe professionals in this field (programmers) are something of a different breed. I can't tell you how many time I've come across something I've been needing so badly to learn and it's put right in front of my nose explained in detail by people i look up to, just here to say thanks for the in depth article. great material.
- t-writescode 6y agoThe complaint around all the different concurrent iterations of .NET rings true to me. It used to be that you only needed "current version of .net" and then you just ran forward with all of the standard libaries and Visual Studio handled all of that for you and it was wonderful. Now you need to work with .NET Core and download a bunch of disjoint nuget packages to make everything work; and, then you download a specific nuget package and it requires updating all your other nuget packages, on to forever. I was tasked with transitioning some of a former company's .net 4.something code to .net core, to see if we could do it, and the transition was a shock to the system, for sure. In the past, I could choose when to engage with Nuget and which packages to work with. When I went to .net core, it seemed like anything complex that I wanted to do required yet another package - in my case, anything related to running a webserver. Working with .net definitely became more complicated post .net core. edit: for clarity and enjoying the downvotes. I'm a seasoned .net developer and used it from 2009 until 2018-2019 for desktop applications and webservices. I've used nuget packages plenty for a variety of things, including Akka.net.
- tracker1 6y agoI think a lot of the newer options are much easier... the greater flexibility of detaching most libraries from the base runtime has been useful for advancing the platform as a whole. That said, I do feel the pain, the interface changes for binding web applications are very different, and if you relied on "Enterprise" libraries harder still. I'd rather do things the "new" way, but it's more the differences that make it harder. Harder still, is when trying to google how to do X with .Net Core 3 or similar... Now that it's .Net 5, at least that should make some stuff easier, until 6 comes out at the end of the year, but that's more evolutionary. Getting search results that no longer apply is a pain. It's far less the C# language as it is the platform libraries themselves and the breaking evolution through .Net Core. I think TFA has a point that renaming .Net to something else instead of .Net Core or .Net 5 may have been a good idea. Of course, now it's Azure * instead of a couple decades ago it was * .Net (anyone remember Office .Net, Windows .Net etc in early dev/beta marketing?)
- MarkSweep 6y agoIt got a lot better in .NET Core three when they stopped using Nuget packages for the core framework works. Now building and updating apps based on just the core frameworks no longer installs and restores Nuget packages. This makes it faster, simpler, and takes less space on disk. You probably still will have more Nuget packages in your ASP.NET Core project than a classic .NET Framework project would. Details about the new system: https://github.com/dotnet/designs/blob/main/accepted/2019/targeting-packs-and-runtime-packs.md https://github.com/dotnet/designs/blob/main/accepted/2019/ta...
- okareaman 6y agoIf you want to get anything done with C you learn the stdlib. With python you need to learn the package system. With C# you have to learn .NET. I don't see that it is that much more complicated. Python also has problems with shared code versioning. Modern PHP still suffers from carrying old crufty PHP code along
- ramenmeal 6y agoThe issue he's stating is deciding which ".net"
- gameswithgo 6y agodoesnt matter they are 99% the same, in the same way java versions coming out dont require you to relearn java or the java core libs
- okareaman 6y agoC# was never intended to run everywhere. It was a Java clone for Windows. Now msft wants to make it run everywhere. There's going to be some confusion in the transition.
- tracker1 6y agoYou couldn't be more mistaken... C# and .Net (CLR) were absolutely written/meant to be portable. Mono was pretty well adapted from early on at a core level, though it didn't support all the options. If it weren't for MS patent stance and some FUD early on, it might have gained more adoption in the Linux space. One of the reasons I chose to learn C# a couple decades ago over Java was the fact that interop was so much cleaner than JNI.
- deleted 6y ago[deleted]
- okareaman 6y ago
- keithnz 6y agoI'd like to see some data around the central claim. Is C# really that hard for beginners? I watch a lot of beginners on twitch (for several years now) start with C# and almost zero idea about programming. They all seem do pretty well, whether they are learning unity, winforms, web dev. They don't even stop and wonder any of the issues discussed in the article, they simply make the project type they want in visual studio and start learning the guts of programming. The issues discussed seem more of a problem with evolving your software over time, especially the framework -> core/.net 5+ transition. I'm not sure that really impacts beginners other than a few caught in the storm who needed to upgrade their software to a different version (given most would just stick to whatever they started with). The evolution of the C# language itself has caused fractures in recommendations on how you program in C# but then stabilize pretty quick. We've been through it quite a few times in the C# world, and if you are learning in a transition period, yeah, some tutorials are going to say one thing, and others another thing, but most beginners seem pretty ok with the idea that there is an "old" way and a "new" way. But like I said, I'd like to see actual data on the beginner learning experience rather than anecdotal accounts as there's always going to be people who find it hard and those who find it easy.
- wvenable 6y agoI don't think C# is hard for beginners. I monitor the Git repository of our Infrastructure Team and they develop small tools in C#.NET really easily. None of them would claim to be programmers or have any formal training as such. The tools they make are simple but sophisticated in what they accomplish and interact with. The article makes a good point but 90% of is irrelevant to a beginner. Open Visual Studio, pick your project type, and start coding.
- setr 6y agoThe biggest issue I had picking up C# over the last year (and still have) is figuring out the MS ecosystem. There’s three different frameworks for everything, all of which are either incomplete or to be deprecated. Windows-only desktop app is the latest to confound me, let alone cross platform. The .NET variants confused the hell out of me for the longest time until I just sat on Wikipedia and read the whole damn history, because every variant and version seems to be in play simultaneously
- paweladamczuk 6y agoWhen I imagine starting to learn C# right now, I think I would need to: - install the newest Visual Studio with default config - create a new console app project - start writing code in the template's main function Granted, I have to know whether I want to create the console app in .Net Core 3.1 or .Net 5 or whatever, but I imagine I can find the answer to that pretty quickly and move on. Usually the answer will be "the newest version you have installed". Any language feature I want to play with is just one automatic import tip away, and most of the features I would explore as a total novice don't even need that. The complexity of various Nuget packages, ASP.Net versions, older versions of .Net only arrives once you need to uplift older projects, maintain libraries to be used across different framework versions etc. Those are tasks for a more experienced developer, for a good reason, and I believe this is true for any technology stack. EDIT: formatting
- Stevvo 6y agoThose assumptions on what you would need to get started are actually outdated. C#/.NET are updated often. No need for Visual Studio or even Windows; you can get started faster with VSCode + .NET Core. And you don't even need a main function anymore; you can just start writing code at the top level in a blank file without any class.
- subw00f 6y agoW
- manigandham 6y ago.NET definitely has a messy past but someone arriving today probably has the easiest time ever getting started because so much has changed to become a single streamlined product. All these opinions are weighed down by the very history that beginners don't have. The expansive standard library, web/desktop/mobile/gaming output, Visual Studio (Code) IDEs, fantastic in-depth guides and documentation [1], dev evangelists like Scott Hanselman [2], and constant stream of content from MS team and community [3] makes it not only easy to get started but also continue until you're an expert. I find it strange to complain about a 12 year old stackoverflow answer when other environments like nodejs are a nightmare once you get past the toy project stage. Anyone can write a simple tutorial for a to-do app, but it's how well you can grow that to a real complex system that determines how well-designed and productive an environment really is. And I've yet to find anything better. 1. https://dotnet.microsoft.com/ https://dotnet.microsoft.com/ 2. https://www.hanselman.com/ https://www.hanselman.com/ 3. https://dotnet.microsoft.com/platform/community https://dotnet.microsoft.com/platform/community
- imgabe 6y agoI'm currently trying to write a windows app and coming from web development (Python/Django and React) it is bewildering. Part of the problem is with web development, complicated as it is, the tutorials at least get you to a complete, working example. The windows tutorials seem to be very piecemeal where you start with a mostly complete app and fill in a couple things, but never get the whole picture. And like in your first link, click on "Desktop". Ok, I want to make a desktop app. Now there are four options WPF, WinForms, UWP and Xamarin. Ok...Why are there four options? What are the differences? Are one or more of them about to be deprecated? What do I need to consider in order to choose one over the others? I could go on. The windows developer website did point to some helpful C# tutorials and the language is actually pretty nice to work with, but figuring out how to do basic things like -- how do I store state in the application, has been very confusing.
- mikewarot 6y agoI have the opposite problem. On a PC, you can always store data, the graphics display exactly how you want, the feedback is instant, and you always know the state of things. You don't ever get disconnected from the user, nor have more than one at a time. My favorite platform is Lazarus/Free Pascal. The documentation is a bit sketchy, but the IDE and the applications it outputs seem solid. I'd prefer Delphi, but they priced themselves out of my world 20 years ago.
- redleggedfrog 6y agoI found the article fairly accurate, being a .NET developer now for upwards of 15 years, but perhaps the title is misleading. I would have titled it, "Beginning .NET for Professionals." Most of the concerns outlined in the article are really only relevant to professionals, or serious hobbyists. If you're truly a beginner most of those points are not concerns, at least until much later. If you want to learn .NET, download Visual Studio Community Edition, fire up a console application, and tinker. Starting with C# is probably a good idea. I did this with my sons, before there was a Community Edition, when they were about 11 and 8 - truly beginners. They had little problem getting going, writing small little programs to find primes or the lowest common denominator for a number. We didn't even cover OOP really, and the standard library only minimally. So it can be done, even today after .NET has exploded. It's just hard for us pros who now have to confront that enormity.
- akra 6y agoAnecdotally when I've had to show developers how to start with .NET Core the problem isn't the SDK (install dot.net at the website) or which template to use (i.e. just tell them to pick that one) its C#. This is especially true if they come from a JS, Python or Go background. I say this as someone who does doesn't mind C# and thinks its pretty capable once the learning curve has passed. At one stage I had a JS developer just try the F# template instead and the difference was stark. Explained to them Async F# - Promise JS, Module F# - Module JS, showed them a unit test example and they were writing production code in two weeks to a month. It made me realise that over the years there is a lot of knowledge I just take for granted that many beginners just don't have especially now when there are much friendlier languages for beginners. Things like dependency injection, how it resolves based on types, and which framework to use and why, mocking framework choice (vs simple stub functions), can only mock interfaces and why, the class structure and how you should group functions into appropriate classes, abstract classes vs interface default methods, LINQ vs OO style coding, nullability annotations all over the place, OO design patterns, the need for Resharper or equivalent unless you can write C# syntax from scratch, the list goes on and on. With most C# apps there is a lot of knowledge assumed and baked in which can be daunting for a newcomer. C# is not alone here I understand that - the same thing can be said for other languages too. But it has made it harder than it needs to be especially when it is actually a good platform but C# scares many developers away especially as it adds more and more features on top. Litmus test for a language to me: Does it need an IDE and tooling to be productive in? The more tooling it needs the more complex IMO the underlying language is in syntax and complexity. Complicated refactoring tools? If so its probably too complex for a beginner especially now that the language space has quite a bit of competition. As an example watching a developer do this in a previous role in F# you just create a new file and cut and paste the functions around; in C# the dev's I've had usually resort to Resharper and a full blown IDE to extract variables/methods, do code generation, and basic refactorings unless they want a lot of manual work.
- kaba0 6y agoI think your comparison is not fair. Maybe your vision of beginner C# is just much much higher than on F#? Like, dependency injection, mocking and the like are not at all beginner concepts, and are not made particularly easier with more modern languages.
- kumarvvr 6y ago.NET carries a lot of baggage, but .NET Core is absolutely awesome. I would really encourage everyone to give it a try. I have personally used Blazor and its really good. Not to mention building WebAPIs with ASP.NET Core and EntityFrameworkCore. Most of your dev needs will be met by .NET Core.
- roebk 6y agoIt's not called .NET Core any longer. Another naming switcheroo that people have to get familiar with.
- logbiscuitswave 6y agoOh wow did this title ever bury the lede, but what a great article. As a long time C# programmer very familiar with the .NET stack I definitely share and sympathize with many of the OP’s frustrations. I’ve been working in this world since .NET Framework 1.0 betas and I can’t keep track of all the developments. It’s exhausting. Aside from hobby projects I’ve basically not given much thought to .NET Core because it’s such a moving target - and it’s a shame. In so many ways it’s far superior to the moribund .NET Framework - especially in terms of speed and memory use. But there’s also many places in Core where there’s parity lacking with Framework, and migrating code can be a confusing and confounding experience. This is a place where things needed to be easy and they aren’t - and it doesn’t help that it’s so hard to figure out the difference between .NET Framework/Core/Standard/5 with UWP, WinRT, etc further confusing things. Back in 2004 Joel Spolsky wrote the great article “How Microsoft Lost the API War” (https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost-the-api-war/ https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost...) and now some 17 years later it feels like little has changed. Some of the technology stacks may be different now but the frustrations are largely the same. It’s still the “MSDN Magazine camp” (or whatever today’s named equivalent would be) versus the “Raymond Chen camp”.
- fergie 6y agoRead the whole article nodding my head at all the valid criticisms of .NET, but towards the end I began to wonder: when are the arguments in favour of .NET coming? And finally, at the very end, this paragraph appeared: " .NET is a great technology for experienced developers who grew up with the platform as it matured, but I'm not sure if I'd still enjoy learning it today as much as I did in 2008. Whilst the complexity allows me to charge great fees to clients for writing software in .NET, I'd probably not recommend it to a friend who wants to learn how to code or I wouldn't use it for building my own startup from the grounds up. " Is it really the case that the only argument for using .NET is that you can earn a lot of money by working as a .NET consultant? From my own experience I always assumed that it was, but I would love to learn about some actual benefits that .NET has over competing platforms.
- interblag 6y agoI can share some insight here. I got into .NET (Core) by virtue of joining a company that used it, after previously focusing mostly on Python and JavaScript (with a self-taught background in C going back to childhood prior to that). Initially I had the same tribalism that a lot of people seem to have towards .NET, for whatever reason. Eventually though, my conclusions: - .NET Core is pretty reasonable. Platform agnostic, easy to work with, decent command-line tooling, and doesn't force you into an IDE vertical unless you want to. - C# can be a nice language for certain types of business applications. I think it has a lot of the good modeling properties that once made Java the de-facto language for enterprise development, without some of the verbosity and other drawbacks (though maybe Java has changed too since I last looked at it :) ). It plays very nicely with Domain Driven Design and event sourcing, both of which are patterns that I find valudable on large-scale systems for managing business transactions. Overall TLDR: I probably wouldn't use .NET if I started a company tomorrow, but when I start coding non-trivially sized things in Python I sometimes miss elements of what .NET/C# brings (particularly interfaces, which obviously also exist in other languages).
- fergie 6y ago- Platform agnostic - Decent command-line tooling - Doesn't force you into an IDE vertical unless you want to I'm not saying that the points above aren't true exactly, but surely they are less true for .NET than they are for just about any other mainstream development stack?
- ChicagoDave 6y agoThere’s no doubt this a very truthful and in-depth review of .NET, but it leans a bit too negative for my beliefs. I think if you just start with .NET Core and learn basic console programming, the rest will come easily enough.
- goto11 6y agoMicrosoft is just so bad at naming things. ".net framework" means versions of .net before version 5. Version 5 is of course also .net and it is a framework, but apparently it is not ".net framework", since this term refers to the versions up to 4.x. Take "Enterprise Framework" (EF) and "EF Core". These are two independent ORM frameworks. From the names you would probably expect either that "EF Core" was the core of EF or that EF Core was a version of EF which ran on ".Net Core" (the previous name for .net 5). Neither is true - the frameworks are independent and both run on both .net 4.x and .net core/5. Apparently "core" just means "new incompatible version". And how about ".net standard"? .Net Standard 2.0 was the standard API which was available with both .net 4.x and .net core/5. But from .net Standard 2.1, it was not compatible with .net framework anymore, which meant it wasn't standard anymore. The actual technologies like C#, the BCL and EF Core are great, don't get me wrong, but the naming is so confusing.
- joshschreuder 6y agoThe EF Core thing might make a little more sense with some context. It originally started out only compatible with .NET Core (which was the successor to .NET Framework) Eventually Microsoft came to the conclusion that doing .NET Framework to .NET Core migration in tandem with an EF6 to EF Core migration would be a huge undertaking for legacy projects. So as of EF Core 2.1 they added support for .NET Framework 4.7.2+ so people could migrate that first, then move to .NET Core. Therefore you end up with the weirdness that it was .NET Core only, then eventually it wasn’t, despite being called EF Core. As for Standard.. can’t help but agree, it was a bit of a mess unless you really understood what it meant for API compatibility. But with .NET 5.0, Standard is pretty much gone for new code. See https://devblogs.microsoft.com/dotnet/the-future-of-net-standard/ https://devblogs.microsoft.com/dotnet/the-future-of-net-stan.... So I think Microsoft is slowly learning and fixing up some mistakes made in the “Core” era
- goto11 6y agoI guess the whole .net core mess made sense in the beginning, it just got out of hand. As I understand it, core was conceived as an experimental alternative runtime which made it possible to run asp.net on non-windows platforms. It was not initially planned to be the replacement for full .net framework, so it didn't need to be fully backwards-compatible with the regular framework, which saved them some effort in the beginning. When the strategy changed to make core the next version of .net, the incompatibilites was so entrenched it was too late to solve, so we ended up with this enormous mess.
- xupybd 6y agoI'm getting into F# and I couldn't agree more. I'm still a little lost on how asp.net runs in a Linux container.
- lbriner 6y agoDefinitely a frustration for those of us having done .Net for 20 years. Even the naming frustrates me. Every time they seem to create a new "one name to rule them all", it only lasts a short while until a new one comes along net framework, .net core, .net standard .net 5 and apparently now .net 6. As the OP said, the overarching problem is probably trying to be all things to all people and pretending that all of those things are .Net. It also produces a sadly common attitude now of "we won't fix that in dotnet core 3, upgrade to .net 5" as-if that is even a possibility for many existing apps. One idea that comes from way back in the day was having an IDE that you could set to beginner, intermediate and advanced so that when you start out, you only see a subset of things. You can then get more confident in the basics before seeing more options and windows. Another idea I liked was removing older features so that you don't keep getting bigger and bigger.
- andi999 6y agoYes. Naming is the worst. Oh, I have dotnet how do I make a webpage. Nah, you need also asp dot net. Or asp core .net, but this wont run on .net anymore but only on core .net..... headache...
- young_unixer 6y agoMicrosoft seem to have trouble naming things. Xbox One X, Xbox One S, Xbox series X, Xbox series S. And also: Is Outlook the same as Office365? Is Outlook the new Live? Did Hotmail turn into Live? Am I the only confused by all of this?
- alexon1234 6y agoI can not agree more with this post. After being a C# developer for 5 years, I can not think of a worst language to learn that C#. The ecosystem is dead just check the latest startups from YC, how many are using C#? How many startups nowadays are using C#? Currently there are better options than C# or .NET. You want simplicity, you have Go. You can create an API server so simple and easy to understand. You want a full framework, you have Rails. Rails give you everything so easy to be productive and start shipping. Just run gem install device and you have authentification. You need to storage files, images, etc., just a simple tag on your model and really to go.
- oblio 6y ago> After being a C# developer for 5 years, I can not think of a worse language to learn that C#. The ecosystem is dead just check the latest startups from YC, how many are using C#? How many startups nowadays are using C#? You're late to the party, and your comment is a bit funny. C# was <<never>> a startup language :-) It was always an enterprise language, meant to fight Java. If anything, C# is moving towards startups with the introduction of .NET Core and of the cross platform IDEs (VS for MacOS, VS Code + plugins, Rider).
- kaba0 6y agoHow is Go easy? It is a much less expressive language than Java or C# and is more verbose. It’s C with GC and good concurrency. I never understood the hype around it.
- andix 6y agoComplicated stuff will always be complicated. The .NET ecosystem is huge, there are a lot of different frameworks associated to any kind of problem. Xamarin for mobile; EF 6, EF Core, ADO.NET for databases, and so on. But as a beginner you shouldn't try to understand it all, right from the beginning. Just start somewehre. It's like saying: "Biking is too complicated, there are so many different kind of bikes, who should know what to buy!" Just get the first best bike / framework (e.g. console app, or asp.net core) somebody recommends you and go with that until you know better. After a while you will understand the difference between a mountain bike and a downhill bike, or between EF 6 and EF Core.
- mbeattie 6y agoI recently tried to take a look at dotnet core since I heard it can compile and run on linux. Every tutorial I looked at for building a webapp started with "download visual studio and click these buttons..." which would result in a "mostly complete" program that it would go on to fill in some variables to. Literally every other language tutorial starts with a simple empty file and fills in functions with descriptions of what's going on and builds up understanding. When I want to learn how to make a webapp in .NET, I want to learn to make a webapp in .NET/C#, not how to install and click buttons in Visual Studio.
- plasma 6y agoCheck out https://dotnet.microsoft.com/learn/aspnet/hello-world-tutorial/intro https://dotnet.microsoft.com/learn/aspnet/hello-world-tutori... which is a hello world without VS.