Wednesday, September 19, 2012

SharePoint Development: The Way it Was, Is, and Will Be


The Way It Was

SharePoint development was pretty much always a painful exercise that only the truly masochistic enjoyed. If you actually enjoyed finding and installing a variety of tools and scripts to package and deploy your solutions, there was always the woefully inefficient process of tracking down a particular error, or the documentation that never seemed to tell you what the sealed class actually did, or the IDE that kept crashing, or the seemingly never-ending process of getting your environment "just right".

It has been known to happen that, after installing Windows Server 2003 and SharePoint 2007 on a dedicated SharePoint development box and tweaking the environment for days, the whole thing explodes in a microsecond because the hard drive went bad, the wrong thing was tweaked, there was a power surge...whatever. Development boxes weren't backed up. Or if they were, the process of restoring it was more painful than just rebuilding it.

So much time was wasted...

The Way It Is

Visual Studio has come a long way. We now have simple F5 deployment for our development environment. We have correlation ids to help us find our errors. We can now install SharePoint on the consumer Operating System rather than a server operating system. Documentation is much better. Visual Studio is far more stable and developer friendly.

Oh, and there are virtual machines. I can create an environment, get it just right, then snapshot it and save it somewhere safe...on a NAS, on a special backup drive, or in my pocket.

But a lot of time is still wasted...

The Way It Will Be

Windows 8, Azure, TFS Online, and Visual Studio 2012 changes the game.

Most decent sized companies have multiple SharePoint environments. They may have an Extranet, an Intranet, corresponding development and test environments, and various other pilot SharePoint installations.

One day soon SharePoint developers, after logging into TFS online and checking their task list, will do one of two things:
  1. Within a few minutes, they will download the latest VHDs (Hyper-V VMs) they need from a cloud or on premises source, spin them up on their Windows 8 machine and start developing.
  2. Within a few seconds, they will login to Azure and spin up the latest VHDs they need and start developing.
The way of the development world is changing. Clients and consumers want their software and they want it now. They don't want to wait for developers to fiddle with their environments and add-ins. They don't want  to wait for developers to get "ramped up". They don't want to wait for anything. Whether or not you agree with this, it is the reality. Software development has become an iterative process and the iterations are getting shorter and shorter.

Somasegar, Corporate Vice President of the Developer Division at Microsoft, stated the issue clearly in his blog recently, "as your customers evolve, so too do your apps, requiring you to continuously improve and incorporate innovations faster than ever before, with continuous feedback, continuous quality, and continuous delivery." (http://blogs.msdn.com/b/somasegar/archive/2012/09/12/visual-studio-2012-and-net-4-5-launch.aspx)

Microsoft is adapting. Visual Studio will receive more "regular updates" with new enhancements and features. Azure is constantly evolving and improving it's product. A Microsoft SharePoint Product Manager recently stated that SharePoint will be receiving more "iterative updates".  The 2-3 year major software release cycle is dead.

The evolution of software development starts with the developer and the process they follow:
  1. TFS Online (available now as TFS Preview: https://tfspreview.com/) means that your entire code base is available almost immediately.
  2. Azure means that SharePoint virtual machines (setup to your environment specs) will be available within minutes. For reference, Microsoft has released a white paper on the subject: http://www.microsoft.com/en-us/download/details.aspx?id=34598
  3. In combination with the above, Visual Studio provides virtually everything you need to start developing almost instantly.
There is virtually no internal infrastructure. There is virtually 100% up time. Recovery and availability comes part and parcel with TFS Online and Azure.

So, stop wasting time and start churning out software that your clients will love...Do it NOW!