別にしんどくないブログ

技術のことや読書メモを書いています

『Team Geek』を読んだ。

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

本書は定評があり、以前から勧められていたのですが積読が多く読めていませんでした。
最近、チームで働くこと、特にチームメンバーとの協調や生産性向上がうまくいってないように感じているので読んでみました。

以下は各章ごとに気になったことのメモです。

1章 天才プログラマの神話

  • チームで働くための三本柱
    • Humility (謙虚)
    • Respect (尊敬)
    • Trusty (信頼)
    • HRTなのでハート(Heart)と呼ぶみたい
    • 本書の中心にどうすれば良いチームを築くことができるのかを網羅的に解説している
  • エゴをなくす
  • チームメンバーを信頼して仕事を任せる
  • 批判は個人的なものではなく優れたプロダクトを開発するための必要なプロセスであるか、そこに尊敬が含まれていなければならない
  • 建設的な批判の仕方を学ぶ必要がある。そのために気の利いたフレーズを使えるようにする

2章 素晴しいチーム文化を作る

  • ミッション・ステートメントを明確に定める
    • プロダクトのスコープを制限する
    • やること/やらないことを明確にしておくと年単位で仕事の節約になる
  • MTGは必要な人だけで行う
  • MTG前はアジェンダを用意する
  • MTGのゴールに早くたどり着けば時間内でも終わる

3章船にはキャプテンが必要

アンチパターン

  • 自分の言いなりになる人を採用する
  • パフォーマンスの低い人を無視する
  • 人間の問題を無視する
  • みんなの友達になる
  • 採用を妥協する
    • エンジニアを5人雇う計画のとき大量募集して上位5人を雇うことがあるが、このやり方はダメなやり方。ジョブズいわく「Aランクの人はAランクの人を採用する。Bランクの人はCランクの人を採用する」
    • 採用に口を挟めなくても腕のいいエンジニアが必要だと主張する。それでも標準的なエンジニアしか雇わないのであれば職場を変えた方がいい
  • チームを子どもとして扱う

    リーダーシップパターン

  • エゴをなくす
  • 禅マスタになる
    • 常に平静を保つ
    • 質問は禅マネジメントの秘密である。チームメンバーがアドバイスを求めてきたら、自分で解決しようとするのではなく、解決することを手伝うようにする。自分が答えを持っているかどうかにかかわらず、相談相手には印象が残る
  • 触媒になる
  • 先生やメンターになる
  • 目標を明確にする
  • 正直になる
  • 幸せを追い求める
    • 時間を作ってチームの幸せを計測する
    • チームの幸せを追い求めるには1on1のあとに他に必要なものがあるかを質問する
    • チームの外の幸せを考える

4章 有害な人に対処する

  • 有害な人ではなく、有害な振る舞いを排除する
  • 他人の時間を尊重する
  • 完璧主義者にならない
    • 設計に時間をかけすぎてコーディングがなかなか始められない。結果として、チームとしての生産性を下げている。
  • 優しく追い出す
    • 文句言いたいだけの人に対して優しい口調で優しく接する

5章 組織的操作の技法

  • リスクをとる
    • 年に1回でも失敗していないようなら、それはリスクを取っていないということ
  • 「攻撃的」な仕事と「防御的」な仕事
    • 攻撃的な仕事は、ユーザに見えるもの。UIの改善とかパフォーマンス改善など
    • 防御的な仕事は、プロダクトの健全性を維持するもの。リファクタリング、モニタリングなど
    • 防御的な仕事にかける時間は1/3〜2/3に収める

6章 ユーザーも人間

  • ユーザーに集中すれば、他のことはすべてついてくる
  • 成功しているソフトウェアというのは、問題を限定してそれをうまく解決している
  • Less is more

感想

定評通りの良い内容でした。読んでいて感じたのは最近勉強会やカンファレンスなどで聞くようなチームビルディングの例はこの本に影響受けているものも多いのではないのかなということです。
この本を読みながら「これ最近よく聞くよな」とか「これ何かで読んで実践してみて良かったな」とか他で得た知識が載っていたのですが、もしかすると誰かがこの本から得た知識を実践してアウトプットしていたのかもしれないです。そう考えるとこの本は多くの人に影響を与えた本だと思います。
また、この本は発売が2013年ですが、今読んでも勉強になることが多いので内容はある程度普遍的なものなのではないでしょうか。
この本も時代を超えて読まれていく本になる可能性はあります。願わくば、本書に書かれていることが当たり前の世の中になっていて読まれなくなると良いかと思います。   チームで働くことに悩んでいたり、これからチームで働く人には積極的に勧めていきたいと思います。

