Try   HackMD

Spec for PM tool

Proposed start date: January 17, 2022

Context

Current project management tools we've explored require a lot of effort (for devs) to input data, and then fail to make that data transparent across teams. This is demotivating for all teams involved and makes it hard to

  • provide or find clear direction (goals, priorities)
  • see where value is being created (positive feedback)
  • see where help is needed (blockers, slow moving tasks)

We need a way to get data about what people are doing, and display how that fits into short term planning, as well as long term goals and timelines.

It's critical that:

Input-for devs and project managers-is minimal, fast, as much as possible, automated via integration with our tools, and output is quick to load and creates good visability for and among all teams, stakeholders, and users. Devs should be able to view the basics from withing their development environment (in the shell)

Currently we need to have Gitlab and Github data aggregated in this tool. Other platforms might be included in the future.

The Experience

Developer Dashboard

For a dev, the tool should open to a clean, fast loading, and responsive 'dashboard'.

What devs should see (aka KPIs):

  • Their current + next tasks (expand to a searchable list of all issues)
  • Dependencies for their tasks:
    • a button to contact the person working on related/dependent tasks.
  • The status of dependencies:
    • color-code orange if a little late, red later
    • use time-since-last-updated,
      unless the due date is set, then use that
      unless 'blocked' status is set, then use that
  • A timeline of their own issues
    • use dates from gitlab, if set
    • otherwise drag-and-drop (more intuitive + doesn't require fake accuracy)
    • animated example https://blesk.io/assets/video/blesk-v2.mp4
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
  • A visual workload meter, to help grasp how busy this person is at a glanceand remind them to keep their issues up-to-date. Base this on how many things they are simultaniously working on, plus how much is up-coming.

Mockup of how the above elements could be laid out:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Design for visual workload meter:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

For developers it's important that the essence of the report is available through their coding env. A summary in text and simple ASCII charts would allow for this.

Team Dashboard

Similar to a dev, a team should have all the same metrics available to view. It should also be possible to message a team via an internal

Project Dashboard

For project managers and for interested devs: the project level view.

This should be a dashboard showing a cumulative view of each dev's bandwidth, timelines, and dependencies.

[TODO] mockup what dev and PM views could look like
[TODO] think about how to handle FUTURE issues so they are not oblivion

Issue view

  • Make issue dependencies obvious (really good search anywhere an issue needs to be found; this should be a single implementation that we can just drop anywhere)
    • any public issue from any external team should be possible to reference (prefix for the team, as search could be messy otherwise?)

Feedback needed: this is for linking cross-team issues. Does it sound like the right approach? And if it is, is it adequate or are there other features you'd want to see for cross-team work?

Document view

We need a functional and secure place to store:

  • passwords
  • monthly reviews
  • internal documentation
  • drafts

We can integrate HackMD, or use our own generic markdown editor.

  • Monthly reports + goals:
    • collect weekly reports from slack and import to a document for each user or group of users configured.
    • Formatting: document should automatically group reports, notes, and goals from the monthly review into a seperate section when the user signals that the monthly review occured.
    • Integration: goals from this monthly review should link to a gitlab milestone or issue, or else auto-create one.

Data Organization

1. Groups

Gitlab groups issues several different ways, then provides different charts/search terms based on the grouping option you used. They can't be used interchangably, nor is there a way to convert to another grouping option if you picked the wrong one.

These are the groups:

Group Features Note
Milestones burndown Milestones are lower price-tier Epics
Epics roadmap, timeline Ultimate feature. Epics are trees; they can contain other epics
Labels group issues (and epics) in boards
'related to' list

Epics (premium feature) are also trees (an epic can contain another epics).

In our solution all of these groups should be the same data structure. Viewing a burndown, roadmap, timeline, board, or list for a group of issues should be a secondary choice that can be configured.

2. Issue Boards

a useable dashboard makes issue boards redundant

Issue boards are a useful idea: filter the issues you want, and place them manually, like on a physical corkboard.

Gitlab implementation makes them pretty un-useable. Sorting can't be done automatically as an alternative, and filtering is limited (can't combine more than one user in a column, other random glitches).

This could be a killer feature, or a total dud, depending on UX. Show dependencies with lines, and groups with (color code? circles?) It would be something like a mind map, but across people and teams.

when would you use it? anytime you're feeling a bit at a loss for structure. When you want to see the landscape view in order to know what milestones to create, where you need more people, or what to prioritize. This feature needs more user testing and feedback than the rest, but if it's easy to use and intuitive enough, it could be incredible.

[TODO] critical: mockup what a good implementation could look like / examples

3. Prioritization

Other than monthly calls and written summaries, how can we represent the priority of different sub-projects?

A lot of live post-it-note 'algorithms' for this exist. Suggestion: Let people vote.

Pop up new projects on the board (constraint) and if someone is interested in it, let them rank:

  • their own level of knowledge about it / how long it woould take you
  • importance

If no one votes, it goes on the grooming list, which is what we work through at the weekly meeting.

NOTE: time / effort | Importantace / (tractable=certainty+ease/cost/ease/effort) / Neglectedness (will it happen without bothering with it, or will it get forgotten?)

Feedback would be great to get, also data and iterative user testing are particularly key in order to make this feature both effective and simple to use

Features

