C# Community Review

One of my responsibilities is overseeing the C# team’s involvement in community, where community is anything we do that has direct customer touch. Everything from working with MVPs to design reviews on new features to the C# Dev Center. Duncan, Dan, and I collaborate on the whole community effort.

We now have a process where we do quarterly reviews of our community process, and we had our first quarterly review, which consisted of all the C# PM team and the first and second level managers of the three of us. Getting the review ready consumed a considerable amount of time in the past few days, but except for the fact that we only got through about half the slides in two hours, the review went quite well.

Which brings me to the point of this post.

If a friend came up to you and said, “I’m thinking of using C#, but I’m concerned that there isn’t a good community around it”, what would you say? What are the good things about the C# community? What are the bad things? If you wanted us to change one thing, what would it be?

I’ll summarize and post so that you don’t have to read the comments.

Comments (30)

  1. David M. Kean says:

    This applies to not just C# but to all of MSDN:

    Merge the developer centers. It’s a good idea to have different developer centers, however because there is not enough content for each center, they all contain basically the same links and I never visit them. I find myself going to gotdotnet.com, winforms.com and asp.net to get a summary of all the new articles posted.

  2. Ryan Lamansky (aka Kardax) says:

    Specifically for C#, it’s the yougest of the VS.NET languages with only around 3 years of existence. This is compared to BASIC’s 40.

    Naturally, the community is going to be small. But it’s a fairly tight-knit group of good people. It’s rarely taught in academics (compared to Java or VB), so most people who use it came to it willingly, and this leads to a good level of devotion.

    C#’s community is burdened by a lingering sense of anxiety about the future of the language. It’s very young and not well established. What we need is an announcement of a major commercial product from Microsoft where C# is the primary development language.

  3. milbertus says:

    I would say that there is a very good C# community. There are numerous blogs on the subject, in addition to mailing lists (such as DevMentor – http://discuss.develop.com). I haven’t really looked at the C# DevCenter at MSDN at all, but I don’t really think that I need to, with all tlhe MSDN blogs and other non-MS blogs on C#.

  4. John Rusk says:

    >What are the good things about the C# community

    Your blog! (And others from Microsoft staff)

    Highlights of the MS staff blogs, for me, are

    – Advice and tips aboout C# and .NET (obviously)

    – Discussions of issues where some people would like to see changes (e.g. your recent thread on "const" methods)

    – Posts from Microsoft along the lines of "Yes, with hindsight we could have done this better, but we can’t change it now". Like your recent post on Equals versus "==". It’s reasurring that Microsoft is aware of these issues and that we (users) are not alone in finding these things difficult. :-) Your comments are encouraging, even when you can’t offer any improvements.

  5. Great, Question Eric.

    There have been other posts that I’ve read recently (on blogs and on Channel9), that people are really "amazed" that Microsoft is "opening the doors" to their/our devs, and they say the best possible thing that we’ve done is to help build that "C#" community.

    Glad to be a part of it!

  6. RichB says:

    Them: “I’m thinking of using C#, but I’m concerned that there isn’t a good community around it”

    Me: “There’s tons of community. Look at NUnit, Nant and NDoc”

    Them: “But Microsoft walks all over the community – see MSBuild/Nant for example, whereas IBM works with the community – see Eclipse/Ant or Xalan/Xerces”

    That’s a theoretical conversation, but I could see it happening. However, if the MSBuild team shipped a Nant task which executes MSBuild and provided both-way conversions between the two it would help alleviate concern.

    Sure, the MSBuild team would reply to the above sentence by saying "we only have limited resources and we don’t have enough resource to write Nant tasks and converters". If that’s the case, you should cut some features to get the resource. Microsoft now cuts features to put security in place – the same should be true of cutting features to put a community in place.

    (and, yes, I remember you were close to the MSBuild team last year)

  7. Alex says:

    Good things: It really exists and there are some really cool people around. GotDotNet!. Finally it is possible to talk with MS people and get real answers. Lots of nice little coding projects.

    Bad things: Too many participants that haven’t released any useful code but are considered (blogging) heros. A developer community should promote good developers which do exceptional software.

    Ideas: I’d love to see a feature that allows me to ask some MS guy a question via his blog and get the response blogged. This kind of works through "Contact" sometimes but "Post a question" sounds a lot more inviting.

  8. Kirk Jackson says:

    I’d say (and this is just stream-of-consciousness):

    C# is a new language, and there is an interesting community of people who are passionate about the language, and interactions between in and the surrounding infrastructure (CLR, BCL etc).

    Because it’s in the early stages of it’s life, and due to the openness of the team involved, there is a real sense of understanding the decisions made in the language design, and even participation in upcoming decisions, through web logs and interviews.

    The good thing about the community is the passion of it’s members, the wide-range of skill levels, but still the involvement of "guru-level" programmers in the "I need help" forums, newsgroups and mailing lists. I haven’t seen this in other programming communities – sometimes it feels like the blind are leading the blind :)

    The bad thing about the community… hmmm… I guess there’s no consensus on the "best practices" in a lot of scenarios, so there’s often heated discussion on the best way to do a particular task. I’m pretty sure that any opinionated group of people would act the same way!

    I don’t believe that anyone can really change the way that the community works, as it’s a collection of people who aren’t easily swayed or moved. I guess I’d most like to see the community grow larger through encouraging passion in new C# developers, and although I don’t think that money would necessarily do that, I do recognise that some of the existing "community infrastructure" might not be able to cope with 10x the number of participants and might need "upgrading".


  9. W Poust says:

    The one thing I’d have you change is releasing the NET 2.0 framework in 2005 (if we’re lucky). Many MS people in the C# community spend a lot of time focused on unreleased C# features. They sound great, but our company does not use unreleased software. I could definitely understand and appreciate my friend’s concerns about a responsive C# community.

  10. I would tell that person, "Nicholas Paldino" is in the microsoft.public.dotnet.csharp newsgroup, and I think the problem would be solved.

    Honestly though, I think that if someone said that, they were living in a hole the past two years. With blogs, sites, MVPs, newsgroups, books, etc, etc, one could even say that the community is saturated with C#/.NET. It’s hard to not see something related to .NET nowadays.

  11. David Levine says:

    I think the community we currently have is light years beyond anything we’ve had in the past. It can be better but it’s pretty darn good right now. Good job to all.

    I’d like to see even more (yes, more) blogging and interaction between core BCL and CLR developers and the community of users. These devs are building the engine that many of us will be dependent on for the success of our products. It is important to us to have some level of access to them – one small change in the CLR today can have vast repercussions.

    So, I’d like to see more of the architects and core devs running blogs.

  12. J. Daniel Smith says:

    I think there is a lot of "community", but it’s spread around a bit too much: MSDN, Channel9, GotDotNet, etc.

    Statements like the one you cite also show that people are wrongly focused too much on a language. Sure, C# is great, but if you really understand what you’re doing, the particular language choice is mostly syntax (that may be a big "if" as a lot of people may be cutting-and-pasting sample code or using something generated by a wizard).

    This is even more true in the .NET world with the CLR at the bottom and the BCL at the top. Choosing to got with .NET is a much bigger decision than what language will be used.

    Not that I would personally choose to program in VB.NET (although I am thinking about using the new My classes from C# – again it’s the libraries).

  13. Clinton Pierce says:

    Finding the community can be tough.

    With Perl it’s pretty well known that CPAN or Perl.org is the place to start as a "portal". From there you can dig your way down and out into places like USENET, use.perl.org, etc… Perl has one of the better organized communities out there.

    Whereas finding C#’s community can be tough. After a year I stumbled across the "right crowd" by following a link in a .sig on a Usenet post. This was after a year of searching with google and google groups. Most of what I stumbled across looked like marketing, sales, and not much like community. It’s a signal-to-noise problem, really.

  14. TomB says:

    I’d like to see some improvements in the MSDN library. Primarily searching and navigation. I find it difficult to find what I’m looking for.

    I’d also like to see some end-to-end instruction. I know there are complete projects, like F&M and IBuySpy; but I’d like to see the entire picture from beginning to end.

    The microsoft.public.* groups are a great resource.

  15. Jiho Han says:

    I agree that microsoft.public.* groups are a great resource. In fact, that’s how I found some of the gurus in the .NET xml community and their blogs.

    However, often times, questions do go unanswered and I am not sure why some of them do and some of them don’t. I don’t see a lot of "MSFT" folks answering them but a lot of MVPs. Maybe that’s the sign of a good community.

    Sorry, it turns out that this isn’t really c# specific…

  16. paul says:

    How about a Road Trip to the birthplace of C, New Jersey?



  17. Good things about the community:

    – several different formats of support (ng, ug, websites)

    – many, many websites devoted to C#

    – noone has a C# background (because it’s relatively new) so expertise are coming from VB, C++, Java, Delphi which gives incredible depth to the community and its knowledge base

    Bad Things about the community:

    – too much noise particularly when searching for something very specific

    – perhaps not enough tutorials and quick starts, especially for beginners

    – having the same questions popup every couple of months can be frustrating

    – difficult to escalate a problem to MS, especially if PSS isn’t able to assist or isn’t involved for some reason

    – no service packs currently which is causing much frustration for some users

    If MS could change one thing:

    – provide conferences targeting beginner, intermediate and advanced developers separate. This is especially needed in smaller subs like South Africa.

  18. I do not come at all from the IT industry but I can tell C# is very a attractive language for the academic world, at least in my domain which is flow simulation, calculus, etc.

    The main reason for this is that "we", number cruncher, come from the obscure C world and even more weird template meta programming world of C++ (see http://www.boost.org ). While both those language have proved their value, I beleive we loose too much time in learning the "basic" of computer engineering, which is not our main concern: memory handling, macros, includes, different compiler, static libraries,…

    So here comes C#, it smells like C++ syntaxically which I like a lot but I really all the "productivity" tool around it: built-in doc, very good intellisense, the "reference assembly" magic (remember the C++ #include<…> hell), the foreach magic, and not forget a highly detailled "coding style" speficitaion (and FxCop), etc…

    But the best comes when you dig in the BCL, you discover Reflection and CodeDom which is the sacro saint graal of twisted mind developper like you find in the boost, spirit and other TMP projects. Self-introspection, dynamic creating of types, custom attributes, etc… are just too good to be true. Custom attributes and Reflection has opened an hole range of very productive products (unit testing, or mapping, etc…)

    Although this language is young, it is very attractive and I beleive it will attract a lot of people in the future.



  19. I think the community has not "gelled" enough yet, but it’s mostly there. What we have are a ton of blogs and sample websites with code and articles that need to be aggregated, but first you have to find them.

  20. 梦溪科技 says:

    I prefer merge not separate

  21. Michael Turner says:

    There is a lot of good stuff out there, but one thing I think is lacking is support for getting certified. Yes there is a training site with a list of tests and some classes associated with them. I’d love to maybe see application samples that show coding principles necessary for both passing tests as well as bettering coding skills.

  22. Tim says:

    This might not be directed to C# only but to the whole .Net framework. I work as a consultant and I would code any in C# rather than c/c++ or any other language for that matter. But most of the time it’s applications that would be distributed to a wide range of people; as an example one was a video on demand application. C# was great to develop it. The application size with the installer was around 2megs but we had to ask the users to download the .net distributable which is around 30 megs if I remember correctly and for not so web savvy people to install that and then run the installer for our app etc is really asking too much. IMHO I would really think if the .net framework was to be shipped as part of XP -or as a mandatory update for previous versions of windows- it would give C# and the .Net framework as a whole a huge boost.