By far the most important feature of the CLR (and WinFX and managed code generally) is developer productivity. We want developers to be able to build better applications, faster on the managed platform than anywhere else. As a side note, I once saw a presentation that demonstrated how this principle actually helped “solve world hunger” by letting developers get projects done faster and spend the extra time on social issues… Now this does not mean that stuff like security, web services, performance, etc are not important, they certainly are, but productivity is our reason for being.
Now I am not sure we are exactly solving world hunger, but I do think we are letting developers focus on their core business problem while they leave the plumbing to the platform. As much as I’d love to say this is all because of the greatness of the CLR or the consistency of the API set, it also has a ton to do with the quality of the tools support we get with Visual Studio.
I think that is all motherhood and apple pie right? (love to hear your feedback) So where am I going with this?
Well, today I had a heated discussion with some of the smartest people on the CLR about the balance between developer productivity and performance. The debate goes something like this:
Me: Feature X will make developers more productive, so we should do it!
Other Guy: Feature X will make developers apps so slow it will not mater, they will use something else…
Now clearly, both positions are a little extreme… but there is clearly a lot of room in the grey area… Where should we fall in that gray area? When I think of environments such as VBRun, they clearly prioritized developer productivity above performance (although, VBRun perf was actually pretty good). Other environments such as the C runtime library clearly prioritized performance ahead of productivity.
So, what advice would you give my team? Say you had $100 to spend abstractly on “more productivity features” or “better performance” where would you spend your money? And if you have any hardnosed folks that still eat-and-drink unmanaged (win32) code all day long, I’d love to hear from them as well.