dotnet-foundation / election

Election content has moved to the main site at dotnet-foundation/website
MIT License
31 stars 23 forks source link

Broadening .NET's developer-base #91

Open SteveDesmond-ca opened 5 years ago

SteveDesmond-ca commented 5 years ago

Question

It really feels to me like while .NET is getting better with every release, it's losing developers to other languages and platforms, or at the very least not gaining new ones. The biggest thing I believe the .NET Foundation can do is help spread the word about "the new .NET" (cross-platform, open-source, super-fast, etc.) so that developers, both old and new, can give it a(nother) chance.

My question for you is: How do we accomplish this? How, as a board member, can you help us accomplish this?

ericsink commented 5 years ago

Great question. This is a huge topic, and there is so much that could be said about it. So instead of trying to give a comprehensive answer, for now, I'm going to say just one thing.

A major limiting factor for .NET adoption is that very many people are stuck in their old view of Microsoft. These folks just don't trust Microsoft. They're SO sure that Microsoft is just waiting for the right moment when they're suddenly going to make everything proprietary again and start scorching the earth.

But the .NET Foundation is (at least partly) about giving .NET an identity that is (at least somewhat) distinct from Microsoft. For some of the folks with these trust concerns, insofar as the .NET Foundation is a healthy and productive entity, this is potentially a game changer.

At the tactical level, there are many answers to the question of how we could promote adoption. But the first (and admittedly simplistic) answer is to observe that the very existence of the .NET Foundation is an important step in that direction.

tidusjar commented 5 years ago

This question has hit me many times previously,

When I was rewriting one of my projects into .Net Core from .Net Framework my community said to me, why .Net? Something that can work cross platform without Mono is surly better right?

They didn't realise that .Net Core was a new and shiny thing at the time and that it was cross platform.

The reason they didn't know this is because of .Net Framework, that has been around for a very long time now and has built up a reputation. So, if you ask someone about .Net they are instantly going to think, Framework and not Core (unless they are up to date with the MS stack).

I don't think this is a thing that can change overnight, I feel with every major release .Net Core is getting more and more attention (especially with 3.0 coming up). I think it's going to have to be a mixture of time, and with the foundation, we will be able to assist in spreading the knowledge. The more projects/groups/people that come under the foundation, the foundation will grow and become more recognised outside of the .Net world.

ddieruf commented 5 years ago

If we all do our respective part in the community, this one will take care of itself. We've all seen the hype cycle in technology take its course and this is no different. Things will come back around if we keep our heads down and continue adopting the OSS path. Cloud with K8's is the thing right now and the Spring Framework has been in the right place for all this. The mixture of an entirely new runtime (.NET core) and Windows containerization being late to the game put the community on a learning curve, so we're seeing some of developer attrition. But between Azure DevOps, .NET Core reaching parity with Framework, and the OSS movement (.NET Foundation) the .NET community is positioned for a strong future.

.NET is entering a renaissance just as Java did a few years back. I see more and more .NET Enterprise developers adopting new practices and learning what cloud-native .NET is, every day.

prkhandelwal commented 5 years ago

This is really a great question, one we should all actually think about! As I have also partially discussed it in my election pitch, we need to need to focus a lot more on bringing in new talent to the community, and the best way to do that is my increasing our footprint in universities.

