SharePoint Training

This article will guide you on how and where to look on the internet to train as a SharePoint developer for free. Click on the links provided for examples or more information about the particular subject. Some of the links refer to SharePoint 2010 though the current version of SharePoint is 2013 and 2016 is due to come out the first quarter of 2016. Even so the examples and information applies to the current version and we will update the article when 2016 comes out.

Development Environment

SharePoint Server

To start your SharePoint training you must have a SharePoint development server on which you can practice and there are a lot of ways to setup a SharePoint server. You can either configure your own server by downloading and installing SharePoint 2013 Server on a Windows 2008 R2 server or spin up a cloud-based virtual machine (vm) that is already SharePoint configured for little or no money to start.

Microsoft Azure virtual servers include SharePoint configured vm's that you can start up with a free trial. Azure is Microsoft's cloud computing and infrastructure platform and in addition to virtual machines they also offer app, data and file storage among other services.

Amazon EC2 is another cloud-based virtual server platform that lets you spin up a clean Windows Server vm and offers many preconfigured vm's including SharePoint vm's. As with the Microsoft Azure platform, Amazon's platform includes many other services.

Always shut down your cloud-based virtual machine when you're done with your development. It can start to get expensive very fast if you let a vm run needlessly.

Visual Studio

Visual Studio is a code compiling application that includes many features to help developers write, compile and run code and will be your primary development environment. Depending on the version of Visual Studio you may need to install extensions to be able to develop SharePoint solutions. If you don't already have Visual Studio you can download the Community free version and install the SharePoint extensions.

SharePoint Designer

SharePoint Designer is a Microsoft client application that enables you to connect to a SharePoint site. Using designer you can add, edit and delete list, libraries, pages, workflows and other types of files but you can't debug and compile SharePoint solutions. It is possible to develop applications that only include "front-end" code within SharePoint Designer. Front-end or client-side code includes html, javascript and css files but usually a developer will use some other development environment such as Visual Studio to develop the front-end code application and then use SharePoint Designer to deploy the application.

PowerShell ISE

Using PowerShell you can access and administer SharePoint as well as execute custom developed SharePoint and .NET code. In order to be able to access the SharePoint libraries you need to make sure the SharePoint snap-in is installed.

Code Repositories

A code repository is a system that stores your code and provides features to check-in and check-out files and branch and merge files and solutions. This enables many developers to be able to work on an application without over-writing each other.

Team Foundation Server (TFS) is Microsoft's code repository system and has been integrated with Visual Studio for years. Git is an open source code repository that is widely used and is becoming more and more the repository of choice for many developers and departments. With Git you always maintain a local repository on your computer but you can pull and push code updates to repositories that are shared by many. One such global Git repository is GitHub. In order to be able to use Git from Visual Studio you need to install the extensions through NuGet package manager.

SharePoint Application Types

There are two main types of applications that can be developed for SharePoint, solutions and add-ins. You can also develop PowerShell scripts using the SharePoint snap-in.

Solutions

SharePoint solutions generally use the SharePoint Server Object Model (SSOM), which are a set of SharePoint assemblies that form the SharePoint Server API, and are needed to extend and develop collaboration, search, business process, business intelligence, social and any other type of business critical application. Visual Studio is used to deploy components such as site columns, lists, libraries, content types, event receivers, workflows, pages layouts, master pages, application pages, user controls and web parts. All of these components are attached to features that have a scope of web application, site or web and the features are added to packages. Visual Studio then compiles everything into a compressed file with a file extension of wsp. Applications built with SSOM must run on the SharePoint server and are deployed to the SharePoint farm but you can also develop console applications that utilize the SSOM to interact with SharePoint. Some other types of applications that can be developed are site definitions and branding projects.

A site definition is a Visual Studio project that you can use to deploy a site with preconfigured SharePoint components such as lists, libraries, web parts, content types and so on as well as custom functionality. Using a concept known as feature stapling you can attach all of the previously mentioned features to new instances of sites without modifying the original site definition.

A branding project lets you tweak the look and feel of a SharePoint site or develop sites that have 100% custom branding as in the case of a public facing website.  These types of projects make heavy use of the previously mentioned master pages, page layouts, web parts and custom server controls. They are deployed and activated on SharePoint sites where the publishing feature is enabled.

