-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
.NET appeals to net-new developers, students, and new technologists #5465
Comments
uhm my experience is specifically that csharp docs are actually a bit messy. Tutorials just cover the very beginning (helloworld), then go into more specific "how to do X" things, but if you want to learn the actual language then the concept/reference docs are a bit confusing. like topics duplicated on concepts and programming guide, or sometimes cross linked, or some things shown only in concepts, and there is no clear order to follow when you are trying to do more concept based learning. Also I believe the situation when you are learning something (for example constructors) and the example of constructors is written so that it uses some features of c# you are not necessarily supposed to be learning at the moment (like generics or something). I mean I believe I saw examples of that, but I don't currently have any specific one at hand, just describing the mechanism. |
.Net 5 allowing boilerplate around |
I love that this is a central priority for the team. It's important. Kudos to you all on prioritizing it. |
Tagging @BillWagner for the docs feedback |
@webczat That's valid criticism. We're working on updating the organization so that its more focused on learning paths. One area I'm struggling with in organizing the content is when (or if) to focus on different application types. There's only so many console apps people want to write, but once you branch to web, desktop, games, or other areas, we start to lose some of the audience. What are your thoughts here? Once we get beyond those first tutorials, how focused are you on the type of application you're building? Does it matter if it's different than your goals? |
Not fully certain I understand the question, especially that I am myself, very strongly, a concept/reference/apidoc based learner. Like tutorials just to get started (in libraries/technologies), in case of a programming language however, I may even skip them entirely, and I have done so in case of c# especially that I've learned it before. Hmm I believe when I've learned it before tutorials like helloworld didn't even exist. But I wouldn't need them at the point... |
@BillWagner You're right that building console apps probably will not sustain engagement. If I were on the docs team writing documentation for newbies like me, I'd focus on things where the reward is visceral and appealing, like web apps and games. In my thinking web apps appeal to new technologists because of the fast feedback loop and the fact that all that's needed to show work in progress is a link. This helps such individuals build a portfolio and sustain their interest. Another reason web apps are cool is because there is fairly reasonable path to pivot from them to mobile apps (whether native or just PWA's or basic responsive sites on mobile). One can even envision this path somehow stretching into Desktop apps via a .NET equivalent of Electron if that exists. As for games, I know many younger students (and even some college students) love games and so a branch that goes down that path would appeal to that demographic as well. I've learned quite a bit from docs so it really nice that there's an effort to make them even better. I think some areas that are often frustrating with docs are samples that don't quite work on first try, docs targeted at beginners that assume more background knowledge than is appropriate for the type of doc in question, and the paucity of docs that go into how to test that your code works beyond just manual testing. I think if there is going to be a beginner focused docs section, it would be awesome to also have a pool of true beginners or recent beginners (like me, haha) to test out those docs and point out where the "not so obvious" parts that were glossed over are. Slightly related is pruning the backlog of open issues in the docs. Sometimes, I encounter an error, and I want to make a PR to fix it but there's either already PR's that fix that error that have been languishing or the sheer number of open issues makes me doubt my PR will ever see the light of day and so I sadly just move on. |
How many people are okay with writing "magic" code? I mean, when beginners would immediately dig into things like doing web apps, then there will be a situation where you begin learning c#, but at the beginning you will be writing tons of code you cannot understand. And it could not be explained to you because you would need to know about classes, attributes etc to understand what you are doing or rather, why. In console apps the only things to learn are write to console/possibly read from console, and the rest is the code you consciously write, you do not have that for any other type of app. Some people are okay with that, but not sure how the learning efford compares. |
I think there is an important balance to be struck to ensure that the docs are welcoming to all kinds of beginners. I believe the docs can cater to individuals who want to know all the nitty gritty intricacies first, before they start building and creating, and those who initially want to know just enough to be able to build out their idea. I don't see anything wrong with having "magic code" in some places if it helps the goal of keeping learners engaged. Ensuring that learners first learn everything before they begin working on real world apps is a really good way to lose a huge swath of learners. If one were to learn everything about a car before driving it, one might never drive it because the subject area is quite large. There is a real value in helping someone learn enough to be 'dangerous' and then they want to keep learning and exploring. Many will eventually double back to learn the "magic code" they might have overlooked on the way. A good compromise where "magic code" is used would be to have something that says, "This code does X. You don't need to understand it all right now. If you don't fully understand it, don't worry about it just yet. But if you must know what it does, here's a link to [insert link to other doc that explains it]". That way, those who want to understand everything can, and those who want to forge ahead can. And when they are ready, they can return and follow the link to fill out their understanding of the "magic code". |
my only concern is the number of this magic code. if there is more magic code than ours etc. but the idea proposed here could likely work, not sure 👍 |
Speaking mostly from the Xamarin Forms space, it users should never be confronted by an unbuildable new project. If they install an IDE or upgrade it, then the New Project templates within that IDE should always work. If there is additional installation work to be done, eg: updates to Android libraries, it should be clearly communicated as a secondary installation step. It is a disruptive and disheartening experience for a very experienced developer, to not be able to build something trivial as a smoke test. For a new user, it is catastrophic. |
The experience for beginners isn't that bad in my opinion, especially with top level statements and the online editors embedded on the tutorial pages, but the jump from learning what loops and classes are to bigger goals could use some work, For people coming from different coding languages I personally miss a short and compact version of the docs (unless I'm missing something). As an example I'll point to the current kotlin docs, which are in my opinion easier to navigate and quickly look up a specific syntax/feature. While the descriptive dotnet documentation is probably giving better insight, most of the time I'm just looking for a specific snippet without being interested in the nitty-gritty details. As a stepping stone after the initial learning experience I think a guided project would help set them on their way. Guiding a new developer by expanding selectively on a dedicated medium sized tutorial project (for example a simple console chat client. basics, async, networking, I/O, logging, etc.) would probably reduce the early apprehension of people who try to transition to bigger projects and help feel them less lost. |
I think the big entry point to beginners is python language, maybe improve ironpython3 could help a lot this, i'm talking about c# to beginners The other big community is the kaggle community, maybe improving the c# jupyter notebook integration (or including it at kaggle List and dict compression is something we should implement too, I don't think aio is something we should care a lot, but the biggest python ecosystem is: flask + fastapi + logging + sklearn + matplotlib + selenium + beautiful soup + redis/mongo/mysql/mariadb/postgresql, that's the biggest points I see in python community About javascript/node.js i think asp.net is ok we can improve but it's ok |
Feature Request: I have been watching/waiting few yrs. patiently, however some recent changes have forced me to request -- Microsoft revisit this for their developer community, keeping in mind some of the pricing out there compares to the salaries of 10 to 15 developers in Bangladesh, Vietnam, India, Philippines etc. Its a Core & Basic need, yet very complex and critical for the developer, with security risks. There's a void in .NET native drop-in solution, unlike the Java, PHP Stacks etc, where there are many native drop in Identity Administration & Management Frameworks options that are leveraged across all their platforms seamlessly by developers, for e.g. the J2EE Pluggable Identity Management Framework or JSR 168 or JSR 286 or JSR-351 or JSR-375. Why is this important? because using Java or PHP, it has allowed easy, clear, core and basic functionalities in those native stacks. As a result if you look JSR 168 or JSR 286 or JSR-351 or JSR-375 Multi-tenants, Group to roles, or to claims vice versa is so easy vs. NET , mobile devices, portals, they all work seamlessly and cohesively with security fixes managed by either IBM or SalesForce or Oracle or Red Hat etc. This is enables developer to be productive right out of the gate. In .Net there is void/very limited support, always requiring a combination of 3rd parties as a barrier to entry & adoption of ASP app. This is non-trivial for developers and security vulnerability that requires the attention of Microsoft Experts. Example: We have private information sharing site non OSS for the community almost free (pay if you want), and when we started with web forms, then Simple Membership, the Identity, Identity 2 ASP MVC we had implement much of it on top of these from scratch, when we moved to .NET Core it was another effort. Besides the development there was a lot of confusion on the internal concepts and how they now meant new things. Roles, Claims, Federation, SAML then SAML 2.0 and then Open ID 2. Describe the solution you'd like
Its high time MS address this core gate-keeping feature!! |
Bulk closing .NET 6 epics and user stories. If you think this issue was closed in error, please reopen the issue and update it accordingly. |
Summary
Regardless of whether a net-new customer is an existing developer or a student, the fact is that they are missing the context of the last 15+ years of .NET developers. They expect a clean, streamlined experience, clear docs, tidy folders, and quick inner- and outer-loops.
Epics
Epics under this Theme:
The text was updated successfully, but these errors were encountered: