Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

プログラマーの小技力向上への道

f:id:tbpg:20170503004704p:plain

ある日の帰路。
システム開発の業界未経験で入社してきて1年ちょっと経った同僚と話しながら歩いていました。

同僚「自動化とか効率化とか、したらいいのはわかるのですが気づかずに見過ごしてしまいます。」
同僚「どうすれば身につきますか?」

というような相談を受けた。

その時は経験と視点云々とかいう話をしたのですが、
新しく人を採用する予定もあるし、文字に残すことにしました。

ここで話している内容を「目的達成のための手段の手数」に関する話題としてより抽象的にとらえます。
その上でこれを「小技力」と呼ぶこととします。

小技力とは?

目的達成のための手段を 小技力 と呼ぶことにします。
手段を多くもっている状態を小技力が高い、と呼ぶイメージです。

例えば、作業の過程で大量のリストを突き合わせる必要があった場合に
目視で確認せずに体裁を整えて diff コマンドで比較するようなケース。

例えば、似たようなIFのコードを大量に書く場合に手で書かずに
プログラムでコードを生成するケース。
(メタプロでいいケースもあるだろうけど)

このたぐいのテクニックは業務として指示されるわけではないので、
もともとそういった視点を持っていなくて、かつ一人で黙々と作業している場合は
気づかないこともあるでしょう。

このくらいあたりまえ!という方もいると思いますが、
即戦力ではない新人さんも含めて考えると あたりまえではない というケースもあるのではないでしょうか。
SIerの下請けにいた頃を思いおこすと自発的にこういったことをしている人のほうが少数派でした。
(私の経験範囲の話)

どうやって小技力を高めるか?

人から学ぶ

ペアプロするときに自分が持っていない小技を相手から学ぶことがあるでしょう。
逆もまた然り。ペアプロの恩恵の一つですね。

小技感度が低い人の場合は相手が小技を使っていること自体に気づかないケースもあるので
小技を使っているほうは 今何を考えて何をしているか話しながら行う とよさそうです。

情報共有の恩恵を得る

こういった小技の事例が Qiita:Team, esa, DocBase, Confluence, Kibela などの情報共有ツールに登録されていると
組織内の小技力が向上しそうです。
1回小技を伝授した際に パターン・ランゲージ などを用いて記事化しておけば
次の人に説明する際にその記事を使うことができるのでお得です。

Webの情報から学ぶ

より広い範囲でWebにこういった小技を公開してくれている人もいます。
そこから学ぶ機会もあるでしょう。

書籍から学ぶ

ちょっと古いですが、プロダクティブプログラマは小技が載った書籍の典型例でしょう。

プロダクティブ・プログラマ -プログラマのための生産性向上術 (THEORY/IN/PRACTICE)

プロダクティブ・プログラマ -プログラマのための生産性向上術 (THEORY/IN/PRACTICE)

視点を持つ

この作業はもっと楽にできないか?もっと正確にできないか?などの視点を持つことで
自分で小技を閃いたり、小技の有無を検索したりすることができるでしょう。

手札を増やす

小技の手札が増えるほど「このケースはこの小技が使える」というように
カバーできる範囲が広がります。
また小技の組み合わせでより多くの範囲をカバーすることもできます。

まとめ

個人レベルでの自発的な小技力の向上は

  • 学習範囲から得た知見を吸収して自分の手札にしていくこと
  • 手札が増えるとともに強化されていく視点
  • 閃きの向上による自己流の小技の発明

によると思います。

組織レベルに関しては小技を自分のものだけではなく
チーム・組織 のものと考え、口頭・情報共有で積極的にシェアしていく姿勢の人が
どの程度いるか、によるのではないかと思います。

口頭でシェアする際に「 熱をもって感動を伝えられるか? 」というのもポイントではないかと思っています。

「地道にやるとこんなに大変だと思うのだけど、こうやると・・・こんなに楽になるんですよ!」

みたいに目を輝かせて語れる人が先導者になる気質が強いのではないかなと思います。
相手の意欲を刺激できるかどうか、ですね。

魚を自分で釣って与えるのではなく、
魚の釣り方をシェアしていく姿勢と
魚の釣り方を覚える意欲を伝染させる気質

そんな気質を持った人財はプライスレス。