I blogged last about Platforms verses Applications and put the statement out there that platforms beat applications every time. At least one of my readers (Alan Stevens) agrees with me. My other reader hasn’t commented yet.
Alan pointed out, however, that I missed some rather important platforms that Microsoft ships. One that all of the developers in the audience (on the Microsoft technology stack so that doesn’t include you Joe) probably use on a daily basis is Visual Studio. Alan posted about it in his post on VSX. He points out Visual Studio itself is just a shell and that all of the other bits that you see are simply add-ins. That shell is now available for you to leverage as you see fit in your applications. Obviously, you can write add-ins such as the Dotfuscator from Preemptive Solutions or CodeRush. What you probably didn’t know is that you can build a stand alone application there that you ship independently of anything else. The cool part about that is that you have a built in extensibility model and other applications can meld with yours because you’re on top of a great platform. 🙂 Don Demsak, aka DonXML, had a podcast about Visual Studio Extensibility back in April.
Mappoint and Virtual Earth, despite my recent jolly adventure with Mappoint, is a fantastic platform for building applications on top of. One of the local companies here in Michigan is using it for the base for one of their applications called eoStar. I find it fun that they have built their application as an extensible platform as well – see their plug-ins section for things that third parties have built for their applications.
The Microsoft Dynamics CRM is a horizontal base platform for you to build vertical applications on top of such as Omnivue’s Health Care application. There are multiple ways to integrate here from API calls to interfaces you can implement to web services that you can leverage.
I know that I’m missing some of the important applications out there that Microsoft ships as a platform.
So, what does this mean for your applications? There are two directions that you should be looking.
First, when you are starting a new application – is there something out there that you can leverage as the base for your application that will handle a lot of the underlying plumbing. I like Brian Prince‘s quote – “Don’t be a plumber.” What he’s talking about is leveraging platforms and frameworks that will do a lot of the heavy lifting for you so that you can concentrate on your business logic which is your real value add.
Second, you need to be thinking about what are the possible extensibility points where someone else could tap into your application. I know, you’re thinking – but Josh, I’m building the corporate equivalent to Notepad here – there is no extensibility points. While that may be true – think about your favorite text editor here and what add-ins you’re using. If you are still using Notepad – you are in the dark ages and need to look at UltraEdit, Scite, E or any of the thousands of others that are out there. One of the things that all of these have in common is that they all support extensibility. Scite, for example, has a great page dedicated to different plug-ins called Scite Extras. There are extras there from various language formatting libraries to scripts that you can use. But what this proves is that even simple tasks like text editing can benefit greatly from being able to leverage a great platform so you should be thinking about that with your applications.