$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

エンジニア立ち居振舞い: 分かりやすく依頼する・説明する

 お題「エンジニア立ち居振舞い」というお題を id:hitode909 くんが作っていたので書いてみる。

 コードを書く以外にいろいろとしているのだけど、その中の一つとして「分かりやすく依頼する・説明する」ということに時間を割いているので紹介。


 エンジニアとしてものづくりをしていると、いろんな人とのコミュニケーションが発生する。例えば、デザイナにデザインを依頼する、ディレクターに状況を報告する、他エンジニアにレビューを依頼する、他エンジニアにコードの意図を説明するなど。

 この時、相手が空気を読まなくとも文章の意図やお願いしたいことをすぐに理解できるように、できる限り分かりやすく文章を書くように心がけている。自分のことだけを考えていると、自分の時間がもったいなくて、さっと雑に書いてしまいがちだ。しかし、結局成果というのはチームで作るもので、チーム全体で一番時間を使わないようにしたい。そう考えると、一番背景を理解できている自分が、その背景を類推しなくても相手が分かるように説明し、相手の時間を無駄に奪わないようにするのが一番早い。

 もちろん、コミュニケーションは文章だけでなくても良いので、話すほうが早いと思ったら直接話しに行く。しかし、そのときも相手の時間を無駄に使わないように、何を話したいのかまず自分で文章にまとめてから話に行くようにしている。 話しかけるときは立ち居振る舞い: チームのエンジニアに話しかける - はこべにっき ♨にかかれている内容も気をつけたい。


 では、どうすれば分かりやすい文章を書けるようになるのか。

 方法の1つは自分の中でフォーマットを決めることだ。例えば

  • 作業を依頼するときは、なぜやりたいか(Why)、何をやってほしいか(What)、いつまでにやってほしいか(When)を必ず書く
  • レビュー依頼するときは、なぜこのPullRequestを送ったのか、このPullRequestで何をやったのか、逆に何をやらなかったのか(後回しにしたのか)、不安なところはどこなのかを伝える

など。

 さらに、とにかく文章を書きまくるという方法もある。僕はあまり文章がうまくないので、文章力をあげようととにかくブログを書くということをしている。ブログを書くと、背景知識のない人にも分かるように、相手のことをイメージして書くようになる。そのため、徐々に徐々にではあるが、相手に伝わりやすい文章を書けるようになってくる。これを続けていくと、コード中のコメントや、ドキュメントも分かりやすく書けるようになってくるのでおすすめ。


 以上、僕のコードを書くこと以外のエンジニア立ち振舞でした。

なぜ最近コーチングや人間の学習モデルの勉強をしているのか

 最近以下のようにコーチングや人間の学習モデルの勉強をしている。

 そこで、自分の考えをまとめるためにも、なぜ最近コーチングや人間の学習モデルの勉強をしているか書いてみようと思う。


 最近、株式会社はてなという会社で、シニアエンジニアというポジションに付いた。シニアエンジニアは、数人のエンジニアのメンターとして、目標設定・1on1面談・評価などを行うポジションだ。また、社内のエンジニアの一つのロールモデルとなれるような態度を求められる。

 このポジションになった時に、まず初めに考えたことは、このポジションとして求められていることは何なのかということだった。考えた結果、数人のエンジニアのメンターとなるということは、はてなとして社会に価値を届けるための技術力を会社全体で向上させるために、「自分の数人のメンティーの成長に責任を持つ」ことが求められていることなのではないか、という結論に至った。

 この考えに至った時に、ではどのように技術力を高めてもらうかを考えてみた。現在技術力というのは非常に細分化されており、メンティーが持っている技術を全て自分で吸収し、適したアドバイスをすることはできない。そう考えると、その人自身に自分の強みや弱みを発見してもらい、自主的にモチベーションを持って、技術力を高めてもらうしかないと考えた。


 以上のことを考えた結果、僕は単なるエンジニアとしての技術を高めるのではなく、人間の学習モデルやモチベーションに関する理論、そしてその人自身に課題を発見してもらい改善する手助けをするコーチングという分野を学習することが良いと考えた。これが最近コーチングや学習モデルなどを勉強し始めた理由である。

 今のところ、コーチングに関しては「ザ・コーチ」を読み終え、現在「コーチングのすべて」という本を読み始めている。また、「コーチングの基本」「コーチング・バイブル」あたりがさらに気になっている。学習モデルについては、「リファクタリング・ウェットウェア」を読み終え、さらに「職場が生きる人が育つ経験学習入門」などが気になっている。このあたりを今後は勉強していきたい。

 ちなみにエンジニアから離れるつもりはまったくなく、並行してエンジニアリングについても学習を進めていくつもりである。しかし、流行りモノを勉強しながら組織周りの勉強をするのは大変なので、どちらかといえば賞味期限の長い基礎的な力をもう一度学習しようかと思っている。このあたりは、「やさしいコンピュータ科学」読んだ - $shibayu36->blog; にも書いていて、次は「珠玉のプログラミング」などでアルゴリズムに関する知識をつけたり、「理論から学ぶデータベース実践入門」でデータベースの理論をもう一度学び直したりしようと思う。


 僕はもともとエンジニアリングにも興味があったが、他にも人の行動や組織行動についても興味があった。ポジション的に人を見るところになったこともあるので、エンジニアリングを怠らないようにしつつ、今後は組織に関して片足を突っ込んで行きたいと思う。

