Road to Automation: Updates

Team collaboration must get a sense of each others’ whereabouts as quickly and accurately as possible. Usually, teams resort to recurrent meetings to get updates from each other.

But meetings are not always the best way for this scenario:

  • Meetings are synchronous, so everyone has to wait before continuing for the others to finish.
  • Especially when communicating verbally, it is difficult not to misinterpret each others’ words.
  • It is challenging to scale up the team size because that would amount to more meetings and more probable misinterpretation of the updates.
  • It is challenging to work as a distributed team where members can reside in different time zones.

Building on top of the experience to automate our product release process, we now automate the process to get daily and weekly updates from each other from exactly where work happens and consume them asynchronously at our own pace.

👀 where work happens

Instead of listening to what each other has to say about the work, we can look at the actual execution. Since we already use GitHub to collaborate, we can consume the various signals around PRs (pull requests) and issues.

An example of our daily update for the entire engineering organization:

13 PR/issues updates

  • ✔️ Done: 1
  • ⚠️ WIP: 4
  • 👀 Needs review: 8

LOCUS

snoke - (vxsl)

  • ⚠️ PR #1030 Deps/kepler sidegrade (vxsl)
    • 1 comment - (netlify[bot])
    • 4 updated commits

locussdk - (amy83762100)

  • 👀 PR #158 marketplace_datasets - pass cu, wl to’/market/subscription’ (amy83762100)
    • 2 updated commits
  • 👀 PR #157 get_aoi_dataset - add run_async option (amy83762100)
    • 1 updated commit

firstorder - (amy83762100)

  • 👀 PR #644 marketplace_datasets - get ‘cu’, ‘wl’ from query (amy83762100)
    • 1 comment - (woozyking)
    • 5 reviews - (woozyking, amy83762100, kevlabs)
    • 2 updated commits
  • 👀 PR #643 get_aoi_dataset - migrate get_aoi function from EnrichData to firstorder (amy83762100)
    • 1 updated commit

(more)

A member can scan through the updates and go to the PRs or issues they are interested in for more details. The updates allow us to gather insights and ask more informed questions to the relevant contributors.

Assisted curation

To help us sift through noises, we incorporate status symbols and what we have done in our release CLI by utilizing NLP models to label the PRs.

An example of our weekly digest (which naturally contains more information than the daily updates), with labelled changes:

30 PR/issues updates

  • ✔️ Done: 23
  • ⚠️ WIP: 4
  • 👀 Needs review: 3

LOCUS

locussdk - (divyselva)

OTHERS

  • 👀 Issue #156 get_aoi_dataset() timeout error (divyselva)

data-hub - (vikivanov)

ADDED

  • ✔️ PR #82 sftp - added paramiko to requirements and new image version (vikivanov)
  • ✔️ PR #81 sftp - added missing connector type to dag helper (vikivanov)

firstorder - (amy83762100, DoParkEQ)

FIXED

  • ✔️ PR #642 convert_geoid - fix bug - pass wrong payload to lambda function (amy83762100)

ADDED

  • ✔️ PR #635 marketplace search update (DoParkEQ)

snoke - (woozyking, vxsl, DoParkEQ)

CHANGED

  • ✔️ PR #1029 city - load locus.city demo as an iframe sidecar to the main page (woozyking)
  • ✔️ PR #1028 navbar - initialize wl/cu names on page load (vxsl)
  • ✔️ PR #1024 marketplace product/detail page update (DoParkEQ)

(more)

Other sources

To supplement concrete work progress and issues from GitHub, we also look at elective journals that some of our team members opt to record throughout their workdays (see our journal-bot project for more details.) The journals are an excellent way to understand each team member’s focus throughout the day.

On top of the journals, we also source information on who is on or to have upcoming vacations, so teams can proactively work around potential blocks without some members.

Vacations

Journals

KC

Did:

  • connection-hub - side connection dropdown selection

Doing:

  • lumen-table - test filtering options with virtualized table
  • connection-hub - new connection UI modal design
  • connection-hub - test each connection & fix small bugs
  • connection-hub - optimize state management

Erika

Did:

  • react-maps/LocusMap - only show MVT tile polygons that have data if possible #106
  • flood-maps - implement select locations #2
  • flood-maps open #1 & #2 PRs for review
  • kepler.gl - review [BUILD] v1.1.17 - custom build to avoid dependency conflicts #1
  • snoke - review [G2M] Deps/kepler sidegrade #1030
  • react-maps/LocusMap - create [WIP] LocusMap - fix cursor and set visible and pickable for Select layer; allow setting MVT polygon strokes to transparent for no data #106
    flood-maps - capitalize locations and close #2

Doing:

  • react-maps/LocusMap - implement onClick - later
  • react-maps/LocusMap - implement select data process - later
  • widget-studio/map-widget - create controller for MVT layer
  • widget-studio/map-widget - create controller for polygon GeoJSON layer in case we use province coordinates for GroupBy

(more)

Future roadmap

We already use this automated tool beyond the scope of daily and weekly team updates:

  • We have been using the updates tool to generate quarterly reports to capture all the work done by the team for audit purposes.
  • Similarly, we started to utilize the tool to generate yearly reports for our SR&ED (Scientific Research and Experimental Development) documentation and filing reference. As a result, we significantly cut down the cost to interview individual contributors who may or may not recollect what they have done during the past year.

As for the roadmap:

  • We want to add more sources, such as updates from Zeplin, Figma, Google Calendars, and many more, to balance between personal preferences of tools and channel relevant information back to a more common destination for everyone to ingest.
  • We are looking to enhance our NLP assistance to deduplicate between various sources to reduce similar journal and GitHub items. sim