Skip to content

Instantly share code, notes, and snippets.

@arsalan0c
Last active July 27, 2020 07:13
Show Gist options
  • Save arsalan0c/2c9ce2428c1f2a1a7152ba9122f0833b to your computer and use it in GitHub Desktop.
Save arsalan0c/2c9ce2428c1f2a1a7152ba9122f0833b to your computer and use it in GitHub Desktop.
A roadmap for developing applications for Microsoft Teams, for the beginning developer

A roadmap for developing applications for Microsoft Teams, for the beginning developer

General Approach

Make use of tools which help to save time and effort. This may mean using existing libraries and frameworks instead of looking to build things from scratch. For example, if you want to add a tab to your Teams application, search the web for HTML templates that are close to what you are looking for and modify them accordingly.

Assuming you are clear on what you want to build, go through the courses and resources in order to build what you want instead of doing them for their own sake. For example, instead of spending a 100 hours to complete a course and only then starting development, you can first pick out the portion that will give you enough knowledge to get started. You can then refer back to the materials and complement them as necessary. This will probably involve searching a lot of things up as you go along to help you understand everything that you need, and is part of the learning process!

Programming

Programming is involved in even the most basic of Teams applications. To gain general familiarity with writing programs,

learn about algorithms and data structures in JavaScript.

Progressing from the above, the following will equip you with the ability to build complex applications composed of multiple services as well as handling external data.
Learn about APIs and Microservices

Besides JavaScript, C# is another language that can be used to develop on the Teams platform. It is also supported on the .NET platform. The following are some resources that will help you get started:
.NET overview
.NET tutorial
Introduction to C#

Design

Visual design plays an important role for the Tabs, Task Modules and Adaptive Card extensibility options for Teams.

The following is a comprehensive resource for learning the principles of design:
HackDesign

For hands-on experience with the same technologies behind the Teams extensibility options:
Learn HTML, CSS and JavaScript with the Responsive Web Design Certification

Microsoft Certifications and Learning Paths

With foundational skills in hand, you will be in a great position to become familiar working with Microsoft technologies and services.

MS900: Microsoft 365 Fundamentals

The MS900 exam content gives a broad overview of Microsoft's cloud services and SaaS offerings (including Teams).

Exam

MS900 Exam

Practice Tests

MS365 Fundamentals MeasureUp Practice Tests

Learning Paths

Microsoft 365 Fundamentals Learning Path

Exam Prep Session

Microsoft 365 Fundamentals exam prep

Learning Path: Extend Microsoft Teams - Associate

This learning path tackles the unique capabilities of the Teams platform that you can leverage in your application.

Extend Microsoft Teams Learning Path

Learning Path: Manage identity and access in Azure Active Directory

Manage identity and access in Azure Active Directory

MS600: Building Applications and Solutions with Microsoft 365 Core Services

The MS600 exam content applies your foundational skills to give you practial experience in building applications using Microsoft services.

Prerequisite Knowledge

Exam

MS600 Exam

Learning Paths

Extend Microsoft 365 - Fundamental

Build Apps with Microsoft Graph - Associate

Implement Microsoft Identity - Associate

See Also

Annotating and Validating JSON: JSON Schema

Envisioning Solutions for Teams

Spending time upfront in planning out your solution can help to ensure that it is feasible, sustainable and addresses the intended use cases. Here are some considerations to keep in mind:

  • What is the environment of the customer - their industry vertical and the ecosystem they operate in?

    Knowing this will give you context and help you understand the unique challenges to be addressed. It may also help you guage if your solution can be generalized to serve more groups or whether it needs to be more specific.

  • How many users will the solution serve?

    Knowing this is an important aspect of designing applications for scale, security and reliability and weighing the tradeoff between them and the time or effort it would require.

  • Is there a preexisting solution outside of Teams?

    If so, it is important for end users that applications on Teams leverage the platform's unique capabilities to provide a value adding experience. Otherwise, they may simply use the solution outside of Teams.

  • What are the end-user collaboration scenarios served by the solution?

    Teams is centered around collaboration. Detailing such scenarios will ensure that your solution is a right fit for Teams.

  • What are some ways the solution can be integrated with other applications and services?

    This can be a powerful way to make your applications more convenient and useful by catering to a wider variety of usecases.

  • What is the success criteria?

  • How will the solution be sustainably monetized?

Resources

Microsoft 365 Developer Program

Teams Architecture Overview

Teams Platform Documentation

Tutorials and Code samples

Teams limits and specifications

Teams roadmap

Teams user feedback site

Teams Visual Studio Toolkit extension

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment