Wednesday, November 21, 2012

Depth of Programming Tools

Being a spectator to the on-going mess that is the microsoft developer roadmap... (would train wreck be too strong?) and reading this post on Rx. It got me thinking about some of the obvious and in-obvious side effects of the endless churn in the Microsoft eccosystem.

* Developers Inability to Commit to a Technolgy
* Third party tools vendors and Extenders lack of commitment
* Consumers lack of clarity on the right technology for their projects

All this is pretty obvious and well blogged about. The thought tha occured to me is that the endless renewal of technologies creates a very "superficial" eccosystem. No-one has the time or the energy to create deep paradigm shifting technologies on top of any of these languages or stacks becase it takes some years of experience and a subtle understanding of the problem space before these kinds of solutions can emerge and be polished.

The above ideas around Rx are drawn from problems with their roots all the way back in the early days of event driven programming, but more recently it draws in concepts from LINQ and other agile data access models. These have all taken time to stew and have been applied to .NET... but now with the maturing of the library .NET has past its prime. It's no longer the kid that is getting all the attention.

Looking at the other Microsoft babies of recent years, SilverLight, XAML, WPF et. al. there has not been enough time for anyone to live with them and start to see solutions to the deep problems. So there is only a superficial set of tools and technologies to work with them... and then they are gone.

I think this becomes a self-reinforcing cycle. Microsoft presents uncertainty and doubt about the tools, developers don't commit to the tools, Microsoft panics and creates new tools with even less certainty and more doubt.

The IT lecturers must be totally pissed off. I remember only a couple of years ago when they finally let go of C++ and upgraded all the courseware to C# and XAML. To have to again totally re-build their course material and test drive it over a couple of years to get it all sorted out will completely piss them off. No wonder book publishers are doing quick and dirty publishing for MS products. There is just no time to get deep with anything.

Anyway, the takeaway is that its the lack of really deep and clever extensions to languages that I feel will be the biggest and most costly loss. These are the tools that provide the biggest bang for their buck and help move whole industries forward. We don't need yet another language or GUI toolkit. We need deep problem solving libraries with thought, well designed API's that have had time and bright minds shape them. We need comprehensive tool chains that are bedded down and have all the subtle features and bugs sorted. This is just not happening on the MS stacks at the moment.

VS2012 is the epitomy of Q&D. There is all sorts of stuff missing or "just" working. It smells of panic. It also smells of trying to put a little something for everyone across a fragmented ecosystem of different technologies. Imagine if all the effort were spent on getting just a few technologies really right. The fact that this has not happened probably points to the fact that any one technology is not a compelling difference anymore. Great support for a language is not a "killer app", so now its good enough to just have "just enough" support to tick the box.