Expert Assignment

Building a web app for delivering assignments to Domain Experts

Actors

The Business

Makes critical business descisions based on data collected from many sources including Domain Expert knowledge

The Domain Information gathered from Experts gives it a competive edge and therefore must be securely guarded

The Manager

A small team responsible for agreeing and delivering assignments and providing support to the Experts

The Domain Expert

Responsible for proposing and completing assignments

Based in locations all over the world

Domain Information

Information required for the Business to make critical descisions

The domain is always in flux, updating existing information adding new information

The Experts use this information and their own Expertise to complete assignments, which are then added to the Domain Information

Problem

The Manager has hundreds of Experts to manage

They communicate via email to agree the assignments on a bi-weekly basis

They must ensure

  1. Delivery of assignments is completed for the beginning of the period
  2. The assignments as a whole, given to the Experts, cover the requirements of the business
  3. Any changes to assignments are clearly delivered
  4. The Experts are not over or under worked
  5. Completed assignments are received by the end of the period
  6. They manage queries, changes, late or incomplete assignments
  7. They manage availability of the Experts

The Domain Expert is based in locations all over the world, they work at different times

They must ensure

  1. Assignments are relevent, appropriate and achievable
  2. They have access to Domain Information required
  3. They keep a track of changes made by either party
  4. Assignments are completed within the given two weeks
  5. They communicate issues to The Manager
  6. They communicate availability to The Manager

If assignments are delivered late, or contain errors or other issues, the Experts time is not used efficiently and the Manager will have to field support requests

The Business requires more Domain Experts to gather reliable, comparable and broad cover statistics for analysis, in order to make business decisions accurately

As more Domain Experts are brought into the business, The Manager's role becomes time pressured

Delivery of the assignments needs to be more secure than current methods e.g. email

Assignments and Domain Information must be available offline or where network coverage is patchy

Goals

In order to relieve time pressure on the Manager and allow the hiring of more Domain Experts the following goals were identified

  1. Provide an asyncronous, auditable process for agreeing/altering assignments
  2. Deliver assignments securely on time
  3. Provide up-to-date, offline available, Domain Information to the Expert so they can complete their assignments to the highest standard
  4. Ensure assignments and Domain Information are available offline and in patchy network areas
  5. Reduce chance of misunderstanding or human error requiring more Manager time to resolve
  6. Manage the Domain Experts availability

Proposal

Create a web application to securely deliver the assignments to the Experts

The application must allow access to any Domain Information required for the assignment

It must also provide Domain Information to allow an Expert to propose assignments to the Manager

This will require additional functionality in the Managers system used to create assignments

Provide a way for Domain Experts to provide their availability to the Manager

Architecture

Building on the existing event sourced system, the new application needs to subscribe to the event stream, and will use existing apis for authentication and common Domain Information

The app will be written in Typescript for the UI and DonNetCore for the API

Use the existing Starter App Script which provides a templated application including the required components as NPM or Nuget packages

The app will be a PWA (Progressive Web Application) to allow for offline support on mobile and desktop

It will have its own database and api optimised for the Expert app

Diagram

shows how the new application fits in to the existing architecture

ManagerDBExpertDBManager UIExpert UIQueryQueryREST & WebSocketREST & WebSocketQueryQueryCommandCommandSubsSubsCommon DomainInformation DBManager ServicesExpert ServicesAuthSubsDomain& Event Store

Tasks

All tasks were identified and points added using planning poker

note: Domain Expert availability was removed from scope before estimation as it was suggested existing calendars could handle that task for the time being

DescriptionPoints
Project standup using starter app, build actions in GitHub and resource provision in Azure5
Domain events for assignments: create, update, change state etc21
Expert app event subscriber, API and database13
Display assignments in Expert app8
Propose assignments in Expert app13
Assignment agree/decline Manager app13
Total73
With Test/UAT at 25%91
Version 1 Total47
With Test/UAT at 25%59

note: This is for illustration, in reality tasks would be broken down futher than this

This allowed an estimate for completion based on the velocity of the developers given the tasks

91 points for a single developer at 3 points per day this would be ~30 days

note: for multiple developers we would need to work out which tasks could be done in parallel, which may mean a faster delivery but adds risk

The crossed out tasks were moved to a second release in order to get the app infront of the Experts as soon as possible

59 points for a single developer at 3 point per day would estimated ~20 days

This allowed for a shorter wait for the main benefit of secure distribution of assignments

It was estimated that delivery could be acheived for a version 1 within a month

Outcome

A single developer was assigned, and, after a round of UAT, the app was delivered on time and well received by users

The app was covered by unit tests and automated testing provided by a test engineer

Version 2 was delivered with additional requirements sometime after

Domain Expert availability remains outside of the application but will be addressed in the future as benefits have been identified

The success criteria was largely based on the capacity of the Manager to hire more Experts, the Expert team grew by 25% that year

Learned

Although all other apps in the system, e.g. Domain Information App, Manager App, are PWA's, they were mainly used as desktop web applications and not installed

The Expert app was widely installed and used as a PWA mobile/desktop app for offline support

The caching was good for offline support, but bad for updates

There was a lot of support calls on the second release of the app, with users unable to update or partial updates causing the app to crash

The caching strategy was changed to load the latest version when a network was available, subsequent updates went well

Added manual testing of the release, over and above the automated tests to help identify caching issues in future