『FUTURE INTELLIGENCE』を読んだ。クリエイティブ思考が身につく10の習慣

FUTURE INTELLIGENCE ~これからの時代に求められる「クリエイティブ思考」が身につく10の習慣~

FUTURE INTELLIGENCE ~これからの時代に求められる「クリエイティブ思考」が身につく10の習慣~

  • 作者: スコット・バリー・カウフマン,キャロリン・グレゴワール,野中香方子
  • 出版社/メーカー: 大和書房
  • 発売日: 2018/04/21
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (1件) を見る

図書館で子どものアンパンマンの絵本とともに借りた本が良かったので、読書メモを残しておきたいと思う。

表題のとおりクリエイティブ思考を身につけるための習慣を紹介していくという内容になっている。何が良かったかというと、自分の嫌いなところを肯定してくれるところに癒しを感じたことや日頃意識していないけど実践していたことが言語化されていたり気づきが多かった。また、新しい考え方を学ぶこともできた。
これから意識して実践していきたいことや心に残った内容を10の習慣ごとにまとめて残しておく。

1. 遊び

子供の頃は遊ばせる。遊びを通じて自分自身のことや周りの環境と自分の関係を理解していく。
好奇心を発揮して馴染みのないものに慣れていく。
ごっこ遊び」が子どもたちの想像力や好奇心を育む。
幼いうちに勉強を教えるのは逆効果。好奇心や予想外の繋がりを見つける能力を損ねること示唆している。
ある程度大きくなってから読み書きを習った子どもの方が文章読解能力が高いという研究結果がある。
遊んでいる大人は老いない。大人になるにつれ、遊び心と好奇心を忘れ、仕事やまじめな事柄を支配されがちになる。
クリエイティブな仕事には真剣な時間と遊びの時間がある。両者がうまく組み合わさったときに良い結果が出る。

2. 情熱

誰かと出会いや何かの本を読み感銘を受け人生をかけるべきだと思う瞬間のことを「結晶化」(クリスタライジング)と呼ぶ。クリエイティブな心を育むために欠かせない。
「うまくなりたい」と熱意を持てるかどうかで才能は決まる。
「調和的な情熱」と「強迫的な情熱」がある。「調和的な情熱」は見栄えや名声などではなく習熟と成長を重視する。
一方、「強迫的な情熱」は世間に認めてもらうためなど成長ではなく外的な報酬を動機として励む。
インスピレーションを得やすい人は努力をする。調和的な情熱を持つ人はやっていて面白く、意義を感じるものであれば練習は苦にならない。

3. 夢想

1時間おきに5分の夢想休憩をはさみ、それがアイデアや思考にどう影響するか観察してみよう。
頭をすっきりさせるために席を立ってトイレに言ったり、会社の周囲を散歩していたりして目の前の課題から注意をそらすと、ふいに求めていた答えが頭に浮かぶことがある。
ほんの少し行動を変えることで、考え方が建設的な方向に向かう。
気分転換することで無駄な解決策に固執している気持ちを解放することができる。
歩いている時、とくに自然の中を歩いている時に問題が解決されることが多い。
マインドフルネスとは今この瞬間に心を集中させ、ありのままを感受することである。
マインドフルネスがクリエイティブにもたらす恩恵は大きい。しかし気が散ることは必ずしも悪いことではない。

4. 孤独

クリエイティブの糧になるのは孤独の時間である。
心の内側を深く掘り下げる、他社や周囲の雑多から離れることで自分と向き合うことができる。
そのために孤独なスペースを作る。
自分への関心と他社への関心、内向性と外向性、深い内省と意欲的な行動のバランスをとることがクリエイティブ思考に重要である。

5. 直感

直感は十分に準備したものにだけ訪れる。
過度に理性的に考えることを学ぶと直感が理性と分析に押しつぶされる。
直感が鋭い人は周囲をよく観察しているが、ひらめく直前は視覚からの入力がヘリ、視覚野の活動がほぼ停止する。

6. 好奇心

