レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

だれでもできる低い生産性体験

会社で使うちょっとしたツールをphpで作ってます。

家に帰って、子供が寝静まった頃に酒飲みながらコーディングすると、当たり前だけどなかなかはかどりません。

「これって生産性の高い低いを体験できる方法だよなー」と。


飲んでる時、ハマったのはちょっと階層の深いメソッドで、DBへのクエリの結果の配列から絶対取れるはずのデータが取れないこと。

まず状況を把握するのが大変。
SQL単独で実行してみたらデータ取れてるし、引数も間違っていない。
我ながらしょうもないところで詰まったなとボンヤリ思いながら次の手が億劫でしょうがない。

ajaxコールしている先だからechoやprintしてもうまく全容がわからない。そこをうまく改善して全容を見分ける仕組みをつくることも面倒くさくて手が出せない。飲んでると思いつく気がしない。

エラーログも吐いてるけど、色々他のログも長々と出していて、読み解くのもちょっと一苦労。

もう少し詳細なテストコード書くか、と思い切るまで2時間ほどグルグル手軽なデバッグを試すが成果がでず、結果テストコードを書く気になった。元気ならすぐテストコードに着手するだろうのに。
テストコード書く気になった直後、猛烈な眠気に襲われ諦めて寝た。

そして、朝15分で解決した。

2次元配列の1個目の添字を設定せずに2個目の添字でアクセスしようとしていたというだけの、超単純なミスに2時間はめられたのだった。

そもそも、飲んでコーディングしなければ、処理とデータの状態をイメージしながらかけるのでこう言う単純ミスに引っかかることも避けられたはずだ。


新人の頃のコーディングは、こんな感じだったな。
残業して疲れた頭でやるのもこんな感じで、
本来やらなくていいこと、0秒の作業に工数を2時間も使ったわけだ。


開発者の生産性を考える時、その人に備わった能力パラメータとしての生産性もあるが、体調や環境といった要素に影響される集中力が指数関数的に関わって決まるんですよね。スポーツ選手のスコアに近い気がします。

こうやって体験すると、新人ばかりを100人集めても1人のスーパーエンジニアに勝てないことを改めて感じます。

集中できる環境や体調管理をどのように実践すれば良いのか、経営者として仕組みを考えることに結びつけることで2時間のロスを前向きに考えようと思います。

酒が飲めなければ、とことん疲れた深夜とかにコーディングすれば体験できますね。