production.log

株式会社リブセンスでエンジニアをやっている星直史のブログです。

「伝説の外資トップが説く リーダーの教科書」を読みました。

概要

会社の輪読会で「伝説の外資トップが説く リーダーの教科書」が題材となったので、読んだ感想をまとめます。

内容

この本は、下記の通り4章に分かれています。

  • 第1章 これからリーダーになる人へ 上司の心得
  • 第2章 リーダーとして歩き始めた人へ 上司としての認識
  • 第3章 リーダーシップをさらに磨きたい人へ 上司のスキル
  • 第4章 選ばれたリーダーをめざす人へ 上司の役割

見てわかるとおり、これからリーダーになる人(目指している人)〜現在リーダーの人を対象に、 心構え、リーダーのあるべき姿、スキル、役割について、一章につき14項目で述べられています。

冒頭で会社や組織は人で決まると書かれており、書いてある内容のほとんどは、 個人としての振る舞いや心構え、部下や組織の考え方など、人にフォーカスした内容でした。

感想

この本は、ビジネスパーソンとしての普遍的なスキル(マインド、考え方)を浅く広く紹介する内容でした。 そのため、1つ1つの項目についてそこまで深堀はせず、網羅的に重要であることが書かれています。

最初に読んだ感想は、だいたいが「それくらいのことはわかっている」「多くの内容は知っていた」という内容でした。 しかし、実践し、結果に残しているとは言えないと感じたのと、まだまだできていない部分はまだまだ多くあると痛感しました。
本の内容を何も考えずに単純に読んでいると「ほぇ〜〜〜、これが重要なんや〜(ハナホジー)」で終わると思います。

しかし、現在リーダーとして動いている人が、自分と組織の状態について

  • これまでしてきたこと
  • 現在行なっていること
  • これから行うべきこと

これら過去〜現在〜未来を頭に浮かべて、過去の経験や今巻き起こっている課題感と具体的なメンバーの顔、これから実行すべき課題を深く考えながら読むと、懐かしい気持ちになる一方、まだまだ自己研鑽が必要であることを再認識させられると思います。

そのため、学生や入社1年目といった、組織で働いた経験がない方にとっては、

  • 経験値の低さ
  • 視野の低さ
  • 視座の低さ
  • 自己認識能力の未発達
  • 客観的評価をする力の未発達

といった様々な理由から、深い洞察は得られないと思います。

逆に、自分の場合は、 ポテンシャル => メインプレイヤー => リーダー => マネージャー と、各役割を経験してきたので読み応えがありました。
本に書かれているスキルやマインドをそのまま学ぶというよりは、自分の経験や価値観などから洞察と学びを得るといった感じです。
数年後に読み返した時には、違った学びを得られるのではないかと思います。

その他個人的なことについて

人は誰しも褒められ、承認されることに喜びを感じる。
褒めと叱りの比重は8褒め2叱り

という記述があります。 ただ、自分は超絶ストイック人間なので、自分に対しては1褒め9叱りです。
また、ついつい「自分ができるんだから他の人もできるのでは?」という錯覚に陥ってしまうことが度々あり、 相手の力量やどのような人かを考えずに、過度な要求や、異常に高い期待値で結果を求めてしまうことが多々あり、クリティカルな問題だと痛感しました。

また、第1章はこれからリーダーになる人に向けた内容なのですが、要所要所に、自分(やチーム)がこれまで実行してきたことが書かれていて、懐かしく感じると共に、自分の行動は間違いではなかったと感じました。
とはいえ、自分のストイックさから来るスキル習得に対しての再現性の低さは頭が痛いだと感じました。
先述の通り、この本をポテンシャルに渡すだけだと何の学びも得られないまま読み終えてしまう可能性が高いので、

  • 本の内容
  • 自分の過去の経験や考え方
  • 行動を起こして実践できるようになるまでの道筋

これらを丁寧に共に理解しながら接していく必要があると感じました。

リーダー以上のポジションにいる方にとっては、深い洞察を得られると思うので、ぜひ一読を!

技術誌に寄稿しました!テーマ選定、執筆の流れと使ったツールの紹介

概要

技術評論社から発刊されているSoftware Designの2017年10月号に「サーバーレスで実現!素材集サービスを効率化した自動画像管理システムに学ぶ」というタイトルで寄稿しました!
この記事では、記事執筆にあたり、テーマ選定、記事執筆の全体的な流れ、使ったツールなどをまとめます。 gihyo.jp

テーマ選定: 想定読者に何を伝えるのか?

最初に意識したことは、想定読者を意識して、何をどのように伝えるべきかを強烈に考えさせられるということです。

  • 想定読者は初心者~上級者のどの層か
  • 読者は記事を読んだあとに何を得るのか
  • 記事を書く上で前提は何か
  • なぜこの記事を書き、何を伝えるのか

などなどです。上記の中でも個人的に、読者は記事を読んだあとに何を得るのかが、最も重要なのだと思います。
ここがしっかり固まっていると、記事執筆中に内容がブレることなくなると思います。記事の大枠などを考える前に、まずはここを抑えると良いと思います。

また、内容については、今回は依頼されたページ数は10ページでした。文字数にすると15,000文字にもなるので、少ししか触ったことがない技術について書くと中身が薄くなってしまう可能性があります。 そのため、寄稿する際は、実際に自分が経験し、ハマって、深く理解した内容でなければ、何も伝わらない記事になってしまうと思いました。

執筆の手順

読者に何を伝えるかが決まった後の執筆の手順は下記の通りです。

  1. 編集の方にコンタクト/アポを取る*1
  2. 自分に何が書けるかを伝える。ここで想定読者と題材を伝えるとGood
  3. 編集の方との記事の方向性の検討
  4. 原稿執筆
  5. 脱稿*2
  6. ゲラ*3受け取りと修正依頼
  7. 二校、三校....*4
  8. 校了*5
  9. 見本受け取り
  10. 出版

先述の想定読者と伝えることが決まって入れば、1~2はスムーズに進みます。
この手順の中で最も力がいる作業は3~5です。原稿執筆と最初の修正依頼です。