知りたい、見つけたいという好奇心の有無は知能指数の高低よりはるかに仕事の質に影響する。
未知のものを探求したいという欲求がクリエイティブな仕事につながる最も重要な特徴である。
好奇心の強弱はドーパミンの働きによって決まる。ドーパミンは行動と認知の両面で探求したい意欲を目新しいものに柔軟に反応する傾向を促す。
好奇心旺盛な人は報酬ではなく新しい発見から活力を見出す。

7. 瞑想

マインドフルネスとは今この時に注意を払うこと。マインドフルに観察する訓練をすると認知知能が向上した。マインドフルになるのに正式な瞑想の訓練は必要ない。今この瞬間に意図的に集中し、評価や判断をせずに注意を払うこと。じっくりと観察する能力は重要でクリエイティブ思考にも役立つ。
心を鎮めようとするとますます騒がしくなるが、やがて落ち着く。そうすればささやかな物音を聞く余裕が生まれ物がはっきりと見えるようになる。心の動きが遅くなり前よりはるかに多くのものが見えるようになる。
マインドフルネス瞑想は呼吸1つに集中し、心の中の雑念や感情を消し去ることが求められる。この種の瞑想は脳の実行機能を向上させる。
瞑想の最も有意義な使い方は、雑念を振り払うことだろう。メールやマルチタスクが溢れている状態で大切な課題に集中することができなければ、意義深い仕事をするのはますます難しいだろう。
また、集中力はクリエイティブ思考への道を開くが、クリエイティブな業績を上げるためにはマインドフルネスとマインドワンダリング(自分の心を探索すること)の両方からもたらされるものであるためこの2つの切り替えが重要である。自己に集中する思考モード(マインドワンダリングからもたらされる)も外界に集中する思考モード(マインドフルネスからもたらされる)のどちらも強める必要がある。
ある程度のマインドワンダリングを許す瞑想の方が心を集中させる瞑想やただじっと座っている瞑想よりデフォルトモードネットワークが活性化する。
認知能力が高い人は、認知能力がより柔軟で、異なる思考モードの行き交いを容易に行い、多彩なアプローチで問題の答えを導き出すことができるのだ。
クリエイティブになるには周囲を観察するだけではなく、心中を通り過ぎる現象に気づき、深く観察することが必要である。

8. 繊細

クリエイティブ思考を点と点をつなぐことと考えれば、敏感な人は、普通の人より点が多いため、点をつなぐ機会の多い世界に生きている。感受性の高い人はより多くのことに気づき、より多くの感覚情報を処理している。
感受性が高い人は刺激を心の深いところで処理する。そのため、新しい状況で「立ち止まって確認する」「戦略を深く考える」「時間をかけて考える」「時間をかけて効果的な行動を計画する」「引きこもる」といった行動をとる。
感受性が高い人は共感や自己認識能力も高い。
感受性の高い人はカフェインや薬や痛みなど身体レベルでもより深く影響を受けやすい。
感受性の高い人は感情の起伏が激しいが、それを抑制する能力を身につければ、自分の生々しい知覚を鋭い洞察に昇華することができる。
クリエイティブ思考の人は常に自己実現をしている。創造は人生を豊かなものにし、生きているとう強い感覚を生じさせる。
敏感な性質は感情的緊張や環境との建設的な対立をもたらし、その対立を解決する手段にもなる。敏感な性質は人間が成長し危険を冒し意味を探すことを後押しする。最終的に内面的な成長に欠かせないものである。
感受性が高い人にとっては人生は過酷なものになりがちだが、繊細さにはすばらしい喜びや驚きや共感や創造も伴う。そして辛い経験を最大限に活かすことができれば、意義深い仕事をして複雑なアイデンティティを確立することに近づいたと言えるだろう。

9. 逆境

人生における最も過酷な状況は、生きる目的と生きる力を見出す機会になる。人生を耐え難いものにするのは環境ではなく、「意味と目的の欠如」である。
苦しみから思いやりを学び、苦しみを乗り越える過程で自らの力と美を発見する。
トラウマを乗り越えた人の70%が心理的成長を遂げたと研究結果が出ている。
喪失と獲得、苦しみと成長は同時に起きることが多い。しかし、芸術家はネガティブな人生経験だけでなくポジティブな人生経験も作品に昇華している。
不運は出来事は、当たり前と考えていた価値観を見直し新しい価値観を考えざるを得なくする。
心理学者は、トラウマは共感や利他主義を高めて他者の利益のための行動を促すことを明らかにしている。
人は独自の世界観や仮説を形成し、それに則って暮らしているがトラウマはそうした価値観を揺さぶり人を成長させる。揺れが大きいほどそれまでの自分の考え方から離れて土台からやり直さなければならなくなる。自己再建によって新しい扉を開くことができる。
きつい感情を客観視して書き記すライティングセラピーによってうつ症状や心身の健康状態を改善するだけでなく、認知能力やワーキングメモリーが改善することが明らかになっている。
ライティングセラピーの効果の度合いと、「知る」や「理解する」といった認知に関わる単語を使用する頻度には相関が見られる。
不幸なことだけでなく、幸福感も同じく興味を広げる。新しい可能性と目標を見つけることができる。新たな目標や人生観をみつけることで人間関係や優先事項やアイデンティティを変えることができる。

