Tim Sneath writes about Microsoft trying to
"Do The Right Thing" and support communities, but wonders whether Microsoft are being too heavy handed in some forums. He wants to know what they are doing wrong and what they are doing right.
Dare feels like this is another case of "Damned if you do, damned if you don't".
It's a good thing to hear Microsoft people asking what they could do better. It’s important to note that the current situation isn't necessarily a criticism of anything Microsoft are currently doing. Blogs are making a big difference to the Microsoft community (both the MS blogs and others), the conferences like the PDC are great, the material on MSDN (MSDN-TV, the full presentations from TechEd 2003), the MSDN newsgroups with responses from the development teams, the patterns and practices group are all great things.
I think Larry nailed it when he says that the Java community has grown organically, without central sponsorship, and that communities involve people communicating with each other. I think it's a tough ask to say what Microsoft could do itself to overcome these obstacles.
What I like about the Java communities that I've seen so far:
- Open source development plays a large part in this. The Java developers seem to be comfortable using Open Source technology. They are comfortable finding and learning about new Open Source tools, or even writing them if they are not available. I was surprised at the XTC group to find out how few of the Java guys dislike J2EE. The view I got was that when they need any Enterprise Software they just download an Open Source piece of software that handles the function they need.
- There's more interest in how you develop software, with ideas like XP or Agile Development and the tools: Nant (which MS are finally catching up on with MSBuild), CruiseControl, NUnit and others.
- Here's an excample of the kind of community event that I think it is exciting. A group of open source developers hold a weekend in Amsterdam, which from reports sounds really interesting. Or a weekly GeekNight (admittedly, sponsored by ThoughtWorks, a development services company) where developers get together with their laptops and code.
Here are some issues I think the Microsoft communities have (based on my very self-focused point of view):
- All of the technology comes out of a central organisation with long release cycles, making it hard to dynamically incorporate new technologies. Although the PDC is great for 'opening the kimono' it's hard to create a community around this (while the PDC bloggers is good fun, it's also pretty tiring when there's no concrete information about the new technologies).
- The communities are mostly sponsored by Microsoft. They focus is on everyone getting closer to the source, rather than establishing a community in the place where they are. For example, the MVP program and Partner programs seem to be about connecting people up to Microsoft so that they can take that information and push it back out again. This is another complex point to overcome - 'how can MS create communities without making them look created'
- There's so much good information available that it breeds a kind of laziness amongst developers. We don't need to go out and learn about it, it will come to us when we need to. I admit this is a tough criticism to overcome (don't do less, but find ways to encourage developers to engage and do more).
- Microsoft is good at making complex technologies simpler so that they can be accessed by a wider audience. We've seen it already in areas like relational databases, OLAP technology, distributed transactions, hosted environments and we'll see it again with many of the new technologies like Indigo with its message bus. The problem is that sometimes Microsoft over-evangalise the wrong message. This leads to the situation where too many VB projects were using MTS when they weren't getting any benefit from it (or the converse now where COM+ seems to be ignored in favour of 'cooler' new technologies).
So, how could Microsoft improve? Here are some random thoughts:
-
Provide more opportunities for developers to speak to each other. Provide events where the focus is on getting the audience to talk rather than the traditional User Group Expert-Lectures-With-PowerPoint-For-2-Hours. Perhaps use this strategy adopted by
John Bristowe when he ran the .NET group in Melbourne:
"An independently run volunteer user group, MDNug holds informal gatherings once a month where the focus is not on one speaker or subject but on several. To do this, members break into groups gathered around whiteboards. In small groups members are more likely to ask questions, present ideas and professionally critique the work of others, says Bristowe." Source
-
Encourage more local dialogues on practices and architecture. Why not have a 'developer hypothetical' evenings with MCS consultants where a problem is raised and the group (or teams) have to come up with architectures?
-
-
Encourage more open projects. What about having someone like
Eric Gunnerson managing public projects for development tool add-ins. Things that the MS team didn't have time to do, but were requested by customers?
-
Encourage more public discussion about the direction of future tools. So not just about the bugs in the product today, but the future directions and the advantages/disadvantages of various approaches?
-
Provide more opportunities to talk with MCS developers about architecture and approaches.
-
"letting the customers--the ones who just love your products or services--do it for you. It's about giving them something to talk about and making it easy for them to do it (even rewarding). It's giving them permission and rewards and social standing (the MVP program). It's removing barriers and maybe just as important not standing in their way."
These are just my thoughts, I'm interested in what others have to say (especially on how things could be improved, this is the tough one).