donbonifacio / feedback360

0 stars 0 forks source link

Proof of concept #1

Open donbonifacio opened 6 years ago

donbonifacio commented 6 years ago

The is a RFC for a CLI application that will register and process performance data points. It will be able to handle several types of data points and information about developers.

The application will also generate html files with reports about these data points. It will generate a full file with everything, and a file per developer. This developer file will have his performance evaluations, feedback and history. And will be easy to compare his evaluation with the evaluation average per area and per role, thus showing how he stacks against his peers.

The app will have work with files and rely on a git repo for storage. But should have abstractions that allow extending this in the future.

Models

Areas

There will be a config file that defines the possible areas of intervention of a developer.

[{"area": "fullstack"},
 {"area": "frontend"},
 {"area": "backend"},
 {"area": "quality"}]

Roles

There will be a config file that defines the possible roles that a developer may have.

[{"role": "Eng I"},
 {"role": "Eng II"}]

Data point definition

This will be a config file that categorizes several data points. Developers will have specific entries for each data point.

[{
  "type": "1on1",
  "metrics": [
    {"name": "learning"},
    {"name": "comfortZone"},
    {"name": "recognition"},
    {"name": "productivity"},
    {"name": "satisfaction"},
  ]
},
{
  "type": "quartelyPeerEvaluation",
  "metrics": [
     {"name": "softSkills"},
     {"name": "hardSkills"},
     ...
  ]
}]

Developer definition

{
  "id": "pedro.santos",
  "name": "Pedro Santos",
  "role": "Eng I",
  "area": "fullstack"
  ""
}

Data point definition

{
  "developer": "pedro.santos",
  "from": "someone.else",
  "timestamp": 1244,
  "type": "1on1",
  "detail": {
     "satisfaction": 123,
     ...
  }
}

API

The application will have a cli interface that will allow the import of data points.

performance360 register 1on1 pedro.santos learning=8 satisfaction=7 ...
performance360 register quartelyPeerEvaluation pedro.santos from=another.developer softSkills=8 hardSkills=7 ...

This cli is not that great if we also want to add textual feedback. Maybe having a simple app for this?

It could also have an import operation from a file. We could have some google forms templates and import from that.

Output

Running something like:

performance360 generate

Would generate all the global and per developer pages. It would generate json files with just the required data and somehow have a react web app that consumes that and shows the information. It should use a radar style component to show data points: http://www.chartjs.org/docs/latest/charts/radar.html

Also use something like boostrap.

Tech stack

Not clear yet on what should be the tech stack.

jqmtor commented 6 years ago

I am going to dump a few things that came to mind. The comments will be somewhat unstructured, so feel free to ask for further details.

That's all that came to mind after a quick read. Hope it helps :)

donbonifacio commented 6 years ago

πŸ‘ for changing name to feedback πŸ‘ for generativity

And yeah, the whole CLI thing is something to reconsider.