Github問題による生産性の測定


バグが押しつぶされるか、またはプル要求のためにどれくらいの時間がかかりますか?閉じるこの動画はお気に入りから削除されています.
大部分の組織は生産性と出力を改善したいです、しかし、少数の技術チームは生産性ボトルネックを発見するためにデータ駆動アプローチをとるようです.あなたが開発速度を改善するために探しているならば、2つの重要なメトリクスはあなたのチームがブロックされないのを助けることができました.ここではどのようにデータサイエンスのスマッシュを適用することができますどのようにリポジトリが行われ、どこで改善することができます視覚化する.

品質データの取得
最初の、そして最も難しい部分は、どんなデータ・サイエンティストであっても、あなたのデータの質を確実にするでしょう.一貫性を考慮することは特に重要です:一貫した形式で示されるデータセット全体の日付ですか?タグやラベルを一貫したルールの下で適用されている?データセットは繰り返し値、空の値、または一致しない型を含んでいますか?
あなたの倉庫が以前プロセスまたは標準を変えたならば、あなたが集めるデータの時間枠を考えてください.ラベル付け問題が恣意的に行われるならば、それらは役に立つ特徴でないかもしれません.データのクリーニングは、この記事の範囲外ですが、少なくとも、あなたはそれを収集することができます.
私は、どんな倉庫のためにでもデータを引くために、Github APIを使用する簡単なPython utilityを書きました.コマンドラインでこれを使用し、データをファイルに出力できます.それはlist repository issues endpoint (docs)を使用します.そして、それはおそらく混乱して、倉庫のために両方の問題とプル要求(PRS)を含みます.次のようにデータを取得します.
$ python fetch.py -h
usage: fetch.py [-h] [--token TOKEN] repository months
$ python fetch.py OWASP/wstg 24 > data.json

Github APIを使用すると標準化に関する心配が少なくなります.あなたが処理するいくつかのデータがある今、それはパンダと遊ぶ時間です.

パンダのプロット
あなたは、単純な計算とデータの可視化を行うには、Jupyter Notebookを使用することができます.
まず、ノートブックファイルを作成します.
touch stats.ipynb

お好みのIDEでファイルを開き、ブラウザでjupyter notebookを実行します.
最初のコードセルで、パンダをインポートし、データを読み込みます.
import pandas as pd

data = pd.read_json("data.json")
data

次に、そのセルを実行して、収集したデータのプレビューを確認できます.
パンダはwell-documentedデータ解析ライブラリです.少し想像力といくつかのキーワード検索では、リポジトリのメトリックのすべての種類を測定を開始することができます.このウォークスルーのために、ここでどのように計算することができますし、グラフや問題の数を示すグラフを作成するか、PRはあなたの倉庫に開いたままです.
新しいコードセルを作成し、Seriesの各項目について、作成された日付から閉じた日付を減算します.
duration = pd.Series(data.closed_at - data.created_at)
duration.describe()

Series.describe() は、これらのように見えるようないくつかの要約統計を示します.
count 514
mean 5 days 08:04:17.239299610
std 14 days 12:04:22.979308668
min 0 days 00:00:09
25% 0 days 00:47:46.250000
50% 0 days 06:18:47
75% 2 days 20:22:49.250000
max 102 days 20:56:30

mypy on GitHubはあなたのデータを視覚化するために指定されたプロットバックエンド(デフォルトでSeries.plot())を使用します.ヒストグラムは、問題時間を調べるのに便利です.
duration.apply(lambda x: x.days).plot(kind="hist")

これは、数日にわたる問題の頻度分布を表すヒストグラムをプロットします.これは、ほとんどの問題がどれくらいの時間を閉じるかを知ることができる一つの方法です.例えば、MYPYは10ヵ月以内に問題の多くとPRSを扱います.
matplotlib
それは他のリポジトリデータを可視化するのに興味深いでしょう.問題の著者またはレビューアとどのように迅速に解決されるの間に関係がありますか?特定のラベルの存在は、問題の期間について何かを予測しますか?

あなたは何を測定する目的
あなたはいくつかのデータ駆動超大国を持っている今、それは大きな責任と来ることを忘れないでください.何を測定するかを決定するだけではない場合は、それを測定するよりも重要ではない.
あなたが生産性向上に集まる数字を翻訳する方法を考えてください.たとえば、あなたのメトリックが問題を閉じている場合は、prsは速く、どのような行動をあなたのチームの右の行動を奨励するために取ることができますか?私は明確に定義されている問題を奨励する提案を提案し、小さな要求され、十分に含まれてスコープを持って、それらを理解し、レビューを容易にプル.
正確にあなたの倉庫のために測定をするために準備するために、あなたが調べたいかもしれないラベル、タグ、マイルストーンと他の特徴の一貫した標準を確立してください.意味のある結果は、より高品質のデータからより簡単に収集されていることを忘れないでください.
最後に、あなたのデータサイエンスのスキルを行使楽しい.誰が何を発見することができますし、次の改善知っている!