I have the occasion to integrate some teams of developers through 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?
- What 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 with 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!).
In an Online environment almost nothing changes, 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 wants one.
Here a little schema of a process/architecture that I suggest generally 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 both cases, this is the same problem: What are you doing if you:
- have to rollback your environment
- wish to 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 problem. 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 set up 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 the test (Thank you Microsoft ❤️)
What you have to install to 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 to virtualize Windows environments
#3 Execute command lines
The most powerful of developers and "administrators" is the command lines knowledge 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 licenses
- 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.)
Another 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 to automate:
- code coverage
- build the solution(s)
- deploy the solution(s) to specific environments (dev, stage, prod, etc.)
As an administrator, you wish to 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 these tools:
- SharePoint Online PowerShell: PowerShell module provided directly by Microsoft that allows 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 allows 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 😉