10. 異端

偉業を遂げるための必要不可欠な要素は「人と違う考え方をする」ことである。
真実は多数派を信じるか否かによって変わるものではない。
真のイノベーションを起こしたほぼ全てが、最初は抵抗を受けている。そのためクリエイティブであることには勇気が必要である。
クリエイティブな人には「他の人が不可能だと思うことをしようとする」「服従しない」「伝統にとらわれない」「社会規範や常識や前提に疑問を持つ」「自分の立場を明らかにしようとする」といった特徴がある。クリエイティブな人はリスクをとり、最後まで追求しようとする。
クリエイティブな人は世の中で支持されている考え方を拒み、斬新なアイデアを好む。
挑戦者は必ず迫害される。アイデアが批判され、排斥されてもそれを支持し続けるには覚悟が必要である。いかなる分野であれ、真の貢献のためにはその分野を新たな方向へ動かす「リーダーシップ」と「ビジョン」が必要である。 平凡な人は従順な人を好む。実験によると、大半の人が真実だと思うことを翻してでも多数派を歓迎することが明らかになっている。自由な思考と想像力の抑制は教育制度から始まる。多数派と違う経験をすることで先生から注意される経験は子供の好奇心や個性的な本能を抑制している。子どもたちは間違いを恐れるようになり、異なる解決法や考え方を試すことを教わらない。ゆえに変化し続ける世界や新たな課題に備えることができない。
間違いを犯すことを覚悟しなければ、独創的なことは何1つ思いつかない。 独立心の強い自我は他者との分離を好む。
イデアの質は量によってもたらされる面がある。失敗すればするほど成功する確率は上がる。質の差は革新への欲求によって決まる。同じ手法を繰り返してはならないというプレッシャーを常に感じている。革新を求めるがゆえに天才は何度も失敗をする。
また、伝統的な考えに挑戦するものはすべて型破りな思考へ導く。これまでと違う考えをする習慣を身に付ければ、違う分野のアイデア同士を結び付けることができるようになる。点と点を新しい方法でつなぎやすくなる。
革新的な人は、そうでない人に比べて「人と違うことを考え方をしようとする」時間が50%多いことが研究で明らかになっている。
自分はクリエイティブ思考であるという自覚を持ち実践することは、人を本来の自分自身と結びつけてくれる。

感想やまとめ

好奇心を持って、夢中になり集中することが大切である。また、自分と向き合うことと、心中を鎮め外界に集中することの両者をバランスよく行うことで多彩なアプローチをすることができるようになるのであろう。
一見ネガティブな事柄もクリエイティブ思考には欠かせない。辛い経験や感情は人を成長させるということなので、辛い経験があっても悲観的になりすぎないようにしたいと思う。
また失敗や批判を恐れずに挑戦しつづける勇気も身につけたいと思う。
クリエイティブ思考を身につけるために10の習慣を実践し、自分の多面性を受け入れて新しいもの良いものを創造していきたいと思う。

以上になります。最後までお読みいただきありがとうございました。
オススメの本などありましたら、コメントやはてブTwitterなどで教えてもらえると嬉しいです。

『FACTFULNESS(ファクトフルネス)』を読んだ。10の本能を知り、事実に基づいて世界を見るための本。

FACTFULNESS(ファクトフルネス) 10の思い込みを乗り越え、データを基に世界を正しく見る習慣

FACTFULNESS(ファクトフルネス) 10の思い込みを乗り越え、データを基に世界を正しく見る習慣

話題の本『FACTFULNESS』を読みました。TwitterのTLや周りの人でも読んでいる人がいたので、気になっていました。

