Here are a few random thoughts about various Microsoft products compared to some of their smaller competitors:
What can Microsoft learn from Git?
- Distributed version control is popular amongst developers, and developers create pull for developer tools so you want to keep them happy.
- Distributed version control can get complicated, so even though you have to do it to be a cool kid you need good visualisation tools, not to dumb it down, but to empower developers to make good decisions.
- Marking files as read-only increases friction, developers want a file based version control system, not a solution-based one.
- Developers want a version control system that can tell them about what has changed in a directory, not one that they have to go fishing for each new file to add it into the system.
- There is definitely room for improvement with Git, time for Microsoft to become of best of breed in version control.
What can Microsoft learn from GitHub?
- The current generation of developers have embraced Internet-facing collaboration portals, and the next generation will expect that is the way that the world works.
- Collaboration features like Gist are enticing developers to experiment with the likes of GitHub.
- Developer identity is at once independent of organisations, and potentially part of multiple. I shouldn’t have to change accounts to switch to working on a private-pet project to a commercial project for a customer.
- Its all well and good to have an IDE, but if you rely on convention over configuration then your IDE doesn’t need to be anywhere as sophisticated. When I do Rails development I use TextMate. I miss things like intellisense, but all the other designers and stuff aren’t nearly as important.
- The .NET Framework is pretty damn fine, the beauty of the .NET Framework when compared with the framework that ships with Ruby and Ruby on Rails is something to behold. Lesson? You don’t need to emulate everything from other platforms.
What can Microsoft learn from AgileZen?
- With AgileZen its very easy to get started on a small personal project, and it doesn’t necessarily need to be tightly integrated with other ALM-related features such as version control. Kanban should be a process template that comes out of the box in Microsoft tools that support any kind of task management.
What can Microsoft learn from Heroku?
- You need to have enough faith in your platform to support co-locating different customer applications on a single machine. You shouldn’t have to spin up a new VM for each application.
- You should be able to get something up and running for free to enable the developer community to experiment. Doing the above will actual enable you to do this quite cheaply.
- You need a good deployment model (actually, Windows Azure isn’t too bad here, but the Git approach with Heroku is interesting).
Anyway – that’s enough from me.