I encounter people unaware of advancements in .NET, specially .NET Core on a very frequent basis. Just a few days ago, a colleague of mine asked me "Why C#? Is it really used anywhere except Game Dev?". A lot of students attending our early workshops almost always knew about the 'new hot things' like NodeJs, ReactJs etc. and have a feeling that .NET is just an old stack (Some don't even exactly know what it is!). Most people are unaware about the advantages of Xamarin over other frameworks like React or Flutter. The list goes on... I think we missed to make that 'the hot new thing' appeal to a lot of developers.

I think to fix this problem, we must really re-think how we brand ourselves to current non .NET devs and how we take the steps to spread awareness about the awesomeness our tools have to offer. I do really hope whoever gets elected does something to improve our footprint among the young budding developers in schools and universities. One way to increase the footprint would be to establish student chapters and also connect them to existing communities in the localities so that they can benefit from the awesome people having years of experience and vice-versa.

"We will give these young devs an ideal to strive towards. They will race behind us, they will stumble, they will fall. But in time, they will join us in the sun. In time, we will help them accomplish wonders." (Man of Steel reference in case you don't get it ;-) )

Lakritzator commented 5 years ago

Thank you @stevedesmond-ca!

I have the same fight in the company I work for, it's Java vs. the rest, it's like the endless battle between good & evil. Sometimes you just can't convince people, they already made up their mind before you start explaining. The bigger question is why we would want to convince these people, if they are already using a technology which works just fine? Probably it's better to focus on the others.

I can't tell if .NET will be the next hype, the thing that the cool kids do, it depends on a lot of factors many of which we don't have influence on. I have seen many technologies & products fail for reasons one cannot comprehend. I guess most are due to being in the wrong place at the wrong time?

Some things the foundation might be able to do:

Overall it's a "brand" thing... I believe Microsoft was already doing a good job with special offerings for students, but I'm not sure about the current state. It would be interesting to know what influence the .NET Foundation has on Microsoft for these kind of programs.

I actually see a huge offensive, with many related tools & technologies, which should play into our advantage. (e.g. Azure DevOps for OSS is free, Visual Studio Code, dotnet in Docker containers etc.) But we should not forget, most of these are relatively new! People need time to try and appreciate a new tool or technology, so we also need to be actively patient and I think things will go our way.

mitchelsellers commented 5 years ago

This is a great question, and others have already done a great job responding and I echo most of the items here.

I do believe that some developer attraction issues that we have come from knowledge and education around what exactly you can do with the platform. I think that as the foundation working to support, encourage, and otherwise evangelize development of Open Source projects it will be important for us to help work with Microsoft and others to improve the messaging & exposure regarding what .NET is, and how/where it can be used.

In all of my conference talks about transitioning to .NET Core, even in 2019 I still get people that do not understand the power of .NET Core, its cross-platform nature, and all of the other improvements. I feel that much of this is due to the troubles of getting access to information. If you search for problems online it is easy to get caught needing to ask yourself "is this .NET Core or .NET Framework" which I think turns people off. As a foundation, I'm not 100% sure that we can fix this, but we can work collectively as a group to improve documentation and information access.

However, one thing that I do believe we can do is highlight project that are part of the .NET Foundation and showcases the diverse nature of the projects within. By sharing from the .NET Foundation perspective the plethora of solutions that are encompassed, the platforms that they are running on, and similar we can do a lot to help visibility. It will take some time to really hash this out as to the best method to do this, but even a primitive listing of solutions per architecture could be a good start to help provide some visibility to the flexibility that exists. For example, creating a listing of all projects that run on Linux, Raspberry Pi, Mac, etc would provide some exposure to diversity.

Additionally, I've been working with local colleges and high schools to introduce .NET & .NET Core into the curriculum, to help get some of the individuals early. The documentation and samples that are now available provide an incredible base that college programs can use to create & meet requirements for the intro and advanced courses towards programming degrees which will help get people excited.

It is a group effort to keep things going forward. The .NET Foundation is just one of many megaphones that can tout the benefits of the platforms that we know and love. By supporting Meetups & other events the .NET Foundation can help to connect those that are passionate about the technology with areas needing more education and evangelism which can also help accelerate the improvement.

prkhandelwal commented 5 years ago

@mitchelsellers I think although we have a lot of learning resources available, the entry point to .NET can sometimes be overwhelming for newcomers (like @Lakritzator mentioned "is this .NET Core or .NET Framework").

Also the resources we have are really scattered (aside from docs). Like it can be really difficult to start with things like WPF in a sense that we don't have a single place to have the best of tutorials. We can learn some things from docs, some from Channel9, some on MVA etc. This can be really confusing for some people. On the other hand, it's really hard to find learning resources for UWP (The best course I came across was by Bob Tabor, and it's really outdated.) and Xamarin.

I think the foundation should work with 'Microsoft Learn' to handle this issue. It's a really great platform but so far, it mostly contains tracks on Azure. Whatever it may be, I think we need a single, simpler point of entry into the ecosystem!

schneidenbach commented 5 years ago

There are two prongs to adoption that I think the Foundation can help foster - trust and education. Trust is a facet that is more important to establish in other communities, but can still exist within the .NET community for certain developers. Worth noting: oftentimes there are different components to trust. For example: in external communities, much of the angst is around the old Microsoft vs. their perception of the new Microsoft, versus within our community it can be more about having been burned directly by some technical decision made by MS or someone else.

Trust must be established before education can be effective, and that's true about ANY community. The Foundation should drive both by continuing to be an enabler for the leaders in the .NET ecosystem so they can get in front of both the .NET community and external communities. Once trust is established, education can be effective, and at that point it's getting the right people in front of the right community with the right message - aka making sure the messaging is right for that particular audience.

How can the .NET Foundation be an enabler? Some ideas off the top of my head:

mitchelsellers commented 5 years ago

@prkhandelwal I do believe that we can help to encourage a shift in Microsoft documentation strategy based on the collective voice of the .NET Foundation. However, it will be important to understand that we don't have full influence on how that information is architected or displayed.

I do believe we can help with this in a number of methods though.

We are light years ahead of where we were 5+ years ago, but we can for sure continue to improve.

IEvangelist commented 5 years ago

Thank you @stevedesmond-ca for this question, I think this is a really important as we look to broaden adoption.

How, as a board member, can you help us accomplish this?

I believe that we need to influence educators, schools, universities, code boot-camps, etc. If we could influence the curriculum this would have a huge impact. I know that my college career is that we didn't learn .NET or C# or even VB, right?! I know that most of the education systems in the work are teaching Java. Now that .NET is open source and the entire ecosystem is evolving. I am personally volunteering my time to a local code boot-camp to educate students on .NET. Likewise, I have spent time targeting educating high school students, early exposure to .NET is a great way to plant a seed that can eventually blossom into a .NET career.

Perhaps the .NET Foundation could build upon the proposal I have for gamification of contributions. It is easy to imagine a situation where contributors earn badges for helping local education systems to, as you stated it "spread the word about the new .NET". There are lots of things that the .NET Foundation can do better in terms of communicating its objectives and be more transparent. This would be a goal of mine, I believe it would implicitly aid in getting the word out.

Finally, I think it would be amazing for the .NET Foundation to serve as a source of knowledge. A location where community members could look to ask questions and serve as an inclusive, diverse, friendly and welcoming environment. I would love to continue this conversation and more importantly, I love for the community to share there ideas on how we could do this better.

tenor commented 5 years ago

Thanks for this question. It is central to my campaign statement.

.NET is losing developers to other platforms. The good news is that the number of developers worldwide is doubling every five years. In light of this stat, I believe the key to broadening the developer base is to focus on exciting and on-boarding new programmers.

This can be achieved in several ways, including:

  1. Promoting .NET development starter kits, with bundled IDEs (VS Express or Rider), REPLs, tools, documentation and sample application code.
 Microsoft did something similar ages ago, to promote .NET Framework 1.0, by mailing a starter kit DVD to any developer that requested one.
  2. Sponsoring open source projects in domains popular with new programmers such as academia, game development, web and mobile frameworks.
  3. Supporting user groups and events in locations that are likely to have new programmers, such as universities.

With any of these initiatives, .NET Core should be emphasized as the first class platform for .NET development. New programmers should be oriented to understand that open source, cross platform .NET development is the future, and that the .NET Framework will ultimately become a legacy platform.

I admit that this won't be easy, but I strongly believe it can be done. Developers have been successfully transitioned to new platforms (does anyone use VB6 or Delphi anymore?). Capturing mindshare of the next generation of programmers will significantly broaden the .NET developer base.

SteveDesmond-ca commented 5 years ago

Thank you for all your responses so far, it's great to hear that others are as passionate as I am about this!

Could someone in @dotnet-foundation/candidates tag @dotnet-foundation/candidates (it doesn't appear I have the privs) to help notify anyone else who would like to respond?

Thanks again! -Steve

SeanKilleen commented 5 years ago

@dotnet-foundation/candidates -- heads up that this question has been asked.

tonerdo commented 5 years ago

Hi @stevedesmond-ca if you take a look at my campaign statement you'll see that I specifically call out integrating with other communities as a way to increase adoption. The reason there seems to be a reduction in uptake of dotnet technologies is because there's still the prevailing misconception that dotnet is an option only when you're dealing with Microsoft technologies.

My approach to fixing this will be to have the foundation aggressively promote blog posts/conference talks and sponsor events that demonstrate using dotnet on non-Microsoft platforms. For example deploying a .NET Core app on Amazon EKS.

Also, my intention to improve the open source culture within the community could lead to the creation of a relevant projects that will see widespread use and cause developers at companies to interact with the dotnet tool-chain even if they don't write a single line of C#/F#/VB or run on Windows.

SeanKilleen commented 5 years ago

(Summary: I created an impact map that I hope clearly lays out some ideas for how we'd achieve this. This post is describes how I got there. BONUS: This mind map is editable! Feel free to contribute your thoughts!)

Hi @stevedesmond-ca, thanks for a great question! I appreciate it and I'll try to use the method that I propose in my campaign statement to tackle it.

It really feels to me like ....

I think one good starting point would be to attempt to quantify this, looking at surveys, other available data, and anything statistically significant that we can get our hands on.

The biggest thing I believe the .NET Foundation can do is help spread the word about "the new .NET" (cross-platform, open-source, super-fast, etc.) so that developers, both old and new, can give it a(nother) chance.

This is a great goal, though it does make some assumptions about developers old and new, and those giving .NET a chance vs. a(nother) chance. I think all of these groups can contribute to the goal, so I'd adjust this goal to read along the lines of "Clearly establish awareness of the new .NET as a cultural and technological shift that's worth knowing."

When I think about how I'd accomplish this, I'd think about who can help us achieve this goal. A few immediately come to mind.

Next, I think about exmples of how those groups could help us achieve this goal -- for one example (there would be many):

OK, now that we've established one way that a group could help us, we can think about what we as the .NET Foundation can do to help achieve that impact.

These are the meat of the ideas -- allllllll the experiments we could try.

We have limited time & financial resources, so this is where the convergent piece comes in. We could poll the community, we could make an executive decision, we could attempt to quantify some experiments. Regardless, we'd have the opportunity to share thoughts around this impact, solicit additional ideas, etc. -- as well as being able to prioritize this specific impact amongst other impacts we could be working toward.

I hope this helps give you some insight into how I'd approach the problem and work with others to approach the problem.

daveaglick commented 5 years ago

There are many excellent answers here about how we can attract developers to .NET from outside the community, which is great and something we should focus on. I'd like to address a different aspect of this question though. While it certainly appears that .NET is losing developers without gaining new ones, I have to wonder how much of that is due to loosing visible developers. .NET is a little unique in that we have an extremely large number of users that never interact with the open source community and may not even know such a community exists. I'd love to find some innovative ways that we can connect with those developers and engage them in open source.

The first part of addressing this is understanding what's preventing this group from participating in the first place. Some research into this area is certainly warranted, and I'd suggest the Foundation do just that, but some initial thoughts are:

By understanding the reasons why existing .NET developers don't participate in the community, we can then start to directly address them within the Foundation. Some thoughts include:

wordshaker commented 5 years ago

Hi @stevedesmond-ca.

A great question, with a lot of fantastic answers already.

My question for you is: How do we accomplish this? How, as a board member, can you help us accomplish this?

I agree with many of the points and suggestions already made. Personally and honestly, I will continue doing what I have been doing so far. As mentioned by those above, there are a few different reasons and approaches to dealing with them

This is a point I highlight in my candidacy. Navigating the .NET OSS projects isn't the easiest and I think the guidelines for contributing could be made clearer. This includes all aspects of contributing from raising issues to pull requests.

I have already fed back suggestions through one of my contacts and will continue to give constructive feedback as a "newbie" contributor. I also run a couple of my own projects, which helps give me the perspective from both sides of the fence. This is a very visible part of the .NET community and by making it a great experience, it encourages others to take part.

Alongside early stage contributors, as others have mentioned, it gives a way of being involved in .NET for those who are quieter contributors and demonstrates ways to be involved with less of a time commitment and more flexibility. Documentation, raising feature requests and issues - these all still count toward contribution and I don't think that is always acknowledged.

I love being a .NET developer and am openly enthusiastic about it. I do work in other languages too, but I enjoy C# the most.

The place that this makes the biggest difference in my view is working with educational facilities and boot camps. Talking to people looking to enter the industry about the problems you solve, why you enjoy solving them and how, does a lot to build their enthusiasm in what you are doing and the tools you use.

One of the universities I work with teaches Java, but for the two second-year projects I'm managing, the students are using .NET Core. This was partly so they could be supported by the companies developers, but also so that the students would experience the jump from one to another isn't that difficult. A lot of the companies where I live are .NET houses and by giving the students a place to have a good experience of .NET early in their career helps in encouraging students to stay in the area and apply to local companies. There's a lot of rivalry and cliques for different programming languages (which I personally have a distaste for). As part of some of the work I do, I like to give students and early-stage developers an enjoyable first experience of working with C# in particular, so they consider it as an option.

Talking at events that aren't strictly .NET focused, also increases exposure to a wider audience to "the new .NET" but without making it a vendor talk. I personally prefer talks that discuss a problem being sold with a certain tool or language, rather than a talk selling those things.


I could go on but the main point is, the board and the community can do a lot to tackle the problem of "Broadening .NET's developer-base" but first we have to hear from those both outside and inside our community where they think the problems are in using/contributing to .NET and act pragmatically based on that. All the candidates are passionate it themselves and this is important as well.

SaraJo commented 5 years ago

A product that has done this REALLY well is VS Code.

Developers of all backgrounds use VS Code and it introduces them to a lot of .NET focused work.

I think that we can use a lot of the knowledge gained by seeing this in action. Why do developers love VS Code? Its:

People aren't against using .NET, the barrier for entry tends to be higher than languages like JavaScript because all of the Microsoft tools that were necessary and the perceived heaviness of a new application. I think that having the .NET foundation is a great step in the right direction and if we can take some of the learnings that VS Code has afforded us on making the framework more accessible and agnostic that will take us much farther.

I don't think this is a comprehensive answer, just my initial thoughts.