ソフトウェアエンジニアの複式生産性管理
この文書について
この文書は、ソフトウェアエンジニアの生産性(アウトプット)を、複式簿記のような仕組みで表現・管理できないだろうか、というアイディアを発散させているものである。
発散はさせているけど、まとまっていないし課題も山積みな感じである😑
概要
複式簿記のような仕組みで、ソフトウェアエンジニアの活動を表せないだろうか。
背景
社会人9年目にして、クラウド会計システムの開発に関わるようになって初めて複式簿記を学んで、シンプルながらよくできているなぁとその仕組にとても感動した。
一方で、ソフトウェアエンジニアとして、時にはチームリーダーやマネージャーとして働いていて、ソフトウェアエンジニアの生産性をうまいこと表したり管理したりできないだろうかとずっと考えていた。
そこでふと思いついた。複式簿記のような形でソフトウェアエンジニアの仕事(アウトプット)を表したり管理したりできないだろうか、と。
仕訳
とりあえず、やりたいことのイメージはこんな感じ:
ソフトウェアエンジニアは、工数を使ってソースコードを生み出す。
なおここで言う「ポイント」は、工数を表したりソースコードの価値を表したりできる便利なナニカ、みたいなイメージ。ファンクションポイントとかそういうのが近くなってくるのかな。
残業して頑張ったぞ!という時はこんな感じになってもいいかも:
技術的負債に目をつぶってスピード重視!というときはこんなイメージ:
一ヶ月後にはちゃんと技術的負債も返却している。エライ。
時には手戻りを生み出してしまうことも…:
ソフトウェアエンジニアのアウトプットはソースコードばかりではないのでドキュメント書く場合はこんな感じ:
会議にも出る!そして会議はきっと何かを生み出しているはず:
さて、ソースコードを生み出したはいいけど、それだけでは意味がない。ちゃんと売上につながってくれなければ!
というわけで売上につなげようとしてみた:
つなげてはみたものの、以下の課題がありそう
* 「工数のポイント = 売上のポイント」になってしまっている
* 売上を上げるためにソースコードが消えてしまう
というわけでこのままではダメそう、だけどまだこの先は考えておらず。。
売上は、ソースコード以外にもマーケティングとか営業とか、そもそものビジネスアイディアの質とか色々な要素が絡むので、この仕組に組み込むのはそもそも無理があるのかも知れない…と思いつつ、(少なくとも営利企業における多くの)ソフトウェアエンジニアの生産性は売上までつなげてこそ初めて本質をつくのではないか、という気もするので、できれば諦めたくないなぁ。
一方、工数とソースコードが同じポイントになっているけど、凄腕エンジニアが工数10かけて生み出す価値と、新人エンジニアが工数10かけて生み出す価値は異なるはずなので、そこもなんとかしなければ。。人によって、貸方に入力できる工数に変わるナニカが変わるのかな。例えば、凄腕エンジニアAさんは、一日に貸方ポイント500相当のことができるけど、新人エンジニアBさんは、一日の出力できる貸方ポイントは100、とか。
BS
「技術的負債」という言葉には「負債」という言葉が含まれているくらいだから、BSもうまいこと表せないだろうか。
すごいざっくりしたイメージはこんな感じ:
ただここで言う「純資産」って、一体なんだろう。。上の例から引っ張ってくると、工数+残業、とかになるのかしら。
PL
PLもなんかできそうだけど、まだあまりイメージ湧いておらず。。ただ、上の例で出した「手戻り」はPLに載ってきそうな気がする。
データの自動取得
会計システムでは金融機関等からデータを自動的に取得してくれるので、同じように何かしらデータを自動取得しようと思ったら、うーん、なんだろう、Gitリポジトリからコミットした行数とかは取ってこれそうだけど。後は、他に何か工数管理システムとか使ってたらそこから工数が取れたり、カレンダーから会議の時間が取れたり、とかかなぁ。ドキュメント管理システムから書いたドキュメントとかも取れるかも?
派生した考察
このネタについて思いを巡らせている時、本気でこの仕組を運用しようと思ったら、とても片手間でできる作業じゃないよなぁ、なんて思ったりもした。そこから思ったのはこのアイディアは実現可能性が無さそう、ということではなくて、ソフトウェアエンジニアの生産性を管理しようと思ったら、それだけ大変なことなのではないか、ということ。会社の会計については経理の方がいたり公認会計士の方がいたりするように、ソフトウェアエンジニアの生産性管理にも専門家がいて、一つの独立した業務として扱う必要がある事柄なのではないか、なんて思ったりしたのであった。