ブログと同じ感覚やろ(ハナホジー)って感じでやってたら夏休みの宿題状態になりました。
もともとブログで文章を書く方だったのと、記事の大枠(h1, h2レベル)は決まっていたので気楽に構えていたのですが、細かな文言や言葉の意味を調べたりしなければならないのは辛い作業でした。
なかでも、記事の導入部分の枕詞に何日も費やしました。記事の"はじめに"の部分は、読み手がこの先の記事を読みたくなる内容にしなければならないと感じたのと、これまでそのような文を書いたことがなかったので、そもそも書き方がわかりませんでした。
色々な本を参考にしてなんとか書けましたが、個人的には一番大変でした。

また、最初の修正は、原稿の文が悪ければ悪いほど、指摘が多くなります。
30項目くらい指摘があって、死にそうになりました。さらに、修正依頼を受けてから返信するまでの期間が結構短いです。数日というレベルだったりします。
本業の傍ら、記事を書いていると体力的しんどくなってきます。

ただ、ここを乗り切ると修正も軽微なものになってきますし、PDFの見た目もだんだん雑誌の記事らしくなってくるので、達成感も出てきます。

執筆に使ったツール類

Google Document

エンジニアの方はgithubで書かれているような印象(?)ですが、普通にGoogle Documentを使いました。 理由は下記の通りです。

  • 編集者とデザイナーの方はgithubが使えない可能性が高い
  • 修正が容易
  • コメントでやりとりできる
  • なんなら提案モードで直接修正してもらう