1. Reminders

  • MR reviews

    No one knows an MR needs review (unless the owner is very proactive).

    Current solution:

    • I check what MRs are not WIP, and haven't been touched in 2+ days, and contact the owner to ask if they need review or help
    • weekly reminder posts in Slack to look at the list of MRs (no specificity)

    Ideal solution:

    • ping the owner AND place MR in blocked status so it shows on timelines and in dependencies if there's no progress in (#?) days
  • Help

    Who can help with X issue?

    Current solution:

    • I sporadically check in with people, and try to make myself approachable, so if someone is unsure they tell me, and I can poke around for someone to help.

    Ideal solution:
    There will always be a need for human-to-human work here, but the following can help:

    • clarity about what issues are grouped
    • a clear model of the project structure, including dependencies and blocked status

Gitlab does not allow easy OR and AND selection.

Works:

SELECT issues WHERE assignee = 'John'

Does not work:

SELECT issues WHERE assignee = 'John' OR 'JANE'

does not. You can hack it by adding users in the URL. This should not be necessary.

There are other hiccups in Gitlab search, but it amounts to: implement the basics of SQL

The same implementation should be used in every place search is needed.

In Gitlab you must know the issue ID number to make a reference to a related issue, to link an issue or MR in a comment, or to link a merge request to an issue. This means you have to open a new window or tab, search for the issue, then copy the ID back into the reference field.

In our tool, wherever a reference is possible, the same fully functional search should be available.

Technical Implementation

This tool should be a minimal layer on top of whatever tool we use for issues and version control.

  • It should store an up-to-date copy of the content of issues, to enable fast search
  • It should be web based and lightweight (html+css only, for the most part)
  • It should allow JSON export / import of issues
  • integration:
    • Gitlab issue updates should be updated or mirrored in our tool
    • Timeline updates to issues should be pushed to Gitlab (start/end dates)
    • reminders for blocked issues, MRs, or other followups, should be configurable to go to any channel or user in Slack
    • The Documents feature should be able to collect data from a slack channel based on specified parameters (user ID, parent message, content filter, etc.)
  • Changelog integration???

What would changelog integration look like?

  • Cross-team

Cross-team is covered in dependencies; is there anything else which should be added to make this what you imagined?
people/teams should be able to BE blockers, and search "issues blocked by" person/team
Bandwidth can be determined by this
teams should also have 'dev' pages
assign to a team as well as a person, etc.
message a team

Structure and Data Architecture

This is part of prototyping / UX, so I'll leave it as a goal without details for now:

  • Make it clear what part is Dev job (gitlab, mostly) and what part is PM job (this tool)
    • what does this mean? all the structuring of tasks should be done by PMs. Data input from devs should be limited setting up what they are working on (indication of how long it will take?) and saying when they are done.
    • therefore inputs:
      • create a new branch (user + issue + repo)
      • merge request
      • commit
      • from slack: what do we want to get?

Stakeholders

GA
Didier (other managers)
Thomas Haessle
tech leads
ambassador of developers

Budget and Milestones

With Locastic as our development team, the following will be our budget and associated milestones.

Discovery workshop

20 to 40 hours | 1,200.00 to 2,400.00 EUR
With Locastic, Client and other required participants

The purpose of the workshop is to work together finding the main problems and needs.

From Locastic: 1 project manager, 1 designer.

  • Part 1: interview stakeholders, define business goals, information sharing
  • Part 2: task analysis. Exploring and designing potential business solutions

Product: Document with conclusions from the workshop that
serve as a basis for further development. (Goals, purpose,
problems, main features…)

User research

30 to 40 hours | 1,800.00 to 2,400.00EUR

After the workshop and setting up the project, we move to the research and analysis phase of the existing data we collected. Research methods lead to a better understanding of the problem area, scope and opportunity areas for meeting user’s needs.

From Locastic: 2 designers (full time)
Methods: quantitative research, qualitative user interviews

Wireframe

40 to 60 hours | 3,600.00 to 4,800.00 EUR

Create a low-fi/high fi wireframe with functional prototype to test and plan all possibilities and features for the end users. Wireframes are rough sketches of the user's interface which give a better insight in features, system, technology as well as
usability and business opportunities.

Wireframes are mandatory for each project because they reduce time, and predict errors in design and development. For each problem we solve in the wireframe phase we reduce development time for roughly 80%.

Prototype and user testing

20 to 30 hours | 1,200.00 to 1,800.00 EUR

After wireframing, it's mandatory to do a prototype to test the flow with the real user. Prototype as well allows us to precisely estimate all screens and time of development.

The prototype user testing has two versions:

  • Design 2 or more different scenarios for the same feature and test it out with end users (A/B testing)
  • Create a complete functional prototype to do a exploratory research with 5 to 10 users and to redesign all usability mistakes.

After the user testing designers redesign the current flow by users feedback. If necessary, round two of testing will be done.

Total

110 to 170 hours | 6,600.00 to 10,200.00 EUR

Total with 10% discount welcome discount:
110 to 170 hours | 5.940.00 to 9,180.00 EUR

Notes

### Integrated voice chat/meeting/availability?~

Perhaps based on what's open/active in gitlab ? but it must be light and fast and not require downloading another tool (this was the biggest obstical to using Tandem)

Slack Huddles probably replaces this.

To add

how to deal with many small tasks. Group? but this would be a long ongoing forever bar
how to deal with comment tasks on merge requests
color per project(?)
task weight needs to be distinct from length (maybe color?)
range of start/end