I have the occasion to integrate some teams of developers through of my different customer projects and jobs; often some of my teammates asked me:
- What are the basic tools that we have to use to begin well with the SharePoint developments?
- Which tools I should have to use to do...?
- I am not familiar with this way of working, how can I do it?
Based on my own experience, I am sharing you the tools in a "basic environment" of a SharePoint developer to work in the best conditions. In addition, because I am often working on two operating systems (Mac OS and Windows in this order 😁), I often look to find solution cross-platforms.
#1 A SharePoint environment
This is why I am convinced each developer should have his own development environment, like this they can:
- configuration what they want
- broke them environment
- delete what they want
without interrupting or disturb other developers.
On an On-Premise environment it was almost a prerequisite, but it was quite complex because it was necessary to install a virtual machine or worse, his own computer with a SharePoint installation 😣 (between us, a lot of developers do not know and do not care about how to install SharePoint Server, they just want to develop even if some basics are essential!).
On an Online environment almost nothing change, I would say it is more simple and really less expensive, if we are talking about SharePoint development only, of course, because a development environment is free and can be created by everyone who want one.
Here a little schema of a process/architecture what I suggest generally to implement to my customers and teammates:
Prerequisites Azure DevOps or other repository + CI/CD.
#2 Virtual environments
Some organizations provide a laptop, desktop and virtual machines to work and some other organizations not (bring your own device)... In the both of cases, this is the same problem: What are you doing if you:
- have to rollback your environment
- wish share your environment with another developer
- broke your environment
- have different projects/customers with different environments and program versions
- laptop does not work on Windows (Mac OS X, Linux, etc.)
Virtual environments allow you to avoid this kind of problems. Of course, if you want to work with virtual environments, you need a computer with sufficient configuration:
- 16 GB of RAM or more
- 500 GB of space disk or more
- 4 cores of virtual processors or more
- a laptop compatible with the virtualization
They are a long time ago, I was running SharePoint 2010 with a computer with 8 GB of RAM and 256 GB of disk (no SSD) and 2 cores.
One other reason why I like virtual machines, is because of the tests! Yes, how do you try some other browsers and platforms? If you have a Mac OS X (for example), you can test Safari and through your virtual machines, you can test Internet Explorer, Edge, Firefox and several versions of Windows or Linux (because the Windows versions can influence the behavior of your solution).
If someone asks himself "Yes, but setup all of these environments just for tests it is a little bit too much"... Yes you are right! This is why, Microsoft provides for the developers several environments for test (Thank you Microsoft ❤️)
What you have to install for virtualize your environment(s)? Here some solutions I am using:
- VirtualBox: for personal usage and because it is cross-platform
- VMware: the free version of VMware Player can be sufficient for testing, but for the developments, this solution can be quickly not sufficient
- Hyper-V: the must if you are working on Windows (available for free until Windows 8 🥰)
- Parallels: only on Mac OS X and not free if you want virtualize Windows environments
#3 Execute command lines
The most power of developers and "administrators" is the command lines knowledges to manage the environments!
Because all features that allow an administrator to manage his Microsoft 365 environment are not all available from the UI. Some examples?
- Add an App Catalog to a SharePoint site collection
- Create and add custom Site Script and Site Design
- Create public or private additional CDN
- Swap two site collections
- and some others...
You will can find the list of cmdlets in the official documentation here.
Sometimes, you have to perform several time-consuming tasks:
- Create users
- Assign licences
- Create SharePoint site collections
- Perform configurations
You can do them manually or you can create scripts that can do this for you. With this kind of approach you:
- win a lot of time to do something else
- avoid human errors
- keep a homogeneity (user license templates, configuration, etc.)
An other reason to use scripts is to automate the recursive tasks. You can execute the scripts via a trigger or schedule them.
As a developer, you wish automate:
- code coverage
- build the solution(s)
- deploy the solution(s) to specific environments (dev, stage, prod, etc.)
As an administrator, you wish automate:
- create of Microsoft objects (SharePoint site collections, AAD users, etc.)
- manage security (audit, apply security configuration, etc.)
To execute commands, you will need at least one of this tool:
- SharePoint Online PowerShell: PowerShell module provided directly by Microsoft that allow you to manage your SharePoint environment
- SharePoint PnP PowerShell: PowerShell module provided by the Pattern & Practices Community (PnP) managed by awesome Microsoft peoples that give their personal time to help the developers and administrators (thank you guys, you are the best ❤️)
- Office365-CLI: NPM package provided partially by the Pattern & Practices Community too, but mainly managed by Waldek (thank you ❤️)
- Azure CLI: a cross-platform solution provided directly by Microsoft that allow you to manage your Azure resources
In the next part, I will tell you more about useful applications I am using and how they will allow you to code easier, test your code and save you time.
Hoping this post will help you 😉