So I've been in my new job as a Dynamics ISV Evangelist for 16 days now, and I'm really loving it.
Back in the day, my very first product job was with a small ISV who wrote software for automotive dealers, and I was one of four developers who worked on the core application. Having spent the past 8 years in architecture consulting before joining Microsoft, I had forgotten what it was like to develop business applications for wide scale use.
But having looked at AX, NAV, and CRM alot over the past two weeks, one thing has really hit me... the concept of frameworks haven't really gotten past level 2! What do I mean by that. Well, everyone is cool with a level one framework abstraction, such as a database framework, or a web application framework, but when it comes down to inventory management frameworks, or purchase order frameworks, everyone rolls their own!
But the same concept holds true. Just like in a web app, it's more important to get your page to the user than worry about the page lifecycle or how to manage session state.
So when I think back to my first product job, my responsibility was to write the order management part of the app. We had a guy who wrote all the database connectivity classes, and security bits, which was cool from a platform point of view, but my job was to take this great little process for managing stock loss and ordering, and implement it on the framework. But before I could get to the cool process, I had to code up basic elements of stock inventory, so that I had the business pieces in place. At the same time, my colleague was tackling the same problem with the general ledger! He had a bunch of great IP to implement, but needed the GL core in place to start. So instead of getting to the functionality that would make our app a killer, he had to mess around with GL basics (which wasn't his strength anyway!). Needless to say, our project struggled because we never got to the killer IP, under the weight of the basic bits. In fact, we didn't get past the basic bits, which in the marketplace, all the competitors had as a standard baseline anyway!
So while getting across AX and CRM and the rest of the Dynamics products, it has really occurred to me! Code the fun bits! Code the killer IP bits! Code the differentiator bits! Code the good oil! And leave the boring, industry common, business core functionality to us. We'll put it in a scaleable, extensible foundation of business products, open them up so your can create goodness upon them, and worry about the industry changes, and make sure they're built on all the bits your know and love, like .NET, SQL Server, Office System and BizTalk!
Sounds like a fair plan to moi!