Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stand-up v1 milestone drafted #5609

Closed
ackernaut opened this issue Nov 3, 2021 · 3 comments
Closed

Stand-up v1 milestone drafted #5609

ackernaut opened this issue Nov 3, 2021 · 3 comments

Comments

@ackernaut
Copy link
Member

ackernaut commented Nov 3, 2021

In which we stub out a stand-up v1 milestone…

This is a continuation of the output from #5460 and can be found in Notion

This issue is where I’ll start to break down the work. I’ll probably close it later, and we can point back to it from separate, better defined issues.

The goal is to ship a minimal v1 of a stand-up activity. I’ll attempt to stub out the work as issues that are meant to be both the smallest possible units of work, and deemed necessary to ship a first version. We’ll begin by learning, showing a prototype to 5 customers. We can fill in or update the acceptance criteria as we learn.


Opportunities to build a testable or workable UI little by little

  • Start with a prototype constrained to a v1 (exclude deferred elements) to gather feedback from 5 customers. This shouldn’t delay scoping or design work
  • Build an activity interface behind a feature flag where folks can add responses
  • Stubbed out an end-to-end experience behind a feature flag:
    • Stubbed new meeting view, stubbed meeting card, stubbed summary, stubbed meetings settings side sheet (see below in the distinct tasks)
    • No thread, no recurring, no chat notifications yet
  • Add the thread to the basic interface
  • Add recurring to the views (new meeting dialog options, meeting logic, meeting settings)
  • Updated the new meeting card
  • Updated the timeline summary card
  • Add chat notifications for Slack and Mattermost

Before we stub out the end-to-end experience

  • We would need a first version of the new meeting dialog New meeting flow UX: the MVP #5589 before we stubbed in the end-to-end experience of a stand-up behind a meeting flag

Key features to include in the first version

  • The stand-up is in the new meeting dialog
  • A single, editable prompt per one-time or recurring activity
  • The option to dial in recurring instances on a weekly rotation (i.e. set to recur any day of the work week)
  • Chat integrations, at least with Slack, but we should throw in Mattermost while we’re in there
  • One response card and associated thread per participant

Distinct tasks by category

This is the work required to ship a first version, but there are options on how to test working code behind a feature flag.

Stand-up prototype tested

What can we learn before we build? This shouldn’t block scoping work or the bulk of design work. Here we roughly take these actions as a research effort

Stand-up UX scoped

What are the AC in terms of user experience? What do the v1 designs include? Here we write a set of AC per bullet
See #5637

  • New meeting view scoped
    • Scoped the UX of a recurring series
    • Scoped the UX of adding a chat integration
  • Stand-up phase view scoped
  • Stand-up response card scoped
  • Stand-up thread scoped
  • Stand-up meeting card scoped
  • Stand-up summary card scoped
  • Stand-up chat notifications scoped
  • Meeting settings side sheet: editing an existing stand-up (changing the name, prompt, recurring settings, integration settings)

Stand-up UI designed

What does the first version look like? Here we design a view with various states for each bullet

Architecture scoped

How are the components defined in our system? Here we write out proposals for how to handle the following:

  • Scoped expected types to support a stand-up activity
  • Scoped expected mutations to support a stand-up activity
  • Scoped logic and patterns to support recurring stand-up activities

Added types

Do we have the necessary building blocks? Here we add each type to our codebase:

  • Team prompt activity (meeting with name, team, prompt, recurring settings, integration settings)
  • Respond phase
  • Respond phase prompt
  • Response card object
  • Recurring series object

Wrote mutations

Do we have the mutations needed to enable the interface? Here we write mutations for the following:

  • Team prompt activity (meeting)
    • Start
    • Complete
    • Delete (removes the meeting without a summary, for Parabol admins for now)
  • Team prompt activity editing
    • Edit name
    • Edit prompt
    • Edit recurring settings
    • Edit integration settings
  • Response card CRUD by author
  • Response reactions (participants can add/remove reactions)
  • Recurring series mutations

Built main phase UI without thread

How do we build a working phase interface? Here we make a first pass at the main UI:

  • Layout includes top bar with activity meta, prompt, and team hub
  • Adds a response card
  • Adds author input states on response card
  • Adds a grid of response cards
  • Adds empty state meta for past participants

Stubbed out the workflow

