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
- Delivery of assignments is completed for the beginning of the period
- The assignments as a whole, given to the Experts, cover the requirements of the business
- Any changes to assignments are clearly delivered
- The Experts are not over or under worked
- Completed assignments are received by the end of the period
- They manage queries, changes, late or incomplete assignments
- 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
- Assignments are relevent, appropriate and achievable
- They have access to Domain Information required
- They keep a track of changes made by either party
- Assignments are completed within the given two weeks
- They communicate issues to The Manager
- 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
- Provide an asyncronous, auditable process for agreeing/altering assignments
- Deliver assignments securely on time
- Provide up-to-date, offline available, Domain Information to the Expert so they can complete their assignments to the highest standard
- Ensure assignments and Domain Information are available offline and in patchy network areas
- Reduce chance of misunderstanding or human error requiring more Manager time to resolve
- 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
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
Description | Points |
---|---|
Project standup using starter app, build actions in GitHub and resource provision in Azure | 5 |
Domain events for assignments: create, update, change state etc | 21 |
Expert app event subscriber, API and database | 13 |
Display assignments in Expert app | 8 |
Propose assignments in Expert app | 13 |
Assignment agree/decline Manager app | 13 |
Total | 73 |
With Test/UAT at 25% | 91 |
Version 1 Total | 47 |
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