この本は「『事実に基づいて世界を見る』ことができていないのはなぜか?」と問いかけるところから始まります。
事実に基づいて見ることを妨げている10種類の人間の本能について、著者の経験やどうすればその本能を抑えることができるのかが記述されています。
以下が10の本能です。

  • 分断本能
    • 「世界は分断されている」という思い込み
  • ネガティブ本能
    • 「世界はどんどん悪くなっている」という思い込み
  • 直線本能
    • 「世界の人口はひたすら増え続ける」という思い込み
  • 恐怖本能
    • 危険でないことを、恐ろしいと考えてしまう思い込み
  • 過大視本能
    • 「目の前の数字がいちばん重要だ」という思い込み
  • パターン化本能
    • 「ひとつの例がすべてに当てはまる」という思い込み
  • 宿命本能
    • 「すべてはあらかじめ決まっている」という思い込み
  • 純化本能
    • 「世界はひとつの切り口で理解できる」という思い込み
  • 犯人探し本能
    • 「誰かを責めれば物事は解決する」という思い込み
  • 焦り本能
    • 「いますぐ手を打たないと大変なことになる」という思い込み

これらの本能に対してデータを基に事実を紹介しています。
例えば、分断本能では「金持ち」「貧困」の分断について、4つのレベルで考えることを紹介しています。レベル1の人は1日2ドル以下で暮らしている極度の貧困層で、レベル4は学校に12年間通い外食をしたり自家用車を所持している層を指しています。1日3ドルのお金が生活を左右しない層です。日本人の多くはこのレベル4にいてると考えてもいいと思います。
生まれたときからレベル4の生活をしている人は、レベル3もレベル2の人も「貧困」と考えがちです。しかし、データによると極度の貧困にいる人は昔より減っていて世界は良くなっています。

これらの本能を抑えるためのルールも紹介されています。
例えば、過大視本能を抑えるためには数字の比較や割り算をすることを勧めています。大きな数字をそのまま見るのではなく、他の数字と比較すること、数字を割って「ひとりあたり」で考えるようにすることを勧めています。また、複数項目が並んでいたらどれも同じくらい重要に考えるのではなく全体の8割を占めるものはどれか注目する、他の項目より大部分を占めている項目に注目する80:20ルールを提唱しています。

10の本能に関して上記のようにデータに基づく事実を紹介し、それら本能にどうやって対応するかが書かれています。
また、本書の最後には実践編として10の大まかなルールが絵図付きで1ページに収められています。この10のルールが習慣になるまではそのルールが掲載されているページの写真を何度も見返したいと思っていて現在はスマホのロック画面に設定しています。
あと本屋では小冊子を配っているところもあり、そこにも大まかなルールは載っています。もし本屋で見かけたら手にとってみてはいかがでしょうか。

「事実に基づいて世界を見る」ということを意識していない方も、世界について普段考えていない方にもぜひ読んでいただきたいと思います。僕も普段は考えていないので全然違った見方になっていたことがわかりました。
また、本書の冒頭で書かれている「この本のデータはあなたを癒やしてくれる」というのは最初は意味がわからなかったのですが、読み終えた後ではその言葉に納得できました。

物事はそう単純ではなく、他のものと比較したりよく観察することが大事だと教えてもらいました。 この本は世界の見方に関する内容が中心ですが、普段の我々の生活にも適用できることはあるかと思います。

以上になります。最後までお読みいただきありがとうございました。

Vue.js/Nuxt.js meetup #3でVuexのスナップショットテストの話をします #v_kansai

v-kansai Vue.js/Nuxt.js meetup #3で発表します。

当日までに書き換えるかもしれませんが、フィードバックいただけると嬉しいです。

speakerdeck.com

資料の中で紹介しているvuex-snapshot-testのGitHub、npmはこちらから

github.com

www.npmjs.com

Vuexをスナップショットテストするパッケージを公開しました

www.npmjs.com

表題の通り、新しくnpmにVuexをスナップショットテストするパッケージを公開しました。

何するもの?

Vuexのstoreに対してactionsやmutationsの発火前後のstateの状態のdiffをとったsnapshotファイルが生成され、スナップショットテストを行うことができます。

READMEに書いているサンプルコードを載せておきます。
テストに馴染みのある方はなんとなく雰囲気を掴んでもらえると思います。

import snapshot from "vuex-snapshot-test";
import store from "@/store";

snapshot({
  store, // state: 1
  dispatches: [dispatch => dispatch("increment")]
});

