The introduction of Office 365 and SharePoint Online has completely changed the skill set required to be successful in the marketplace. As a SharePoint developer myself, this sent me on a journey to reinvent myself as a front-end web developer and I know that I'm not the only one out there in this situation.
What caused this change? Are your current skill sets in danger of being obsolete? What are the opportunities in SharePoint Online? What can you do to re-tool your development skills to take advantage of the new development landscape?
I invite you to follow along with my journey as I attempt to structure the insight and experience I have acquired so far. My goal is to help you make a successful transition yourself, as well as provide you with the training and resources that will make it possible.
Personal Background In SharePoint Development
Prior to 2007, I was an expert in .NET development and notably ASP.NET. I was already a Microsoft MVP in C# for several years and a Microsoft Certified Trainer for almost 10 years. With the launch of SharePoint 2007 my specialty turned to development and training on this product, and I've specialized in SharePoint exclusively since then.
There have been dozens of SharePoint projects over the years with many public facing web sites to my credit. I'm into my 11th year as an MVP for SharePoint Server. I regularly give talks at SharePoint Saturdays, user groups and conferences internationally. I've also written two books on SharePoint development.
I say all this not to boast about my accomplishments but to underscore the saying "the bigger they are, the harder they fall." One day, we had to pitch SharePoint Online work for our company, and they sent me in as one of the top guns. The client responded, "Sorry, this job in SharePoint Online requires that you know Angular JS."
Not only did we not win the project, but in an instant, I became a dinosaur. My skills were suddenly dangerously close to becoming irrelevant and obsolete. I left the pitch humbled and wondering what had just happened.
In fact, I had already seen this coming. I knew that Microsoft was pushing its Office 365 cloud offering, and knew this was primarily a front end web development play. I had seen my colleagues diving into the technology and into the SharePoint REST / Office 365 APIs while I continued to develop solutions and perform migrations for on-premise customers. I had just postponed the training I was supposed to be doing already.
Fortunately, I subsequently had the opportunity to lead a large development team on a custom publishing portal to deliver search-driven knowledge management content to 40,000 front-line employees. While still an on-premise project, the directive was that this application had to be able to migrate and run in SharePoint Online with no changes.
We had middle-tier services written with Web API, which called SharePoint services, and the front end was done entirely in AngularJS calling both Web API and SharePoint services. The SharePoint customizations were packaged and deployed with declarative sandbox solutions. Unfortunately, I was middle tier / back end / deployment focused, so I did not dive into Angular this time. But the experience showed me what was possible and gave a clear direction for me going forward.
Leverage Your Existing Knowledge
In terms of your existing skills and knowledge, it's not all bad news. A deep understanding of how SharePoint works is still relevant going forward. This is the key existing knowledge I have and something for those newer to SharePoint will need to learn:
- Data and Schema: Lists and Document Libraries in SharePoint are implemented physically through content types, site columns, list definitions, and list instances. One should also understand SharePoint Lists are not relational or transactional – and don't directly correlate to a SQL Table.
- Information Architecture: How to best set out web applications, managed paths, site collections, sites, sub-sites, lists and libraries. How to define the site navigation, how to leverage search driven discovery, and how best to tag and classify data (notably with Managed Metadata Term Sets).
- SharePoint Product Features: I have too often seen folks turn to customization too soon, without understanding that there could be a better out-of-the-box way to achieve what you are trying to do. SharePoint and Office 365 is such a massive product. You also come to learn what you should customize and more importantly what you should not customize.
- Deployment of Customizations: Knowing how SharePoint Solutions (WSP files) and Features are used to extend the product. As a Developer knowing your range of deployment options from Sandbox Solutions, to SharePoint Add-Ins, to Office PnP Provisioning, to the upcoming SharePoint Framework.
- Migration from On Premise to SharePoint Online: Knowing what content can be migrated easily and what tools can help you. Knowing what customizations to leave behind, when to re-write, and how to re-write.
- Knowledge of PowerShell Scripting: A strong knowledge of PowerShell can be invaluable for deployment, configuration, and automation tasks.
- Web API services: ASP.NET C# skills will still come in handy to develop custom Web API services that will ultimately be hosted in Azure Web Sites.
So I have come to realize what SharePoint skills I need to stress in the current marketplace, and what value I can offer, even without the current strengths in front-end web development.
Given the above, I created the plan and timeline for accomplishing my goal of transitioning my skill set to that of a front end web developer. As part of this process, I will be writing a series of articles documenting my learning by providing examples, guidance and resources. Office UI Fabric, AngularJS, Kendo UI, and the upcoming SharePoint Framework will form the core elements I will be expanding upon.
Here are the (primary) development technologies I consider must-know for entering the future of SharePoint development, in roughly this order:
- Office UI Fabric – This is the front-end toolkit that makes your app or add-in blend seamlessly into Office. So if you want to make your customizations look like native Office features, this is a must have.
- Office Patterns and Practices – Originally these evolved as the "best practices" for SharePoint full Trust Code Solutions and transforming the customizations to the add-in model, but PnP guidance has started evolving to other areas as well, including Office 365 APIs, Office Add-ins and unified APIs. I especially like the provisioning framework and countless samples provided. Why reinvent the wheel?
There are numerous other smaller frameworks that will include themselves along the way – for example responsive design with Bootstrap and needing a task runner such as Grunt or Gulp.
Learning resources? Beyond each technology's primary website (which all provide excellent resources), I will be looking to online courses in PluralSight and Udemy. I'll look to the blogs of my fellow MVP colleagues, notably those that specialize in Office 365 development. Finally, I will look to expert author resources such as those provided in the O'Reilly book series. I will endeavor to share my specific links and resources along the way so that you can benefit from them as well.
My journey is far from over. I am under no illusion that to gain proficiency across all of my chosen technologies will take six months to a year or more. But even the longest journey begins with the first step. I invite you all to follow along as I post milestones and updates along my quest towards becoming a front-end web developer. Please share your own experiences, insights, and resources so we can all help each other get there faster.
I will share my learnings by providing detailed "how to" technical articles that show all of these technologies in action in SharePoint Online.