[asin:B00CJ5F3J2:detail]

【2016/11/11 11:50追記】

なぜ最近コーチングや人間の学習モデルの勉強をしているのか - $shibayu36->blog;

個人的に、喋るマネジャーが苦手で、聞くマネジャーとの方がやりやすいと思っていたけど、コーチングっていうのはそういう方向のものなのだろうか。いかにも指示っぽい名前で敬遠してたけど興味でてきた。/なるほど

2016/11/11 11:36
b.hatena.ne.jp

このようなコメントがありましたので補足します。喋るマネジャー、聴くマネジャーという文脈にマッチしているかは不明ですが、能動的にこちらからアドバイスするような教え方は、ティーチングと言われていて、コーチングとはまた別の分野になりそうです。コーチングの説明はいろいろありますが、

  • コーチングは、クライアントの問題解決や、意思決定、あるいは目標達成を助けるだけでなく、自律的に学習する能力を育て、個人の成長を促すもの
  • コーチは答えを与えるより、質問をする

ということが言われていて、「質問をして聴くことで相手に気づきを与える」技術と言えそうです。 > id:hush_puppy

AMPについてのコンテンツ消費者としての感想メモ

昨日、「AMPが導入された結果、現時点ではモバイルのブラウズ体験が大きく損なわれてるのですが、そう感じるのは僕だけでしょうか」とTwitterでつぶやいたら、いろいろ反応があり、いろんな観点を知ることが出来たのでメモしておく。なお、自分自身はまだAMPのコンテンツを実装したわけではなので、開発者の知識はなく、ただのコンテンツ消費者としての知識しかない。開発している人から見るとまた違った見え方があるかもしれない。

コンテンツ消費者側のメリット・デメリットという観点

  • AMPによるコンテンツ消費者側のメリットは速度面だが、モバイルを利用していた時に現時点では速度に困っていなかったので、自分はメリットを享受できていない
  • 現時点では、いろんな理由によりユーザ体験が損なわれている部分がある
  • ユーザ体験が損なわれている例としては、プラットフォームの問題とコンテンツ制作側の問題の両方がある
    • プラットフォームの問題 : ブラウザバックすると変なところに戻ったり、閉じるボタンを押すとタブ自体閉じてしまうときがあるなど
    • コンテンツ制作側の問題 : 開発者側がうまくコーディングが出来ていないなどの理由で、画像や動画など一部コンテンツが見えなくなってしまうなど
  • 現時点で自分の環境では、速度が向上するというメリットよりも、ユーザ体験が損なわれる(そもそもコンテンツが見れないなど)というデメリットのほうが大きく感じられる

過渡期の問題であるという観点

  • しかし、今は過渡期ということもあるので、ユーザ体験が損なわれるのは今だけかもしれない
  • もし、AMPのコンテンツを構築すること自体が難しかったり、標準ページとAMP用ページの二重管理が難しかったりと、AMPの根本的な難しさが一定以上だと、過渡期という問題だけでは済まないかもしれない

サービスによっては必要ないという観点

  • サービスがそもそも一定の速度を保てているのならAMP対応は必要ないのかも
  • しかしグローバル展開するなら、地球の裏側でもまともなUIを提供したいので、AMPに乗っかることでレイテンシの観点で速度に大きく影響を与えるのかも

ノウハウが蓄積すれば改善されそうという観点

  • 例えばHTMLを与えると、それをAMPに変換してくれるモジュールがあれば問題ないとか

商業的メリットの観点

  • AMPに対応するとgoogle検索の位置的には良いところに載る
  • ただしこれはAMPのメリットというより、AMPに移行させるためのgoogle側が提供した餌ではありそう
  • 今後ずっと良いところに載る感じなのか気になる

まとめ

いろんな観点がある。まだ発展途上な部分はあり、みんな手探りでやってる感があるので、今後どうなるのか気になった。

しかし、何かが変化することはインターネットが良くなるためのチャンスでもあると思うので、試したら細かいことでもどんど?フィードバックすると良くなりそうという印象も受けた。下のようなTweetもあったし、気軽に日本語でレポートしたら良さそう。



Twitterのログ

会話したり、いろんな意見を書いてくれた人のログを貼っておく。