上記のテストコードを実行すると以下のsnapshotファイルが生成されます。

exports[`increment 1`] = `
"Snapshot Diff:
- Before
+ After

  Object {
    \\"counter\\": Object {
-     \\"value\\": 1,
+     \\"value\\": 2,
    },
  }"
`;

まだまだ拙い箇所が散見されると思いますが、とりあえず想定通りの動作をするようになったので公開しました。 TypeScriptはサポートしています。

Thanks!

少しVuex用に工夫をしたけども、アイデアはReduxのreducerをテストするreducer-testerから頂いています。 @akamecoさんありがとうございます。

www.npmjs.com

Reduxを使った開発をしているときにreducer-testerを使っていて体験として良かったので、Vuex用を作ってみました。

予告

これをネタに今月末のv-kansaiにLT登壇します。 元気があればQiitaにも技術詳細など書きたいと思います。

vuekansai.connpass.com

フィードバックはどんどん募集しています!
ご意見、要望はIssueTwitterまでお願いいたします。

僕ができないこと 2019年版

エンジニアを数年やっているとある一定レベルから自分がどれくらいスキルアップしているのか、本当にスキルアップしているのかわからなくなることがあります。
仕事や興味を持ったことに対して調べてコード書いてとしているので、知っていることや経験は日々増えていると思います。
しかし、どういったスキルが身についたかをチェックできておらず漠然と不安があります。

そこで、自分もスキルの棚卸しと毎年スキルアップできているのかを確認するためにもできないことを書き残しておきたいと思います。
内容に関しては、エンジニアとしてあった方がいいだろうなと思うことに絞り込んでいます。
完全に個人的なことなので、興味ない方はそっと閉じていただければ・・・。
手助けできることがあるかもしれないと思う優しい方はさらっと目を通して勉強方法やオススメの本などアドバイスいただけると嬉しいです。

僕ができないこと

インフラ知識はありません

OSのセットアップやnginxなどWebアプリケーションの環境構築。DockerもWebサーバー構築などWebのバックエンドに関しては不自由なく構築できます。あと最近AnsibleでMySQL用のサーバーを構築しました。しかし、運用を考えたインフラ設計や必要なサーバーのスペックを考えることはできません。また、k8sも触ったことがありません。

モバイルアプリ開発はWebほど自信がありません

iOSアプリの開発に関しては仕事でもやっているけど、元からあるやつを改修しているだけ。プライベートでも作ったことはあるけど、とてもストアに配信できるほどの代物ではなかったです。でもSwiftは好きな言語の一つです。

コンピューターサイエンスは自信がありません

情報系の教育を受けていません。そのため、大学などで学んできた人に比べると劣等感を感じることが多いです。僕のコンピューターの基礎知識はIPA基本情報技術者試験応用情報技術者試験を合格したレベルですが、それが役立っているとも思えません。

セキュリティに関する知識はありません

XSSやCORSなどWebに関する知識はたぶん大丈夫だと思いますが、暗号化技術に関する勉強はしたことないです。MD5SHA1はヤバイということは知っていますが、表面的な知識しかありません。
仕事でOWASPのチェックシートとかIPAのチェックシートとかをもとにアプリケーションの脆弱性を調べたことは勉強になりました。

システムプログラミング言語は使いこなせません

C、C++、Rustは触ったことありますが、どれも使いこなせていません。元々プログラミング言語Javaから覚えたのでポインタの概念を理解するのに苦労した覚えがあります。Cは仕事で使いましたし、C++はNode.jsの開発で使いますし、今はRustの勉強を少しずつしています。でもJavaScriptJavaなどWebエンジニアとして仕事でよく使う言語に比べるとかなり能力不足を感じます。

機械学習に関する知識はありません

CNNをふんわりイメージできる程度にしか知識はありません。いや、それもかなり怪しいものです。Tensorflow.jsが出てきたときにちょっとやってみたり、社内の勉強会でjupyter notbookを使って言われるがままに写経したことはありますが、もう覚えていません。

ネットワークに関する知識はありません

家のWifiのセットアップはできます。しかし、ネットワークに関しては苦手意識があります。前述の基本情報技術者試験の合格したとき自己採点したところネットワークの問題はすべて間違えていました。
勉強も全くできていません。社内のネットワークに関してもどうやって構築されているのかわかりません。

OSの知識はありません

