What is a Microsoft 365 Developer, and how to get started
Published: 2022-06-20 12:01:44


<!-- wp:paragraph -->
<p>Often, when I talk to other developers – outside of the the “Microsoft 365 sphere”, they have no idea what it means to be a “Microsoft 365 Developer”. So I thought I should write about it and try to give an overview of what we do.</p>
<!-- /wp:paragraph -->
---
<!-- wp:heading -->
<h2>What does it mean to be a Microsoft 365 Developer?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>In a lot of aspects – its just like being any other type of developer. You write code, you create things, you use source control, you deploy stuff and so on. Where it differst from ‘regular development’ is that where you typically have a stack of technologies that you use to build a webiste or app of some sort from scratch - in Microsoft 365 you work with a lot of different products which all can be used as is. And the main task of the developer is to extend/build on top of the exisiting capabilites of these products.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>What even is Microsoft 365?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>If you are brand new to this area you might not have a clear picture of what Microsoft 365 is, so lets start there. Microsoft 365 (M365) is Microsofts productivity cloud. It is a collection of tools that you can use to work and collaborate with your colleagues. It includes the Office suite (Word, Excel, Power point), OneDrive, SharePoint and Teams.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>And then there is&nbsp;<em>Power Platform</em>, which is in the same sphere as M365, but still a little on its own. And then there is a logical connection from Power Platform to&nbsp;<em>Dynamics 365</em>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>And of course there is&nbsp;<em>Azure</em>&nbsp;– with Azure AD, and app registrations that play a big part in M365 development. To make it more confusing there are different development lifecycles and tools for a lot of these different products.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>So what do a Microsoft 365 developer typically do?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Work patterns and workflows will differ between companies – so even though a lot of companies use the same (M365) tools – they might want to use them differently. Thats why Microsoft supports all kinds of different ways to extend M365. It is possible to build custom apps that give you total control of the user experience, or you can extend existing functionallity with smaller changes/extensions.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>As I mentioned previously we typically “extend the capabilities of the products in the Microsoft 365 sphere”, or add new capabilites. Or we create the links between different M365 products so they can ‘talk to each other’.</p>
<!-- /wp:paragraph -->
---
<!-- wp:heading -->
<h2>How can you build on top of Microsoft 365?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>So this is where it gets fun – and also kind of overwhelming.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>SharePoint webparts, Teams apps, Teams extensions, Teams bots, SPfx apps, SPfx extensions, Office add ins, Power Apps (no code/low code), PCF components….. you might have heard of all of these, some of them, or none of them. As mentioned there are a lot of ways to build on top of Microsoft 365 and I’ll try to give you a simplified overview.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To do this lets divide Microsoft 365 into four main developer areas: SharePoint Online, Teams, Power Platform and Office.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>SharePoint Online</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>SharePoint is a collaboration tool that offers a simple way to create pages, lists and work on documents together. It is often used as an intranet solution, where you can find internal news, tools and documentation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>There are different ways to extend SharePoint. You can&nbsp;<a href="https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/overview-client-side-web-parts">crete webparts</a>&nbsp;(apps) and you&nbsp;<a href="https://docs.microsoft.com/en-us/sharepoint/dev/spfx/extensions/overview-extensions">can create extensions</a>. You can use the same framwork for these, and that is&nbsp;<a href="https://docs.microsoft.com/en-us/sharepoint/dev/spfx/sharepoint-framework-overview">SharePoint Framework</a>&nbsp;– also called SPfx for short. SPfx is a framwork for client side SharePoint development, and it uses JavaScript/TypeScript and React. There are tools and examples that will show you how to use something other than React if you prefer.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Teams</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Most people think of Teams as a meeting and chat tool – which is not wrong – but Teams is actually built on top of SharePoint as a collaboration tool - an easy way to work in teams and share documents, tasks etc.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>From a developer perspective – how do you extend Teams? You can&nbsp;<a href="https://docs.microsoft.com/en-us/learn/modules/intro-microsoft-teams-apps/2-microsoft-teams-apps">build apps</a>, embed a webpage in a&nbsp;<a href="https://docs.microsoft.com/en-us/learn/modules/embedded-web-experiences/">Teams tab</a>, create&nbsp;<a href="https://docs.microsoft.com/en-us/learn/modules/msteams-conversation-bots/">conversational bots</a>&nbsp;to solve different tasks, you can create&nbsp;<a href="https://docs.microsoft.com/en-us/learn/modules/msteams-messaging-extensions/">message extensions</a>, or collect user input with something that’s called ‘<a href="https://docs.microsoft.com/en-us/learn/modules/msteams-task-modules/">task modules</a>‘ (wich is basically pop-ups/modals). And you can connect to different services using&nbsp;<a href="https://docs.microsoft.com/en-us/learn/modules/msteams-webhooks-connectors/">webhooks or Office 365 connectors</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You can actually use&nbsp;<a href="https://docs.microsoft.com/en-us/microsoftteams/platform/sbs-gs-spfx?tabs=vscode%2Cviscode">SharePoint Framework to build apps for Teams</a>, or you can use the&nbsp;<a href="https://docs.microsoft.com/en-us/microsoftteams/platform/toolkit/visual-studio-code-overview">Teams toolkit</a>. The toolkit also <a href="https://devblogs.microsoft.com/visualstudio/build-apps-for-microsoft-teams-with-net/">supports development in .NET</a> if you are more comfortable backend.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Power Platform</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><strong>Power Apps</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Power apps is itself a tool for creating apps. It provides an easy no-code/low-code drag and drop solution to build apps. But you also have Power Apps Component framework that lets you create your own component that can be used inside a power app. These components can also be used inside Dynamics 365.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Power automate</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Power automate is a service to help you create workflows. This is also a low-code solution where you can drag and drop different steps together to create your flow. This is an easy way to get the different parts of M365 talking together.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Office</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Most people use the office suite and never conciders that it can be extended with add-ins. An <a href="https://docs.microsoft.com/en-us/office/dev/add-ins/overview/learning-path-beginner" target="_blank" rel="noreferrer noopener" title="Office add-in is almost like a miniature webapp that embedded in the office clients">Office add-in is almost like a miniature webapp that embedded in the office clients</a>. </p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Azure</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ok, so Azure is strictly speaking not a part of Microsoft 365, but as a Microsoft 365 developer you should still be familiar with some parts of it. The most important part (from a M365 developer perspective) is <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app" target="_blank" rel="noreferrer noopener" title="Azure App registrations">Azure App registrations</a> which we use to grant the apps/extensions access to resources. Azure functions are also very useful, but in my personal definition of M365 Development I don’t consider Azure Functions part of it so I won’t cover that here. </p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Microsoft Graph</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Another tool you should know about if you want to get started with Microsoft 365 Development is <a href="https://docs.microsoft.com/en-us/graph/overview" target="_blank" rel="noreferrer noopener" title="Microsoft Graph">Microsoft Graph</a>. This is an API that you can use to get information from different parts of M365. This can be current user, documents, list elements and so on. You can also use it to edit/add information, <a href="https://elischei.com/upload-files-to-sharepoint-with-javascript-using-microsoft-graph/" target="_blank" rel="noreferrer noopener" title="upload files">upload files</a> ++. </p>
<!-- /wp:paragraph -->
---
<!-- wp:heading -->
<h2>How to get started as a Microsoft 365 developer?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>First you should <a href="https://developer.microsoft.com/en-us/microsoft-365/dev-program">sign up for the Microsoft 365 Developer program</a>. It is free and it will give you access to your own M365 developer tenant that you can use to test the apps/extensions that you build.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>When working with Power Apps you also&nbsp;<a href="https://powerapps.microsoft.com/en-us/developerplan/">need to get the Power Apps developer plan</a> &nbsp;(this is also free).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>And from there - start by following some guides/tutorials and just jump into it. I’ve added a lot of links to different resources in the previous sections, but I’ll also add a list of links in the end of this blogpost.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Frontend or backend</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>A lot of the M365 developer toolkits are offered for both .NET and JavaScript/TypeScript, but you don’t always have a choice. The best is probably to be comfortable in both worlds.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In my experience a lot of the M365 development are now client-side focused, and you can almost always find an example on how to do something in JavaScript/TypeScript. But since I’m a frontend developer I haven’t really looked for that many backend resources - so there might be many out there. I can only speak from my own experience and I will always choose TypeScript (or JavaScript) if I can – but I know enough C#/.NET to do small simple things if I absolutely have to. And that combination of skills works great for me.</p>
<!-- /wp:paragraph -->
---
<!-- wp:heading -->
<h2>Resources</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>I've previusly written a blogpost "<a href="https://elischei.com/a-collection-of-resources-for-microsoft-365-developers/" title="A collection of resources for Microsoft 365 Developers">A collection of resources for Microsoft 365 Developers</a>" so take a look at that too. But here are some good resources if you are completely new to this area of development.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li><a href="https://www.youtube.com/watch?v=2JWUr6zBtwg" target="_blank" rel="noreferrer noopener" title="Introduction to the Microsoft 365 Developer program">Introduction to the Microsoft 365 Developer program</a> (youtube video)</li><li><a href="https://developer.microsoft.com/en-us/microsoft-365/dev-program" target="_blank" rel="noreferrer noopener" title="Microsoft 365 Developer program">Microsoft 365 Developer program</a></li><li><a href="https://docs.microsoft.com/en-gb/learn/paths/m365-extend-fundamental/" target="_blank" rel="noreferrer noopener" title="Extend Microsoft 365 – Fundamental">Extend Microsoft 365 – Fundamental</a> (Microsoft Learn module)</li><li>I<a href="https://docs.microsoft.com/en-us/sharepoint/dev/spfx/sharepoint-framework-overview" target="_blank" rel="noreferrer noopener" title="ntroduction to SharePoint Framwork">ntroduction to SharePoint Framwork</a> (Microsoft docs)</li><li><a href="https://www.youtube.com/watch?v=EQuB8l4sccg&amp;list=PLWZJrkeLOrbblzC_s22pIBOotBV66erf-" title="Getting started with Teams app">Get started building Microsoft Teams apps (youtube course)</a></li><li><a href="https://elischei.com/category/m365dev/microsoft-teams/" target="_blank" rel="noreferrer noopener" title="My previous blogposts about Teams development">My previous blogposts about Teams development</a></li><li><a href="https://elischei.com/category/m365dev/sharepoint-online/" target="_blank" rel="noreferrer noopener" title="My previous blogposts about SharePoint development">My previous blogposts about SharePoint development</a></li><li><a href="https://elischei.com/a-comprehensive-guide-to-power-apps-component-framework-pcf-part-1-getting-started/" target="_blank" rel="noreferrer noopener" title="A comprehensive guide to PCF components">A comprehensive guide to PCF components</a></li></ul>
<!-- /wp:list -->
--------
Did you find this article usefull? [Follow me on twitter](https://twitter.com/acupof_dev) to be notified when I publish something new!

Also, if you have any feedback or questions, please let me know in the comments below. 🙂

Thank you for reading!

/Eli