Over the past few years I have seen many developers struggle with a growing dilemma, do I devote my time to platform development?

When I say “platform development” I mean building application on products such as Microsoft SharePoint and Microsoft CRM. The IT world is rapidly moving toward standardizing on platforms such as these. They offer lower IT costs, standardized infrastructure and overall lower cost of ownership. It makes sense from a business perspective, but what do you do as a developer?

The problem here is that we have all been devoting all of our time to becoming better coders, designing systems and generally attacking every problem from the ground up. Not so in the platform world. You begin with a packaged software product, then extend it to meet a customers needs. These extensions can be simply point and click configurations, embedded code such as HTML, CSS and JavaScript, or compiled code which changes behavior in the product.

In the new world of platforms, we are asked to live in a box. That box is called a platform. They bring limitations, boundaries and a sense that we can’t use all the tools that we have worked so hard to learn and build over the years.

Most of my experience is with Microsoft SharePoint and Microsoft CRM but the trend is industry-wide. IT shops have been burned by custom software and they want some predictability over time. I get it.

Customers generally expect the platform to host a wide range of applications and act as a clearing house for all future development activities. The problem comes in when requirements don’t match up to the platforms capabilities. This can be a scale issue, or a mismatch of the smallest detail. These gaps are extremely painful for developers because the client is expecting the fully baked solution, but the platform doesn’t entirely deliver. It’s up to us to build that last 10% of the solution, which takes 50% of the effort. Blarg!

In other scenarios, the product (particularly SharePoint) is a really “big hammer” that solves lots of problems and you have no choice but to use the entire platform. For instance, say a client wants Content Management. Well, SharePoint certainly does that, but it also comes with collaboration, profiling, personalization, single sign-on, search, etc. Sometimes it can feel like you boiling the ocean for a cup of tea.

I have struggled to reconcile these issues and come to the conclusion that there are really two options for developers.

First Option

Swallow your pride and start learning a platform. There are a ton of opportunities right now for platform work, that work is not going to end any time soon and you might as well take the plunge sooner than later. There will be some limitations but in return you will get some opportunities that were not possible before.

Usually enterprises have a portfolio of systems, and your project is just one of them. In the platform world you will need to integrate with other systems in a more reliable and sensible way. Sometimes this integration work is custom (cha-ching!) other times it is not. But the point is that the platform allows you to think at a higher level without being mired in minutia of coding all the components yourself. The upside is that you can use you brain cycles to think about solving bigger problems and delivering more value.

Second Option

Punt. Find a product company you want to work for, or a start-up that seems interesting. If you are in consulting there is a majority chance that you will be moved in to a platform role. If that’s not where you want to be, get out immediately.

I’ve seen too many people struggle through the transition. Always battling to get the custom application development work on any project and generally hating life. Don’t get swept away in the idealized vision that you can buck the trend. See this transition for what it is to you, either a way to move in a new direction or get out before you cause yourself a lot of heartache.