OSをインストールすることはできます。Linuxコマンドもある程度知っています。しかし、カーネルの知識やOSがどう作られていて内部的にどう動いているのかは知らないです。勉強がてらGentooのセットアップをしてみたことはありますが、それでOSの内部を学べた感覚はあまりありませんでした。

関数型プログラミング言語は書けません

ScalaHaskellはコードを読んでみたことはありますが、書いたことありません。なんとなく良さはわかりますが、オブジェクト指向と比較できるほどの知識はありません。

監視ツールの使い方は知りません

会社の監視ツールはインフラチームの方が設定してくれました。ダッシュボードを見たりすることはあってもセットアップはしたことがありません。

データ構造とアルゴリズム情報処理技術者試験レベル

クイックソートや2分探索は知っています。でも今すぐコードで書けと言われるとうまくできる自信はありません。基本情報・応用情報技術者試験に合格するぐらいの勉強はしましたが、最近はほとんど忘れたと思います。資格試験の勉強レベルなので当時のレベルもたかが知れていると思います。

GCに関する知識はほぼありません

世代別やmark&sweep、コンパクションがあるのは知っています。それらについて140文字程度なら説明できるかもしれません。しかし、実装はできません。また、詳細を説明するのも自信ありません。

英語は自信がありません

プログラムを書く仕事をする前は英語翻訳の仕事をしていたのですが、その頃も今も英語がうまく話せたと思ったことはありません。翻訳の仕事をしていたときは英語で会話することも多かったですが、いつも自信はありませんでした。留学に行ったことが無いことが劣等感になっていました。一度書いた英文に自信がないので一度Google翻訳で英日して意図通りの日本語になっていることを確認したり、同じような構文や言い回しがないか調べたりしています。同僚にアメリカ人がいたときはチェックしてもらったりしていました。
OSS活動やカンファレンスで海外の方とコミュニケーション取ることがありますが、たまに齟齬が発生します。

デザインの知識はありません

デザインに関して勉強したことはありません。もしデザインの知識があればもうちょいUIとか工夫できたりするのかな、と思うことはあります。

ハードウェアの知識はありません

自作PCとか組んだことありますし、何か不具合があれば多少のことなら修理できる自信はあります。
しかし、CPUやメモリの内部の動作に関しては前述のIPAの試験対策のために勉強した程度の知識しかありません。

ブロックチェーンに関する知識はありません

以前は勉強するモチベーションもありましたが最近の動向は全く追えていません。
ブロックチェーンやっているエンジニアは何をしているのかも想像つかないです。

フロントエンドのFWの一部は書けません

Reactは不自由なく書けると思います。VueもReactほどではないですが書けます。しかし、Angularは動向を追っていません。AngularJS 1.5は会社で書くことありますが、最近のAngularは@angular/cli叩いてFirebase Hostingにホスティングしてみた程度のことしか経験はありません。
Polymerに関しても全く追っていません。Polymer2から3になるときぐらいに少し触ったことがある程度です。今Polymerが生きているのかどうかも知りません。 Backbone、emberは触ったことありません。
jQueryはかなり忘れてますが使えます。

最後に

他にももっといっぱいあると思いますが、今自分に足りていないけどあればいいのになと感じるものをリストアップしました。
雑に書いた部分はありますし、他にも足りていないことはあると思うので随時更新していきたいと思います。
一つでもスキルアップして自信を持てるようになれればと思います。
OSS活動するうえでも必須だし他の方面でも活きるので、まずは英語かな・・・。

『学びを結果に変えるアウトプット大全』を読んだ

学びを結果に変えるアウトプット大全 (Sanctuary books)

学びを結果に変えるアウトプット大全 (Sanctuary books)

ノウハウだけでなく、アウトプットする時にどういったところを意識すると効果が高くなるかを理論的に説明した良い本だった。
同じテーマの他の本と重複する内容もあるが、著者の知識や経験談だけでなく理論に基づく説明が多かったのが好印象でした。

特に気になった箇所をメモしておきたいと思います。

インプットとアウトプットの黄金比は3:7

インプットの量を3、アウトプットの量を7とすることを著者は勧めています。
例えば、勉強するときも参考書を読むより問題集を解くことを中心に勉強した方が効果があるとのことです。 アウトプット駆動で勉強することは効果が高いと感じます。
興味のある分野の勉強会があればLT参加を先に決めてしまったり、資格取得などゴールがあればSNSで公言してしまってやらざるを得ない状況にするのがオススメです。 読書感想文を書くこともオススメです。読書するときもブログを書くつもりで読むと質の高い読書ができるのではないかと思います。