Add-ins

SharePoint Add-ins (formerly Apps) are self-contained components that are developed to provide custom functionality to users within SharePoint pages. In previous versions of SharePoint these would have been developed as web parts, other systems use the term widgets and still other platforms such as Facebook use the term apps.

SharePoint-hosted add-ins are deployed to SharePoint sites and use the Javascript SharePoint Object Model (JSOM). JSOM is a set of Javascript libraries that contain the logic for client-side code within SharePoint pages to interact with SharePoint.

Provider-hosted add-ins are deployed outside of SharePoint and use the Client SharePoint Object Model (CSOM). CSOM is a .NET api that enables code running outside of SharePoint servers communicate with SharePoint.

Both types of add-ins can be developed as full page, partial page (as in web parts) or as UI custom actions to extend ribbons or menus. Both can also utilize the SharePoint REST service endpoints to communicate back and forth with SharePoint.

Scripts

You can administer any facet of SharePoint using PowerShell for SharePoint and it comes in quite handy during development from time to time. Developing scripts with the PowerShell Integrated Scripting Engine (ISE) is very helpful and enables you to debug your SharePoint scripts by stepping through lines one at a time. Click here for instructions on how to load the SharePoint snap-in automatically within the ISE.

Languages and Frameworks

In order to work with the SharePoint api's and the different project types it's necessary to become well versed in a multitude of languages and frameworks. It's not necessary to know every detail but it is necessary to have a good grasp of them at the high level. SharePoint developers tend to be either back-end or front-end developers and more and more are becoming full stack developers meaning they do both back-end and front-end.

Back-end

Back-end developers code in the languages and frameworks that run on SharePoint servers. Since SharePoint is a .Net platform you'll be coding with C# or VB.Net. SharePoint is heavily reliant on ASP.Net, specifically web forms, for much of it's functionality.

When developing custom business applications you'll either implement or will come across various .Net frameworks already in use. Some of the more common frameworks are LINQ, Entity Framework and the Windows Communication Framework but you'll probably encounter others as well.

Front-end

Front-end developers code in the languages and frameworks that run on a user's browser and most if not all will be open web standard non-vendor specific technologies that include html, css and javascript.

More advanced applications will require you to understand more advanced standards, technology and frameworks such as HTML5, CSS 3jQuery, REST services and AJAX for data exchange, JSON, SASS, LESS, Angular.js, Ember.js, Knockout.js and Bootstrap.js. That's just a small subset of technologies but they're some of the most you'll encounter as you develop for the front-end experience.

Patterns and Processes

The topic of architectural patterns and development processes usually concern software architects and project managers but it's important for developers to understand the basic concepts.

Patterns

Before starting on a new project you need a blueprint for how it's going to be built and that's where architectural patterns are all about. There's a multitude of well-established patterns that you can choose from and architects are experts at identifying when to use which. The Model-View-Controller (MVC) pattern is widely used in web application development as well as Model View ViewModel (MVVM) for many client-side frameworks such as Angular.js. Both frameworks focus on the separation of logic between the presentation, business and data layers. Many other patterns also implement the separation of layers within other types of applications and others focus on communication between different parts both internally, within the application, and externally among other applications and components.

Processes

It's important to have a plan for how the development will be done in order to deliver projects on time and minimize the potential for bugs and other problems and this is what software development methodologies are about. There are many types and one popular type is the agile development methodology. There are many types of agile methodologies and some of them include scrum, extreme programming and test-driven development. Developing in an iterative process, short meetings and a focus on testing are some of the important features in any agile methodology. There are many other development methodologies including the waterfall method which was used extensively before the advent of agile but is still used for some types of projects.

Conclusion

As you can see a SharePoint developer must be knowledgeable with many technologies, patterns and processes. Developers in general, as is the case with doctors for example, must keep up with new and emerging technologies on a continuing basis. This means that it's a lot of work to be a good SharePoint developer but if you are then you'll be in demand and command one of the highest rates in the tech industry as well as work on a wide variety of applications.