How can we test something scrappy, end to end, behind a feature flag? Here we ‘sketch’ in basic components quickly so that experience can be end to end:

  • Adds a feature flag that can be set by user. It adds the stubbed out version to the new meeting dialog. Once a meeting is created anybody on that team can see the meeting, the meeting card, and the summary
  • Stubs out the stand-up view in the new meeting dialog (can edit the prompt)
  • Stubs out the stand-up meeting card. Folks can join. Folks can navigate to meeting settings side sheet
  • Stubs out the stand-up summary card. Folks can navigate to a completed meeting and see the responses
  • Stubs out meeting settings side sheet (first pass: can edit name, prompt, or end the meeting)

Added stand-up thread UI

Let’s add threads to the interface

  • Adds thread to the interface

Added recurring logic

How does this open and close meetings automatically? We add this feature to the stubbed out experience:

  • Adds recurring logic to stand-up activity
  • Adds recurring settings UI to stand-up view in new meeting dialog
  • Adds recurring settings to meeting settings side sheet

Updated the dashboard UI

Here we can refine the dashboard components in order to ship:

  • Updates the meeting card to latest designs
  • Updates the summary card to the latest designs

Added chat integrations

Now that we having a working first version, let’s add the chat notifications! Here we add the settings UI and build the notifications themselves:

  • Adds inline chat integration settings component to new meeting dialog
  • Adds inline chat integration settings component to meeting settings side sheet
  • Adds a first created notification for chat (Slack / Mattermost)
  • Adds a participation reminder notification for chat (Slack / Mattermost)
  • Adds a summary reminder notification for chat (Slack / Mattermost)

Deferred, a set of possible enhancements

  • Moved check-ins behind a feature flag
  • Focus editing view: author editing opens in a focus view, allowing an Inspirations panel to open up in the future
    • Designed focus view UI
    • Added focus view UI
  • Inspiration sidebar: folks can see their work in integrated services to inspire their responses
    • Designed inspiration panel in the focus editing view
    • Added inspiration sidebar to stand-up focus editing view
  • Quick historical navigation: users can navigate to past instances with a control at the top of the activity view
  • Thread notifications: users are notified when somebody comments on their card or in a thread that they’ve participated in
    • Designed thread notifications
    • Added thread notifications
  • Can response with GIFs
    • Designed GIF responses
    • Added GIF responses
  • A separate activity can be added to the new meeting dialog. This can be a watercooler or icebreaker activity. Parabol can provide default lists. Folks can clone and crud their own lists. Each time the activity opens it pulls a random prompt from the list. Perhaps we make a complete cycle through known prompts before repeating
    • Prototype water cooler activity
    • Designed templated prompt lists
    • Scoped templated prompt lists
    • Shipped new activity type
@ackernaut
Copy link
Member Author

My next steps:

  • Clarified and edited here based on questions and feedback
  • Scoped the UX of the end-to-end experience as written AC
  • Wrote prototype issue and some next design issues
  • Planned next scrappy prototype feedback effort in Notion (and begin recruiting 5 customers)

@jordanh jordanh added this to To Prioritize in Sprint Board Dec 7, 2021
@jordanh jordanh moved this from To Prioritize to To Do in Sprint Board Dec 7, 2021
@ackernaut ackernaut self-assigned this Dec 14, 2021
@ackernaut ackernaut moved this from To Do to In Progress in Sprint Board Dec 14, 2021
@ackernaut
Copy link
Member Author

ackernaut commented Dec 15, 2021

  • Added feature flag (*FF) for beta users
  • Prototype created

New activity type created

Goal: beta users can start and end a team prompt activity; they see a card on the meetings view for open meetings

  • Discussed, decided, and documented recurring team prompt activity architecture
  • Created a team prompt activity data type
  • Created a start and end mutation for team prompt activity
  • Added a lo-fi placeholder start view in existing new meeting view behind the feature flag
  • Added a lo-fi placeholder meeting card to meetings view behind the feature flag; it has a control to trigger the close mutation
  • Designed the team prompt activity card
  • Refined UI for team prompt activity card

New activity prompt added

Goal: beta users can edit a prompt for the activity

  • Prompt data type added for team prompt activity
  • Lo-fi placeholder input added to new meeting view; beta users can edit prompt
  • Route created for team prompt activity; folks can visit the activity when opened and see a read-only prompt
  • Placeholder inline editing added to prompt within open team prompt activity
  • Single prompt editor designed for new meeting dialog
  • Refined UI for prompt editor; later it can be dropped into the start activity dialog

Response card added

Goal: beta users can add a response and see others respond on the grid

  • Created a response data type
  • Created a response mutation
  • Created a placeholder input for adding responses
  • Laid out a lo-fi placeholder grid of inputs
  • Designed response input & editing and layout grid
  • Refined UI of input, cards, grid, and activity view
  • Empty state for response grid designed (the UX to avoid a ghost town and encourage ongoing participation)
  • Empty state for response implemented and refined