タイピングより手で書くほうが脳への定着率が高い

手書きの方が脳が活性化されることはあると他の本でも度々述べられているので非常に信憑性は高いと思います。
この本でも手書きとタイピングでどちらが脳への定着率が良いか研究したところ、手書きの方が定着率が高いという研究結果が記されています。

最近は共有する必要がない自分用のメモや、自分の脳の中にあるものをバーっとブレストする時は手書きするようになりました。もしくは音声入力を使ってます。思いついたことをメモするには手書きか音声入力の方が効率的に感じます。
共有が必要なことがわかっている場合は、共有しやすいタイピング入力を使います。なので、使い分けが必要だと思います。
あと、手書きしてもすぐに棄てるメモは電子メモを使っています。紙に書いて破り捨ててもいいのですが、ボタンひとつで消せるのは便利です。

非言語コミュニケーション、内容ではなく身だしなみや表情などの視覚情報、声の大きさや質などの聴覚情報も重要。話すときは内容に自信がなくても笑顔で堂々と話すように心がける

カンファレンスや勉強会の登壇者で話が上手な方は全員非言語コミュニケーションが上手だと感じます。
非言語コミュニケーションに関して、最近は登壇するときは「なるべく聴講者の方を見て話す」「大きな声で話す」「大切なところは声の大きさや間のとり方に注意する」「明るく話す」ことを心がけるようにしています。

速く文章を書く

技術記事やブログ書こうと思ってもなかなか筆が進まないことが多かったです。また書き始めても完成するまで時間がかかりました。
これを何とかしたいと思ったことがこの本を読むきっかけでした。
2つコツがあります。

時間を決めて書く

速く文章を書く1つ目のコツは時間を決めて書くことだと本には書かれています。例えば、1記事を30分で書くと制限といったことです。最初は難しいですが、脳がトレーニングされていき最終的には質の高い短文を書けるようになるとのことです。 これに関しては愛聴しているPodcast PHPの現場の24回目でも話されていてこれは参考になると思いました。

しかし、実践しても大幅に時間オーバーするので修行が足らないのか見積もりが甘いのか何か間違っていると感じているので改善策を考えないと・・・と考えています。

構成を決めてから書く

2つ目のコツは、文章を書き始める前に構成を考えると3〜4倍速く書けるようになると著者は述べています。 これは僕の実感ですが、構成を決めずに書くと一貫性が保てないことが多いと思います。
先にアジェンダやまとめを先に書くだけでも効果があると思います。

プレゼンテーション資料を作る

先に構成を決めることに似ていますが、スライドを作成する前に全体の構成を手書きで作ってしまう方法です。
先日の登壇資料を作成するときに実践してみましたが、これは結構良い方法でした。
これまでアジェンダとまとめを最初に書くようにしていましたが、全体構成をざっくりきめてしまうと資料作成のときに一貫性を保つことができます。
具体的には1ページを4分割します。発表時間が60分の場合は15分ずつ4分割した紙に話したいことを時計回りにざっくり書いていきます。

字が汚い&写真写りが悪いので見苦しいかもしれませんが、前述した電子メモに記載したときのプレゼンテーションの構成です。

f:id:Shisama:20190203190631j:plain
Denoについて発表したときの資料作成の前に書いた構成図

読書感想文を書く

読んだ本の読書感想文をブログとして書くことで記憶の定着率や読解力が上がります。このエントリのように実践しやすいアウトプットだと思います。

要約を140文字で書く

Twitterです。読んだ本や読んだ記事などのインプットを140文字で要約します。要約力を高めるために良いアウトプット実践だと思いました。

最後に

手で書くことの効果と非言語コミュニケーションの大切さをこの本から学ぶことができました。
この本に記載されていることは科学的根拠を用いた説明が多いので信憑性があると言えます。
本の構成上、気になるところだけ読んでも学ぶことができるように工夫されています。また図や絵なども載っているのでイメージもしやすいと思います。
アウトプットが出来ていなくて悩んでいる方やアウトプットの質を高めたいと考えている方にはオススメできる本です。

最後までお読みいただきありがとうございました。オススメの本やこのエントリに関するご意見はTwitterまたははてなブックマークにてお願いいたします。