commitしてpushする手間もないし、個人的にはGoogle Documentで必要十分かと思います。
文自体はMarkdownで書きました。h1, h2, h3(#とか)とコード記述の方法(```で囲う)を最初に「こう書きます〜」っと定義しておけば、それを見て良い感じに(!)やっていただけます。
また、記事中に差し込む画像や図も、自分で凝った図を書くというよりは、ざっくり書いた図を基に「こうしてほしいです」とコメントをすれば、それを見て対応していただけたりします。餅は餅屋にですね!

Microsoft Word

Google Document使ってるのになんでワード!?ってなるかもしれませんが、Wordは文章の校閲に使います。
Wordの校閲機能は結構優秀で、ですます/である調の修正、助詞の欠落、常用漢字の使用などを注意してくれます。

これらは、編集者の方と打ち合わせした際に、結構細かく指定されます
また、自分はこういう作業が得意ではないので、機械的にやりました。*6

文章校閲の機能は書きの通り設定します。

メニューバー > Word > 環境設定 > 文章校正 > 文章校正 設定... f:id:watasihasitujidesu:20170926161401p:plain

設定ボタンを押すと、文法とスタイルの規則の設定 + 必要条件で、機械的にチェックすることが可能です。 プログラムと同様にtextlintを行うって感じですね。

まとめ

今回の記事では、原稿を書くまでのテーマ作りの話、校了までの大きな流れ、使ったツールの紹介でした。
校正などは、技術評論社の方に対応していただいたので、ツールに関しては最低限のもので済みました。*7
参考になれば幸いです。

自分の人生の目標の一つとして、単著で書籍を出版することがあります。
今回は雑誌でしたが、自分の寄稿した記事が掲載されるのは貴重な体験でした。
また、15,000文字書く大変さと、そこから推論できる書籍の原稿を書く場合の大変さもわかり、今後、一層精進する必要があると思いました。 また機会があれば積極的に書いていきたいと思います!

f:id:watasihasitujidesu:20170922131525j:plain f:id:watasihasitujidesu:20170922131616j:plain

*1:ここが一番難易度が高いか...

*2:原稿を編集の方に渡すこと

*3:分量やレイアウト調整のため、原稿をとりあえずPDFにしたもの

*4:文言などの調整の繰り返し

*5:校正が完了し,印刷しても差し支えない状態になること

*6:仕事でも使える技だと思います

*7:調べたらもっと便利そうなものがありそう。

開発マネージャーのオレが実践している科学的なストレスコントロール方法

背景

直近18ヶ月の間にメンバー => リーダー => マネージャーと一気に職位があがり、 ストレスの質の違いを実感し、うまくストレスを逃していかないと消耗戦になると感じたため、 ストレススコントロールについて模索してきました。

最近、ストレスコントロール術を確立してきた感があるため、現時点で行なっている方法を紹介します。

概要

これまで「ストレスは目に見えない何か」だと考えていましたが、知らない敵に対して攻略はできないので、科学的アプローチでストレスを殴ることにしました。

大きく分けると、以下の通りです。

  • 思考を変えるメンタル的なアプローチ
  • 脳内化学物質をコントロールするアプローチ

脳内化学物質をコントロールとか、いきなり危ないこと言ってますが、話を先に進めます。

思考を変えるメンタル的なアプローチ

ストレスを理解する

まずは敵を知るために、ストレスを感じるメカニズムと、対処方法について、科学的に証明された文献を元に理解します。

そこで、この本です。

健康心理学者のケリー・マクゴニガル氏の著書です。*1
何が良いって、著者が すごく綺麗 主張の裏付けとして、必ずデータをもって証明するために実験を繰り返していることです。 基本的なスタンスとしては、「ストレスは困難を乗り越えて強くなる為の試練というように考え方を変えるとストレスホルモンの分泌が抑えられるよ」という思考方法を変えることです。

“ストレスは悪だ"というステレオタイプに対して、その常識を否定していきます。
また、読むときの心持ちとして、疑ってかかると「ただの精神論かよ」で終わるかもしれませんが、肯定的な意見を持ちつつ読むと、認知バイアスがかかることを避けながら内容を理解できると思います。

また、ストレスを感じている時に怒っている体の状況についても書かれています。
人間は危険や恐怖を感じた時に「闘争・逃走本能」という危険を緊急回避するために、アドレナリンを放出し、全力で逃げようとします。現代社会で言う危険や恐怖は、仕事で失敗をする / プレゼンをする にあたると思います。

その時に、前述の「ストレスは困難を乗り越えて強くなる為の試練」というマインドを持つと、「チャレンジ反応」と呼ばれる状態に切り替わります。
簡単に言うと、"よし、やってやるぞ!"という状態です。
この状態になると、アドレナリンは放出されますが、恐怖は感じていない、いわゆる自信がある状態になります。

このように、ストレスの正体を分析した上で、「ではXという行動や気持ちを持つと結果がYになるのでは?」という仮説のもと、実験が行われているので、非常に説得力がありました。

脳内化学物質をコントロールするアプローチ

交感神経と副交感神経のバランスをとる

ストレスを感じると交感神経が優位になると書籍が学びました。
また、本屋で周りを見渡すと、ヨガ、瞑想、マインドフルネスといったカテゴリの本が多くみられることに気づき、 交感神経と副交感神経のバランスを取る方法について学んでいきました。

副交感神経を簡単な言葉で説明すると、心を鎮めリラックスした状態のときに活発になる神経です。
交感神経とどちらが活発な方が良いかではなく、両方のバランスが取れた状態がベストです。

また、初めに、自身の仮説として、ストレスフルな仕事や、食生活、睡眠時間が不規則だったりすると、副交感神経が優位になるタイミングが少なくなり、バランスが崩れていった結果、交感神経が優位な状態が続き、心身ともに休まらないのでは?という仮説を立てました。

その仮説を元に、副交感神経と改善するための行動を調べ、脳内神経伝達物質のセロトニン / メラトニンを排出すると優位になりやすいことを学びました。

以下はそれぞれ、脳内神経伝達物質を排出や、交感神経と副交感神経のバランスを整えるための行動です。

早寝早起き

朝に太陽の光を浴びるとセロトニンが排出されます。 セロトニンは交感神経を優位にさせることで身体を覚醒させます。メラトニンは副交感神経を優位にし、眠気を誘発させます。また起床と同時にメラトニンの排出が激減し、15時間前後から再度排出されます。

  • セロトニン => 日中の活動で重要となる
  • メラトニン => 夜間の活動で重要となる

といったところです。
また、セロトニンとメラトニンの安定して排出させることと、その効用を最大限高めるために、 日の出と同時に起きるように心がけています。

結果的に朝5時~6時の間に目覚め、21時~22時前後に眠るので生活のリズムも整います。

※主題とはズレますが、22時~2時の間に排出される成長ホルモンの効用も最大限得るために22時には眠っている状態を作っています。*2

瞑想をする

詳細な効果は前述の本や他の本に譲りますが、安全が確保された場所で、精神コントロールをすることで、 脳の海馬や眼窩前頭皮質が活発になり、「記憶」「意思や感情を調節」する機能がより発達していきます。

また、呼吸のコントロールを同時に行えるので、心拍数を下げ、より睡眠導入をしやすくしています。
瞑想-呼吸のコントロールは心拍変動という後述する効果もあるため、毎晩やっています。

筋トレ

瞑想のところで触れた心拍変動についてです。
人間は息を吸うと心臓の鼓動が早くなり、息を吐くと鼓動が遅くなります。
また、リラックスしているは、呼吸による心拍変動は高い状態なります。
逆に、緊張している時は常に心拍数が高いので心拍変動は低い状態になります。*3
この心拍変動が高い状態に素早く切り替えることで、リラックス状態、つまり副交感神経を優位にしやすくできます。

そして、心拍変動は鍛えることができます。
筋トレは、単純に運動 - 休息を繰り返し、心臓の鼓動を上下させることで、心拍変動の高い状態を作り、結果的に精神面にも効果をもたらします。

また、副次的な要素ですが、筋トレのあとにプロテインを飲むと、より筋肉が育つのですが、このプロテインには、必須アミノ酸が豊富に入っています。

必須アミノ酸については次で説明しますが、脳内神経伝達物質であるセロトニンと関わりがあります。

食生活

メラトニンを分泌するためにはセロトニンが必要です。
また、セロトニンはトリプトファンを摂取することで合成されます。
トリプトファンは必須アミノ酸です。

つまり、肉を大量に食べます(白目)
これは、以前紹介した食事管理と関連があります。
具体的な食生活については過去の記事に譲りますが、基本的に同じ食生活です。

良質な油と良質な肉を食え!

銭湯(サウナ) で温冷交換浴

銭湯でサウナと水風呂に交互に入る温冷交換浴をします。

これはサウナで体温を高めると脳が
脳「アイエエエエ!!!! アツイ!! アツイニゲテ!!」
というように、先ほど説明した「闘争・逃走本能」が活躍します。交感神経が活発になるわけですね。
そして、水風呂に入ることで、その「闘争・逃走本能」を押さえ込みます。

これをすると、心拍変動が高い状態になります。また、交感神経 <=> 副交感神経を上下させることで、自律神経調節機能が活性化され、日常生活でもうまく調節が効くようになります。
また、水風呂で締めることで副交感神経が優位な状態で家路につくことができます。つまり、睡眠導入の準備の準備になります。

また、スポーツジムにはサウナが併設されているので、トレーニング後には必ず実施しています。

まとめ

まずストレスを科学的に理解し、精神面(ソフト)と脳内化学物質の排出(ハード)の両面からアプローチをしています。
精神面については、意識変えてこっ!気持ち作ってこ!
ハード面については、脳内神経伝達物質を合成するために、睡眠と食事を土台にし、各調節機能を鍛えるために瞑想と筋トレを行う。筋トレで取る食事は脳内神経伝達物質のエサとなり、サウナは自律神経と睡眠にも影響してきます。

我ながら一貫性と整合性を兼ね備えた最強のルーチンだと思っています。*4
ジム代と食事の代がかかりますが、ここ数年で最も体調が良いので、継続してみようと思っています。

*1:同著者のスタンフォードのストレスを力に変える教科書も素晴らしい書籍です。

*2:睡眠のゴールデンタイムってやつですね

*3:若干ややこしいですね

*4:側から見るとただの奇行にしか見えないっぽいのですが、自分なりに考えた結果を自分の身体で証明しています

自分が実践しているタスク管理の方法を紹介

背景

会社のメンバーが、タイムマネジメント(個人のタスクの管理とか優先度付け)の方法について困っていたので、自分がどうしているのかまとめてみようと思った。

オレ流タイムマネジメントの概要

自分の脳内メモリは有限であり

  • シングルスレッドで動きたい(作業中は他のことを考えたくない)
  • 作業中のタスク以外のことは、なるべく自分の頭から隔離させたい(他に任せられるならブン投げたい)
  • 新たなタスクがきた場合のルールが明確である
  • タスクスイッチする時のルールが明確である

という思想の基、辿り着いたやりかた。

用意するもの

Trello 個人レベルならこれで十分やろ!

実際の手法

0. Trelloに下記Listを作成する

  • あとでやる
  • 次にやること
  • 急いでやるべきこと
  • 誰かにお願いしている / 待っているもの
  • 特定の日付にやるもの

1. タスクが降ってきたら迷わずTrelloに突っ込む。

  • その際、どのListにいれるべきかを考えてる。
  • Listの中にすでに存在する場合は、線形探索で優先度を決める。

2. 実際タスクの実行の優先度

2-1. 各リスト(横軸)の優先順位

特定の日付にやるもの >= 急いでやるべきこと >>>>>>>>>>>>>>>>>> 次にやること >>>> あとでやること

といった感じ。

特定の日付にやるもののうち、その特定の日付が開始日であって、締め切りまで期間があるのであれば、急いでやるべきことや、次にやることに移し替えている。 また、誰かにお願いしている / 待っているもの についても同様。自分にボールが移ったら優先度を決定する。

あとでやることに関しては、自己研鑽系のものが多い。

  • 個人プロジェクトを進める
  • 読書
  • ブログ書く
  • 英語学習

などなど。 また、あとでやることを意識して実行しないと、目の前のタスクをただこなすマンになってしまい、思い描いた成長につながらない可能性があるので、気をつける。

2-1-1. 誰かにお願いしている / 待っているもの について補足

誰かにお願いする系のタスクは、なるべく早く、相手に渡すことを意識する。 なぜなら、クリティカル・パスを短くすることに努めるべきだからだ。 自分の場合、相手が待っているタスクのボールを持っている場合、高確率で優先度高にして、処理をしている。

2-2. リスト内(縦軸)の優先順位

必ず上から順番にタスクを実行する。
これをしないと、どっからやろう….って考えてしまうので、タスクをスイッチするときに無駄な判断をしてしまうからだ。

3. その他

上司から依頼されたタスクについては、期待値のすり合わせをする。 ここでいう期待は、納期の話。いつまでに欲しいかを確認する。 そうすることで

上司「これよろしく〜(今日中に終わんだろ)」
自分「わかったやで〜(ヌルゲーだし、明日でええやろ)」

== 定時を迎えたころ ==
上司「終わった?」
自分「えっ」
上司「えっ」

みたいな事がなくなるからだ。

あと、上司からの依頼はなるべく、こまめに進捗の速報を伝える。

マネージャーを経験したことがある人ならわかると思うけど、相手に納期付きのタスクを任せた場合、何日経っても音沙汰がないと、とても不安になるからだ。
※特に、新人、アルバイトさん、一緒に仕事をしてから間もない相手などなど…

自分がタスクをお願いされたときも必ずこれを意識している。

まとめ

やりかたはこれだけ。
考え方としては、タスクがふってきたら、外部(Trello)に流し、無駄なことを考えないようにする。
そのために、カテゴリと優先度を決まったフレームワークで処理することによって、脳内メモリ消費を抑える。
あとは、仕事でも私生活でも同じツールとかやりかたを使うと早く身につくし、効率的に動くことができる。

エンジニア版 人を動かすだと感じた TeamGeekを読みました。

最近はコードより人とやりとりすることが多くなってきたので、TeadmGeekを読んでみました。
今回はその感想を書きたいと思います。

エンジニアが他人とうまくやっていく知見が詰まった本

TeadmGeekは、チームで仕事をするプログラマーに向けた本です。
また、他人とうまく仕事をするということにフォーカスを当てているので、プログラムの話は一切出てきません。

この本は6章立てです。

  • ソフトウェア開発はチームスポーツである
  • チームの文化を作る効用
  • リーダーの必要性
  • 良くない振る舞い(行動的な意味)を排除する方法
  • 開発チームが属する組織に対しての操作技法

一人のエンジニアとしての心構えとして有名な3本柱、HRT(謙虚、尊敬、信頼)の重要性や、
チーム文化の重要性、組織に対しての行動の仕方などが書いています。

HRT(謙虚、尊敬、信頼)

チームで開発を進めていくと衝突する、あらゆる人間関係は、謙虚、尊敬、信頼の欠如により、発生するものだと書かれています。
謙虚、尊敬、信頼とだけ聞くと、自らの意見を殺た方がよいのか?と思ったのですが、そういうことではなく、
チームとしてよりよい成果を得るための効率的なコミニュケーション方法だと学ぶことができます。

本のなかでは、実際の事例を基に、テクニックを活かすとこうなる!というような構成で書かれています。

この本を読んだ後に思ったのは、
HRTを知らない人(例えば超絶自分勝手な人)に対峙した場合に、一歩引いた視点で接することができるのではないかと思いました。
本書の狙い通り、なるべく衝突を回避すべく、落ち着いて誠実に対応できるでしょう。

チームには文化が必要

開発チームが共有する文化(経験・価値・目標)は、効率的なコミニュケーションや、エンジニアリングに必要ということはなんとなくわかっていて、本にも書いていたのですが、
発見があった点は、新しく入ってきたメンバーに対しての抵抗力にもなるというところでした。

文化がないチームに新しくメンバーが入ってきた場合、入ってきたばかりのメンバーの声が強ければ、
一瞬にしてその人価値観が文化になってしまう恐れがあると書かれていました。

発足してから時間が経ったチームには、文化を明文化する必要性が見えてきたのは良かったです。

チームにはリーダーが必要

この本では、リーダーに"なってしまった"人のための行動のコツについても書いてあります。 具体的には下記のことが書かれています。

  • 初期の心理状態
  • 陥りやすい悩み
  • 心構え
  • エンジニアとリーダーは仕事が違うこと
  • 行動のアンチパターン
  • 良い行動パターン

リーダーは、チームの触媒になるよう、目標を掲げたり、メンバーやチームの成功と幸せを考えたりと、
コードを書いていた時とは違う時間の使い方をしなければならないと、この本でも書いていました。

マネージャー向けに書かれた本でも書かれていたのは、以前のエントリでも学びましたが、
エンジニア向けに書かれたこの本でも同様のことが書かれていたので、妙な納得感がありました。

良くない振る舞い(行動的な意味)を排除する方法

リーダーからもう一歩上の視点になったことについても書かれていました。
良くない振る舞い(行動的な意味)を排除する方法*1と、
開発チームが属している組織に対しての行動についてです。

基本的には、HRTの精神で臨むことを前提として書かれています。
良くない振る舞いに対しては、相手の想いと伝え方を最大限考え、対処するのがベストプラクティスだと学べます。
また、良くない振る舞いをしている人であったとしても、基本的には自分の中での正義があるので、
そのベクトルを揃えるために、チームの文化も必要だと感じました。

組織に対しての行動

エンジニアは、より良いコードを書くことばかりに集中していてはダメだと書いています。
組織でうまく働くことについても書かれています。

本を読んで感じたのは、入社した瞬間の信頼貯金0の状態から、組織に信頼され、自分の意見や運命をコントロールできるポジションにつくまでの行動について書かれていると思いました。

エンジニアとしては、リリースよりもリファクタリングや技術的な解決に目が行きがちだが、
組織としては、サービスのローンチやユーザーに与えるインパクトの方が圧倒的に価値があることを、認めるべきと書かれています。

エンジニアは開発するだけが全てではなく、客観的(会社やビジネス側から見る視点)に見た事実を理解した上で、技術を活かすアプローチではないと、苦しくなると、だいぶ生々しいことが書かれています。

まとめ

この本はエンジニア版の人を動かす*2だと思いました。
HRTを基本原則として、チームで成果を出すための知見が詰まった本なので、ほぼ全てのエンジニアにお勧めできる本だと思います。

また、リーダーとしての視点や、エンジニア個人として組織内での動き方についても書かれているので、"チームで成果を出す"という点以外でも十分学びを得られる本だと思います。

*1:本の中では有害な人の追い出し方と書いていますが、有害な人=特定の個人と勘違いしやすいので、良くない振る舞い(行動的な意味)を排除する方法としています。

*2:D・カーネギー

部下育成の教科書 を読みました

先のエントリの本を読み終わったあと、 もっと具体的なマネージャー / リーダー層の人物像と行動が学びたいと思ったので、 部下育成の教科書を読みました。

読み終えたあとは本内容に対しての納得感があり、これからの行動の見直しを考えなければならないと思いました。
マネージャー / リーダー層になりたて方は、読んだあと、視野が一段高くなるでしょう。

メンバーをどのように育成すれば良いのか?と考えたときに読む本

この本の対象読者はマネージャー / リーダー層なのですが、 読んでみると、ビジネスパーソンほぼ全員が読んでも問題ありません。

この本は、5部構成で書かれています。

  1. ビジネスパーソンの段階を見極めるステージという考え方について
  2. 各ステージごとに、次のステージ上がるためのプロセス説明
  3. メンバーがステージを上がるときの育成支援のポイント
  4. メンバー同士が相互に育成支援するための環境作り
  5. マネージャー自身の成長について

内容をざっくりまとめると、
メンバーのステージは下記4ステージに分けられます。

  1. スターター(いわゆる新卒)
  2. プレイヤー(一人立ち)
  3. メインプレーヤー(一人前)
  4. リーディングプレーヤー(主力)

また、移行プロセスなどについても各ステージごとに書かれています。

  • 判断指標
  • このステージに移行するときのサイン
  • 移行までのプロセス
  • このステージでの伸ばす / 抑えるべき意識・行動

マネージャー / リーダー層にとっては、自分の周りのメンバーがどのステージにいて、何を伸ばし / 抑えれば次のステージにあがれるかについて、考えられるようになれるでしょう。
もし読者の方が評価面談を任せられている場合には、この本を参考にして、メンバーの道標を示すことができるでしょう。

また、冒頭で

読んでみると、ビジネスパーソンほぼ全員が読んでも問題ありません。

と書いたのは、メンバー自身もこの本を読んだあとに、
自分自身のステージの確認(認識)と、どのような行動をすれば次のステージにあがれるか?
について考えることができるのではないかと思うからです。

また、どの組織、業界においても、ステージは一つずつ上がっていくものだと、書いてあります。
成長速度(出世)が早い人は、各ステージへの入り口を素早く察知し、
行動の切り替えをうまくできる人なのだと学べます。

明日から自分はどのような行動をすれば良い?

この本を読んだだけでは、自分の立ち位置についての認識と、次のステージまでの道のりの確認が済んだだけです。
具体的に何をすれば良いのかが頭に描けたのであれば、実際に行動するのが吉です。

興味があってスイスイ読み進められたのもありますが、4~5時間くらいでサクッと読めます。

社会人であれば一読することをおすすめします。

部下を持ったら必ず読む「任せ方」の教科書 を読みました。

ひょんなことから、色々なメンバーにお願いをすることが増えたので、 部下を持ったら必ず読む「任せ方」の教科書を読みました。

今回は、この本を読んだ感想を書きます。

他者に依頼するときのコツが知りたい!と思ったときに読む本

この本の対象読者層は主に、マネージャー / リーダー層に向けて書かれた本です。
ただ、組織においては、どのポジションの人でも必ず、他者にお願いをすることがあると思いますので、
リーダー層以外の方も読んでおいて損はないと思います。

この本では、下記のことについて述べられています。

  • マネージャーとはどのような存在か
  • 具体的な任せ方
  • 良いマネージャーとは

こちらの本を読むと、任せ方はもとより、マネージャーとプレイヤーの違いやマネージャー役割が理解できます。

具体的な任せ方とは

タイトルにある通り、任せ方については、具体的に書かれているので、
サクッと頭に叩きこんで、実践あるのみです。

また、具体的ではない任せ方は、"ただの丸投げ"であると述べられています。
丸投げにならないための任せ方のポイントは下記の通りです。

  • 具体的かつ明確に指示を出す
  • 部下の判断の「ルール」を決める
  • 報告・連絡・相談は、上司から行う。
  • 期限と優先順位をハッキリと伝える。
  • 任せる作業の背景と要求レベルをハッキリ伝える。

この本では、2章が任せ方の説明なので、任せ方だけが知りたいのであれば、
2章だけ読めば事足りるでしょう。

任せ方以外で学べた点

この本のサブタイトルとして"「プレーイング・マネージャー」になってはいけない"
とあります。

自分がそうだったのですが、リーダー層になったばかりの人は、
リーダーとして、自分がどのような行動をとれば良いのかわからないことが多いです。

この本で学べたことは、任せ方はもちろんですが、
このバランス感覚が養われたのが最大の学びでした。

  • マネージャーとしての能力と、プレイヤーとしての能力は全く異なる点
  • 人には特性(得手不得手)があること
  • 人間の能力や時間は有限であり、自分でこなせる仕事量には限界があること。(他者に協力してもうことの理解)
  • プレーヤーに対して、求める点数の基準を80点(自分がプレーヤーのときの基準)を求めるべきではないこと。
  • プレーヤー全員の平均点を60点にすることを目標にすること

上記の観点は、プレーヤーのときにはなかった感覚なので、
プレーヤーの時の頭からマネージャー / リーダーの頭に切り替えをしなければならないと感じました。

また、アンチパターンとして、真逆のことをしていると、手が回らなくなると明言されています。

まとめ

新しくマネージャー / リーダー層になった方や、これからなる方にとっては、
マネージャー と プレーヤーのやるべきことの違いや、思考、行動の仕方をサクッと学べる良い本です。

平易な言葉が多く読みやすい本でした。2時間程度で全て読み終えることができるでしょう。

「ついていきたい」と思われるリーダーになる51の考え方 を読みました。

ひょんなことから、リーダーポジションになり、色々勉強してきたのですが、
いわゆる"理想の上司"的な人物像について書かれている本が多く、少し懐疑的になっていました。
そんな時に「ついていきたい」と思われるリーダーになる51の考え方という本を読んだので、
その感想を書きます。

リーダーは完璧でなければいけないのか?

この本の読者層は、マネージャー / リーダーなど、部下が一人でもいる方です。

先のエントリでも書きましたが、やはりリーダー像って、
(だいぶ抽象的ですが)

  • 仕事ができる
  • リーダーシップがある
  • プレゼンとか話がうまい
  • カリスマ性がある

などなど、完全無欠のビジネスパーソンが頭に浮かぶのですが、
この本は、「いやいや、そんなことないよ〜。頑張れば誰でもリーダーになれるよ〜」
っと、全てのリーダーが上記のようなリーダーではないということについて書かれています。

この本を読むと、人間力を高める(磨く)ことがリーダーの最低条件だなということが学べました。

  • 誠実
  • 信頼できる
  • 責任感がある
  • 人に優しい
  • 気配りができる

などなど、著者のエピソードを基に、いかに人間力が重要かについて書かれています。

この本を読んで、理想のリーダーになったる!!!!!!!といった感じで、
鼻息を荒くして行動していたのですが、こういうリーダーもいるということが学べました。

これまで、自分のことばかり考えていたなぁと反省したのと、
自分一人ではなく、メンバーと協力して大きな仕事をしていくのが重要だと気付きが得られました。

上司のルール を読みました。

ひょんなことから、リーダーポジションについたので、
まずは、理想のリーダー像を学ぶことを目的に 上司のルールという本を読みました。

今回はその感想を書きます。

理想の上司がとる行動とは?

この本の対象読者は、"1人でも部下ができた人"です。

この本は、2部構成です。

  1. 部下を育てる時のルール
  2. 上司力を磨くルール

全100ルールが1ルールごとに見開きで書かれているのと、 あまり前後関係がないので、隙間時間に読むのに最適です。

内容としては、リーダーはどのような人格の人なのか? という点について、それをルールとして書かれています。

例えば、下記のルールがあります。

  • 褒め、励ます
  • チームのために戦う
  • 懸命に働く
  • 会社の目的を忘れない

おそらく誰しも、ぼやっとした"理想の上司像"があると思いますが、 その人物像の行動や思想を全て明文化したのがこの本です。

ここに書かれているルールを全て実践できている人は、圧倒的な信頼を得ているんだろうなと想像できます。

一定の期間で、この本のルールを鑑みて、振り返りをしていけば、 おのずと、模範となるマネージャー / リーダーになれるのではないのかと思います。

人を動かす を読みました。

色々な人と接する機会が増えたので、今更ながら
人を動かすを読みました。
今回はその感想を書きます。

人と接するときの基本思想が学べる一冊

対象読者は読者は人類全員です。

この本は、人と接するときの基本思想が学べる一冊です。 議論の最中に相手を論破しにいく行為は愚の骨頂であり、なんの価値も生まないことや、
傾聴力を上げるための方法論が書かれています。
また、タイトルの通り、人を動かす(やる気にさせる / 交渉する / 結婚生活をうまくいかせる / 人に頼み事をする)ときに有効な接し方も書かれているので、
会話の場面ごとに接し方を考えて行動するとうまく物事を運ぶことができるでしょう。

社会人であれば必読の一冊であることは間違いありません。

CircleCIで回しているRspecのテストを40%高速化しました

タイトルの通り、CirclCIで回しているテストを40%高速化した話をします。

うちの会社では、342files, 27300examples強を回しており、テスト時間が肥大化傾向にありました。
そこで、テスト高速化を図ろうと試行錯誤したので、その過程を書きます。
RRRSpec使えよ!というツッコミはなしで。CircleCI上で試行錯誤の記録を残すために書きます。

また、spec自体の高速化ではなく、CircleCIの仕様に合わせた高速化の方法についてのみを書きます。

やり方

なんと、この2つだけです!
シンプル!なんてシンプル!
並列実行して、遅いテストを特定するだけです。
そもそも技術力なんていりません。気合と根性*1で速くできます。

並列実行する

並列数を変更

CircleCIで並列実行数を増やすオプションがあります。

Project Settings => Tweaks => Adjust Parallelism
から設定ができます。

f:id:watasihasitujidesu:20150924222541p:plain

並列数増やせば(金で解決すれば)高速化できるんじゃね?っと、頭がよぎりましたが、
今回の話は、並列数は据え置きのまま(6並列)という縛りプレイでいきます。

もちろん、並列数は多いほど高速になります。

並列で実行するときに理解しておきたいこと

並列で実行する際、CircleCI上では複数コンテナを使ってテストを実行します。
理解しておきたいのは、複数コンテナ上実行されるテストはファイル単位となることです。
example単位ではないので、注意が必要です。

また、並列化した場合、テスト完了は、最も遅く終わったコンテナに引っ張られます。

  • コンテナA: 10分
  • コンテナB: 20分

この場合、CircleCI上では、テスト完了時間が20分になります。
要は、1コンテナあたりの実行時間限りなく、全コンテナの平均時間に近づけたいのです。

で、分散させる方法は下記の通りです。
1. まずはcircle.ymlを修正

この設定では、テスト実行を上書きしており、parallel: true (並列実行モード)にしています。

test:
  override:
    - ./script/parallel_for_circle.sh:
        parallel: true

では、parallel_for_circle.shを見ていきましょう。
2. 各コンテナで実行するテストは指定する方法

#!/bin/bash
set -xe

i=0
files=()
for file in $(find ./spec -name "*_spec.rb" | sort)
do
  if [ $(($i % $CIRCLE_NODE_TOTAL)) -eq $CIRCLE_NODE_INDEX ];then
    files+=" $file"
  fi  
  i=$((i+1))
done

echo $files
bundle exec parallel_rspec ${files[@]} -n 2
exit $?

CircleCIでは、並列実行時、各コンテナにCIRCLE_NODE_INDEXという、何個目のコンテナか?というインデックスが振られます。
また、CIRCLE_NODE_TOTAL全部で何並列か?という数値も取れます。
CircleCIではテストコマンドを上書きすることができるので、1ファイルごとにループを回し、
どのコンテナに割り当てるかをゴリゴリ書いていけば、均等に割り当てることができます。

もちろん、*1_spec.rbなどとすれば、コンテナを指定することができます。
が、全実行時にコンテナを指定するメリットがあまりないので、今回は上記のスクリプトで並列化します。*2

遅いテストファイルを特定する

次のステップは遅いファイルを特定して、そのファイルを分割することです。
6並列でテストを回すとこのような結果になります。
f:id:watasihasitujidesu:20150924224914p:plain f:id:watasihasitujidesu:20150924224935p:plain f:id:watasihasitujidesu:20150924224952p:plain f:id:watasihasitujidesu:20150924225039p:plain f:id:watasihasitujidesu:20150924225051p:plain f:id:watasihasitujidesu:20150924225103p:plain

見にくくて申し訳ないですが、実行時間は
- 1台目:14:03
- 2台目:15:55
- 3台目:16:29
- 4台目:38:46
- 5台目:13:13
- 6台目:12:06
合計96分。平均16分で終わるはずなので、それ以上かかっているコンテナに遅いファイルが存在する可能性が高いです。
この中ではダントツで4台目が遅いので、4台目に時間がかかっているテストファイルが存在するだろうと推測できます。

次に、並列数はそのままで、4台目の実行されたテストファイルを実行していきます。
さきほどのスクリプトではecho $filesと書いているので、CircleCI上のダッシュボードから実行されているテストファイルが確認できますのでメモっておきましょう。

メモっておいたテストファイルの絞り込みは、単純に

rm -rf ./spec/*
cat output_file | awk '{print "git checkout "$1""}'
....

などとしていけば4台目で実行されたものだけが残り、
実行することができます*3
理論的には6分ほどで終わるでしょう。

これを繰り返していけば、実行時間が長いファイルが特定できます。

遅いテストファイルを分割する

遅いファイルが特定できたら、あとはファイルを分割するだけです。
おそらく遅いファイルでは複数describeブロックやcotextブロックが存在すると思います。

# coding: utf-8
require 'spec_helper'

describe 'Hoge.fuga?' do
  let(:hoge) { FactoryGirl.create(:hoge)}
  
  subject{ hoge.fuga? }

  it{should be_true}
end

describe 'Hoge.fugafuga?' do
  let(:hoge) { FactoryGirl.create(:hoge)}
  
  subject{ hoge.fugafuga? }

  it{should be_false}
end

例えば、このテストファイルが実行完了まで10分かかっていたとします。
このファイルをhogehoge_fuga_rspec.rbとhogehoge_fugafuga_rspec.rbの2ファイルに分割した場合

# coding: utf-8
require 'spec_helper'

describe 'Hoge.fuga?' do
  let(:hoge) { FactoryGirl.create(:hoge)}
  
  subject{ hoge.fuga? }

  it{should be_true}
end
# coding: utf-8
require 'spec_helper'

describe 'Hoge.fugafuga?' do
  let(:hoge) { FactoryGirl.create(:hoge)}
  
  subject{ hoge.fugafuga? }

  it{should be_false}
end

並列で実行すると、最高で5分に短縮できます。

このような泥臭いことを続けていきます。
ファイルを特定 => ファイル分割 => ファイルを特定 => ファイル分割 => ....................

ただし、分割するのはいいのだけれど、間違った分割の仕方をしたら、死罪に値するかもしれません。
たとえば、
hoge_controller_get_action_spec.rb hoge_controller_post_action_spec.rb とかだったら中身を見なくとも、どのようなテストが書かれているか予測ができると思うのですが、

hoge_controller_1_spec.rb hoge_controller_2_spec.rb

などとした場合、いちいちファイルを開かねばならず、苦労しそうですので気をつけましょう。

まとめ

テクニカルなことは一つもやっていないのですが、簡単なことでテスト時間を40%も高速化することができました。*4

また、CircleCIの挙動に合わせた高速化ではなく、spec自体の高速化は、
下記のエントリが参考になりますので、お試しください。

ruby-rails.hatenadiary.com

*1:うちの会社の裏行動指針です

*2:もっと簡単な方法もあります。Qiitaで探してみてください

*3:かならず違うブランチでやりましょう

*4:これを自動化すれば良いって話ですが

スクラムのレトロスペクティブをもっと掘り下げて学ぶときに参考になった本を紹介します

スクラムを導入して3ヶ月が経ち、チーム全体にスクラムが浸透してきましたが、
なんとなく、レトロスペクティブ(振り返り)がマンネリ化してきたので、
アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き
という本を読んだら、フリカエリのバリエーションと手法が増えたので、 紹介しようと思います。

レトロスペクティブ(振り返り)にマンネリ化を感じたら読むべき本

アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き

この書籍では、レトロスペクティブを5つのステップに分け、
それぞれのステップにおけるプラクティスを説明しています。

  • 場を設定する
  • データ(意見)を収集する
  • イデアを出す
  • 何をすべきかを決定する
  • レトロスペクティブを終了する

また、スプリント毎のレトロスペクティブだけではなく、
ある大きなプロジェクトが終わった際に行うレトロスペクティブの方法についても記載しています。

各プラクティスは、一定のフォーマット(目的、所要時間、概要、ステップ、材料と準備、使用例)
で書かれているので、理解も用意でした。

リーダーとしてのレトロスペクティブ

この本は、主にレトロスペクティブをリードしていく層に向けての本だと感じました。

本の冒頭には、振り返りの目的はもちろん、フォシリテーションについても書かれています。
レトロスペクティブだけでなく、議論を前に進めるというスキルも学べると思います。 具体的には*1

  • レトロスペクティブの準備の仕方
  • リード(ファシリテーションの仕方)
  • 議論へ参加させる方法
    • 口数が少なく、あまり話さない人
    • 口数が多く、喋りすぎてしまう人
    • 上位職の人が圧力をかけてきた時の対処
    • メンバーにイレギュラーな出来事が発生したときの対応
      • 泣いた時
      • 怒った時
      • 部屋を出て行った時
      • 不適切に笑いが起こった時
      • 静寂に包まれたとき
      • 表面化で何かしている時(内職をしている時)
  • 自分を落ち着かせ、頭を整理する方法

上記のような事についても書かれています。

この本を買うべきだと思ったポイント

先述の通り、レトロスペクティブを5つのステップに分け、それぞれのステップにおけるプラクティスを説明しています。
買うべきだと思ったポイントは、その手法の多さです。
量だけ説明すると

  • 場を設定する => 6件
  • データ(意見)を収集する => 8件
  • イデアを出す => 9件
  • 何をすべきかを決定する => 6件
  • レトロスペクティブを終了する => 9件

合計 38件の手法をこの一冊で学ぶことができます。
一度のレトロスペクティブで使える手法は5つかもしれませんが、
知識として自分のツールボックスに入れておくには十分すぎる量だと思います。

また、各ステップにおいて、どのプラクティスが有効かについても、書かれていますので、
逆引き的にも使えます。

レトロスペクティブを進めるリーダーにはオススメな書籍です。

160ページ程度なので、3~4時間程度で全て読む事ができました。

*1:一部抜粋

スクラムのレトロスペクティブをKPTで振り返りするときに参考になった本を紹介します

スクラムを導入してなんとか1スプリントが終わったばかりなのですが、
レトロスペクティブ(振り返り)の具体的な進め方がわからなかったので、
「これだけ!KPT」という本を読んだらスムーズに進行できたので、
紹介しようと思います。

KPTをするの時のバイブル

これだけ!KPT

全6章立てで、1,2章はよくある問題とか、KPTの効能とかが書かれています。
KPTが何なのかを既に知っている方は、ここは正直読み飛ばしてしまってもよいかと思います。

3~6章にかけては、ハウツーについて書かれています。
KPTを使った振り返りについて、時間配分が分単位で書かれています。
また、時間配分された項目ごとに、実際に

  • 何を話すか
  • ポイントとコツは何か

についても書かれています。

そのほか、後半の章になると、下記のことについても掘り下げて書かれています。

  • KPTの応用編と称した、慣れてきたチーム向けに時間圧縮バージョンの進め方
  • Keep, Problem, Tryそれぞを引き出すための質問例
  • 意見が多く出た場合の情報分類術
  • KPTの結果からチーム状態の分析
  • ファシテーションの方法

これまで、KPTを体系的に学ばず、普通のメンバーとしてダラダラ振り返っていると感じる人や、
KPTを使った振り返りでのファシテーションをします!

って人まで、KPTに関わる人全員におすすめだと思います。

ページ数が少なく、文字も比較的多く、イラストを使って説明もされているので、
1.5時間くらいでサクッと読めました。

これからスクラムを始める人へのお勧め本を紹介します

ひょんなことから、会社でスクラムを使って開発をすることになり、スクラム関連の本を読み漁ったので、 これを機会にお勧め書籍を紹介します。

アジャイル手法

アジャイルサムライ

アジャイル開発手法についてまとめた本。
これを読んだ時は、スクラムの存在を知らなかった状態で読んだが、
アジャイル開発の思想は理解できる内容。
ただし、ハウツー本ではなく、思想の解説本であるため、実際にチームが
いつ、なにをするかという具体的な内容は文面から想像ができませんでした。
一度読んで理解すればそれだけで良い本かなと思います。

また、この本を読んだ後にスクラム本を読み始めたが、前提となる知識はこの本で理解していたので、
後続のアジャイル系の本をサクサク読んでいくことができました。

文字数が多く、すべて読むのに6時間くらいかかりました。

スクラム

SCRUM BOOT CAMP THE BOOK

読んだ直後は、後に紹介するスクラム実践入門と比較して内容が薄い。と思ったのですが、
スクラムはただの開発手法でありフレームワークにしかすぎないので、
フレームワークを実践する組織なり、チームに合わせた内容にアレンジする必要があると考えさせられました。

ベースとなるストーリはマンガで書かれているので、とても読みやすいので、
サクッとスクラムの概要をサクッと理解するには良い本です。
2時間ほどで読める内容なので、はじめの一冊にオススメです。

スクラム実践入門

体系的にまとまった一冊。
SCRUM BOOT CAMP THE BOOKとは違う種類の書籍で、参考書的に使いたいです。
今、机の上においてあるのはこの一冊だけです。それほどよくまとまっています。

スクラムで登場する役割、成果物、イベントなどを説明のほかに、オススメできる内容として

  • パターンプラクティス
  • スクラムを使っている会社の導入事例3社分
  • スクラム運用における、よくある問題と解決集

が掲載されているので、何か不穏な空気を感じた時とはこの本を参考にすると、だいたい解決するのではないかと思います。
実際、救われたことが何度かありました。

4時間ほどで読める内容ですが、何度も何度も読んで理解を深めるのに最適です。
もしかしたらSCRUM BOOT CAMP THE BOOKはいらないかも?

まとめ

振り返ると、スクラム実践入門だけあれば、文字通り実践までできるのではないかと思います。
スクラム勉強会などでも、スクラムマスターとして、様々な人と対等に話せるレベルになります。
(スクラムが、理解'は'容易だからってのもありますが・・・)

チームのメンバーに対してスクラムに興味を持ってもらうには、
SCRUM BOOT CAMP THE BOOKのマンガ部分をサクッと読んでもらう程度で良いかと思います。
それくらいライトな本です。

それでは、よいスクラムライフを!