Threads added

Goal: beta users can engage each respond card via its thread and reaction emoji

  • Responses can have their own thread object
  • Thread has original response card content at the top
  • Users can tap on a response to open a thread
  • Users can add comments or tasks in the thread
  • Reaction emoji added to response cards and response card top content
  • Designed reactions on cards and thread with response card content at top
  • Refined UI of thread and reaction components

Non-recurring chat notifications added

Goal: when opening an activity, beta users can select a channel to receive a notification

  • For non-recurring prompt activities, sends an open notification when opened
  • For non-recurring prompt activities, sends a closed notification when closed
  • Placeholder chat integration controls added to existing new meeting view

Recurrence

Goal: beta users can specify recurrence; open activities update automatically to reflect the pattern

  • Discussed, decided, and documented architecture for recurrence function
  • Data types updated to support recurring patterns
  • Mutations created to support recurring selections
  • Lo-fi placeholder recurrence controls added to the start meeting view
  • Refined UI of recurrence settings controls based on current designs (this is in flight); controls can be reused in the start activity dialog

Chat notifications added for recurrence

Goal: beta users can configure reminder and status notifications for chat

  • Discussed, decided, and documented general architecture of chat notification types
  • Recurring prompt chat notifications types created including a time to send
  • Added lo-fi placeholder UI to configure chat for recurring activities in existing new meeting view
  • Designed chat configuration in new meeting dialog (in progress)
  • Refined UI of chat configuration controls; can be reused in the start activity dialog

Summary card added

Goal: a summary card appears on the timeline per recurring instance of a team prompt activity

  • Designed IA and UI of timeline summary card for team prompt activity recurrences
  • Implemented team prompt activity recurrence timeline summary card

New meeting dialog added

Goal: folks can better see options when starting a new activity. Later stand-ups are added

  • MVP implemented. Dialog can open over current view context. Can be released before stand-ups
  • Team prompt activity view added to new meeting dialog behind the feature flag. Placeholder controls are refined to meet UX and UI if they weren’t already
  • Activity editing dialog can open over current view context
  • Designed activity settings dialog for open activities (as a variation of the start dialog)
  • Feature flag for stand-ups removed; folks can see the team prompt activity in the dialog
  • Feature flag created for check-in meetings; DB queried for active check-in users, they get to keep the feature

Dashboard notifications support team prompt activities

Goal: when in the Parabol dashboard, folks are re-engaged with stand-up discussions via in-app notifications

  • Designed the IA of each notification
    • When somebody initially responds (they add their card) to a stand-up I’m in
    • When somebody replies to my card in the thread
    • When somebody replies to a a thread I’m participating in
  • Discussed, decided, and documented updated architecture for notification types
  • Added a notification for replies to my response card
  • Added a notification for replies in a thread I’m participating in (I replied, too)
  • Designed the updates to the notification side sheet
  • Refined the UI of the notification, moving from a menu to a side sheet

Work activity side sheet added

Goal: behind a feature flag, Parabol can see activity on GitHub for ourselves in a team prompt activity

  • Discussed, decided, and documented UX & IA of work activity side sheet
  • Discussed, decided and documented architecture of work activity side sheet
  • Added feature flag for work activity side sheet in team prompt activities
  • Placeholder tab added for GitHub with items using lo-fi placeholder styles
  • Designed UI of work activity side sheet
  • Implemented refined UX and UI of work activity side sheet

@ackernaut ackernaut moved this from In Progress to Reviewer Review in Sprint Board Dec 17, 2021
@ackernaut ackernaut moved this from Reviewer Review to Done in Sprint Board Jan 18, 2022
@ackernaut
Copy link
Member Author

ackernaut commented Jan 18, 2022

Jotting down notes from talking with Matt, here’s his feedback on what would make a barebones MPV:

  • No start meeting dialog (use the existing start meeting pattern)
  • No editable prompt (we have a fixed prompt)
  • No recurrence (one-time activities only)
  • No day navigator (one-time activities only)
  • Editing responses inline - no inspirations or focus mode for editing
  • Yes to threads
  • Yes to reactji on cards
  • Meeting card is the way to end for now (no settings view in activity)
  • Closed meeting (can still edit TBD?)
  • Cheap summary card on the timeline upon ending one-time activity (points to closed meeting end-point)

Edit: I’m taking notes to amend an updated proposal including MVP considerations

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Sprint Board
  
Done
Archived in project
Development

No branches or pull requests

1 participant