チームにいると頼りになるソフトウェアエンジニア
チームにいると頼りになるソフトウェアエンジニアのメモです。自分のロールモデルでもあります。私のキャリアはほぼウェブブラウザ開発一筋なので、その辺に生息している人たちを思い浮かべながら書いてます。思いついたら随時更新します。
コードマニア
コードやドキュメントを読むのが好きで、暇があれば適当なレビューに飛び入り参加したり、自分のプロジェクトとは関係ないコンポーネントもひたすら探検している。不穏なコードを見つけるとなんとリファクタリングもしてくれる。コードサーチがお友達。
やたらコードに詳しいので、何か分からないときはとりあえず聞きに行く。チームに一人いるとレビューが捗るし、コードベースも綺麗になる。コードマニアはコードベースを広く熟知している上に未知のコードに対する耐性も高いので、プロジェクトを移動してもすぐに活躍できる。
コードマニアの亜種にスペックマニアもいる。こちらはウェブやネットワークの仕様にやたら詳しい。仕様の抜け穴を見つけると興奮する。同じく身近に一人いると頼りになる。
マインスイーパ
コードに埋め込まれた地雷を自分から踏みに行く人。いつも気づくと地雷原の真っ只中にいる。個人的にマインスイーパと呼んでいる。チームに一人いると勝手にコーナーケースやセキュリティバグを踏み抜いてくれるので重宝する。気をつけないと雪だるま式にバグを抱えてメインタスクに帰ってこれなくなる。横で面白おかしく眺めているといつの間にか道連れにされるが、地雷の見つけ方を学べるのでついていくと良い。
同僚、不穏なバグを踏んでから詳細な design doc を書くまでの時間が圧倒的に早くて見習いたい
— nhiroki (@nhiroki_) August 8, 2018
突破力
依存関係や後方互換性が複雑に絡まっているプロジェクトにおいて、細かいことを気にせずとりあえず動く巨大なパッチを速攻で書き切ってレビューを投げてくるタイプの人。コードマニアやマインスイーパは細かいところが見えすぎて設計議論の段階で手が止まりがちだが、このタイプの人はとりあえず動くものを作って突破口を切り開いてくれる。パッチは荒削りだが叩き台として具体的な話を進められるようになる。見えていなかった問題点が見えるようになったり、実は簡単に解決できることに気づいたりする。
Chromium のような超巨大なモノリスでコードを書く場合は、こういう突破力のあるエンジニアが一人チームにいるとプロジェクトが一気に進む。特にプロジェクト初期の不確実性を減らす上で貴重な存在。
同僚のパッチ書く速度が異次元過ぎるし、既存実装がどんなに難解であってもそれを突き抜けてくる突破力のようなものを感じる
— nhiroki (@nhiroki_) April 27, 2018
レビューボット
コードレビューの返信速度が因果律を超越しており、レビューリクエストを投げる前に LGTM が返ってくる。ボットもしくは複数人のユニットではないかと疑われている。
このような人は例外的な存在だが、頼りになるソフトウェアエンジニアは概してチーム全体での生産性を意識しているので、他の人の作業を止めないよう素早くコードやドキュメントのレビューを返してくれる。その結果「レビューを早く返してくれる人」という信頼貯金が積み上がり、さらにレビューリクエストが舞い込んできてコードオーナーとしての地位が確立されていく。
haraken さん、コードレビュー速すぎて、レビューリクエストのメールを出す前に LGTM が返ってくる
— nhiroki (@nhiroki_) December 28, 2016
議論の推進者
ボールの所持者が曖昧になったメールスレッドに飛び込んできて、議論を前に押し進めてくれる人。既存参加者は停滞した議論をどうにかしたいと思いつつも話の進め方に窮していることが多いので、こういった第三者が現れると助かる。
これはどちらかというとリーダーシップの話なので、本記事で紹介している他のタイプとは性質が異なるかもしれない。チームメンバーからエスカレーションされたチームリードがこの役を担うのが一般的だが、別にリードに限らずこの役割をしっかり理解している他の人が飛び込んでくれても良い。この役割の人がいると、特にクロスチームなプロジェクトの議論を円滑に進めやすくなる。
その他
気づいたら追記します。