色んな事を書く

シンプルさを極めたエンジニアになりたい

【読書メモ】世界一流エンジニアの思考法

1 章 世界一流のエンジニアは何が違うのだろう

「早く出来るように頑張る」ということが最終的な生産性をむしろ下げていた

 

コピペをしたほうが「成果」は出る。

 

「理解」して「実践可能」にしていればそんなことすらする必要はない。

自分の場合はなるべく一つ一つの作業を理解して取り組むようにしていたけど、その作業をこなすための理解に留まっているように思える。なぜ今そのコードを書く必要があるのかを説明する事は出来ても、その学びを別の何かに応用するって力が弱いと感じてしまう。本質的な部分への理解に達していないのかもしれない。正直そういう学び損ねはもったいないと思うから、業務後や休みの日にでも時間を取ってじっくり学ぶようにする。

・その構造をつかんで、人に説明できること

・いつでも即座に取り出して使える事

・知見を踏まて応用が効くこと

理解の三要素ね。これでいうと、説明できることにとどまっている気がする。即座に取り出せるようにするにはどうすればよいか。どうにも本質を理解しておけばいつでも使えるようになるって話だから、まずはそこをやる。とはいえ本質とは何かなぁ。「どんな課題を解決しようとし、なぜこういう事をしたのか」、みたいな背景を理解する事か?

後は基礎・基本への理解なんだろうね。C# の文法だったり言語仕様、ソフトウェア工学への知識とか、そういうベースを固めて目の前の問題を説明できるようになろう。C# の言語仕様とか目の前の問題を解く最低限しか得ないから、応用は効きづらいんだろうな。時間かけてもいいから、あぁすればどうなるのか、みたいな好奇心を大切にしてインプットをしてみる。

メンタルモデルをつくるとそれが出来るようになる

 

メンタルモデルとは、人々が世界を理解し、予測し、解釈し、新しい状況に適応するための、自己の心の中のイメージや理論

これはわかる。複雑なフローをシンプルにしてみんなが理解しやすい形に落とし込むのとか割と得意。メンタルモデルを定義して作ることが設計だとも思っている。ユースケース駆動開発の本に載っている ICONIX プロセスや DDD のアプローチってそういう側面を持っているから好きだったりする。

2 章 アメリカで見つけたマインドセット

より少ない時間で価値を最大化するための考え方。

  • 望んでいる結果を達成するために、最低限の努力をする
  • 不必要なものや付加価値のない仕事を無くす
  • 簡潔さを目指す
  • 優先順位をつける
  • 時間や費やした努力より、アウトプットと生産性に重点を置く
  • 長時間労働しないように推奨する
  • 会議や会議の時間内で効率的かつ生産的に価値を提供する

優先順位の捉え方が全然違っているのは驚いた。よくあるのは複数の事柄に対して優先度をつけて、より高いものから着手していこうって考え方。こうではなくて、最も優先度の高いもの以外はやらない、ってのがアメリカのスタイルらしい。

Refinement も同じ発想なのかな?プロダクトやユーザにとって最も価値のあるもののみを提供し、その仮説検証のサイクルのスピードは高めたい。今の開発組織でやっているのって、この PBI とついでにこれも見たいな感じでユーザにとって価値のあるリリースが先延ばしになりがち。負債解消とかそういうことに対するモチベーションもあるから、一概にどちらが正しいとは言えないけど。本書を読むと目の前の成果だけでなく将来的な生産性も考えたほうが良いスタンスだったので、この場合は負債も計画的に返済して以降になるか。ただし、最もインパクトの大きいもの一つ、になるのだろうが。

本当に必要な機能は何か、不要な機能は何かを見極め、プロセスの改善を実施していかに「楽」をしてより高い価値を生み出せるか。なぜ今のそのコードを書く必要があるのか、を説明する事は出来ても、その学びを他の場面に応用していく力がまだ弱いと感じてる。もちろん時間をかけてじっくりやれば解消はするんだけど、どうも「目先の成果」を出すために本質の理解を怠っているかもしれない。正直そういう学び損ねはもったいないと思うから、仕事終わりや休みの日にでも復習する時間を取ろう。

「楽をしたい」「楽できるように頑張る」みたいなマインドは持ってたけど、まだまだ甘いんだろうな。思い返すと運用作業を楽にするため、とか実装を楽にするため、みたいな発想はあっても、プロダクト開発を楽にするため、っていう発想はあんまなり。「本当にこの機能は必要か」を徹底的に問うているわけではない。

チームでやってる Refinement だと「こんな機能本当にいるかね?」って批判的な人格をインストールして臨んでみて入るんだけど、まだどこかで作ってみればいいやんがあるんだろうなぁ。ユーザへの理解が足りないってのもあるんだけどね。

時間は固定して、その中で価値を最大化させる

これは耳が痛いね~。結論が出ていないとついついそれを追って時間が長くなりがち。その時間の中で最大の価値を出すようにコントロールしないといけない。価値を出せていないと感じてしまうと、なんかしないといけないと感じてついつい時間を延長してしまいがち。たぶんここも限られた時間の中で何に論点を置いて議論しつくすのかってが大事なんじゃないだろうか。参加者の脳みそをそこに向けさせるってファシリテーション的なスキルも必要になってくるんじゃなかろうか。

成果物に対してもだらだら時間を延ばして完成されるってのもあるよね。まだ見せられないから、完成していないから、って理由で本来与えられて時間を超えたり、残業したりとかね。こういうのがはびこると生産的な組織にはならないんだろうなぁ。この程度で見せるのは恥ずかしいって感情もあると思うだけど、まず見せてフィードバックをもらって作っていくってほうが大事。そういうことが出来る文化にしていかないといけないってのもある。

プロジェクトが中止になったら成功した時と同じようにパーティをするような会社もある。なぜなら、その「失敗」から学ぶことが出来たから

「学ぶ」というスタンスが根本から違う気がする。僕も学ぶのは大好きで常に学び続けたいと思うが、思い返すと本や情報、人との会話の中での学びが多いように感じた。もちろん何かしらの経験から学ぶこともたくさんあるんだけど、この本での主張は「挑戦し失敗から学ぶ」という意味での経験になっているように思う。僕は一つの仕事をこなすことを経験として捉えていて、どでかい失敗を学びと捉える事はあんまないなぁ。だから失敗したいなぁとぼんやり考えていたのかもしれない。

成功したら称賛、失敗したら感謝って習慣が良いね。

「無理を承知で」のお願いの連鎖はみんなの疲弊を生み、チームや組織の業務改善に全くつながらない

これは本当にそう思う。何かしらのイノベーションやアイディアって一定の制約があるからなんだよね。立体駐車場は車を止められる土地が限られてたから、縦方向に面積を拡大すればいいじゃんってアイディアになったんだと思うし。何でもかんでも残業でカバーはせっかくの業務改善や組織課題の発見のチャンスを潰してしまうことに繋がりかねない。

結果を重視するのではなくバリューを重視する。やってみてどうだったか、改善点はどこにあるのかを常に考えるマインドを持つ。

3 章 脳に余裕を生む情報整理・記憶術

技術を徹底的に理解し、理解した情報の整理をして、すぐに取り出せるレベル 1 の状態にしてこそ、長い目で見た時の生産性は上がる

僕はどちらかというと広く浅くのタイプの人間だと思っていて、何かしらの問題でもググるキーワードを覚えていて、情報集めてすぐに解く。んで、まだ自分の知らない領域の学びに対してモチベーションを感じるんだけど、そうじゃないって事ね。一歩ずつ使える武器を増やしていくことが大切ですと。だからブログとかで丁寧に言語化をするのも良いんだろうね。

記憶力とか知識の定着には自分の言葉で説明する事が大切。ブログでのアウトプットも該当するだろう。日々の仕事の中で得た業務知識や作業内容を誰かに説明するような形で残しておくことも意味がある。こういう時に使えるのがコーネルメソッド。

究極の情報整理ノート『コーネルメソッドノート』! | 株式会社 学研ホールディングスのプレスリリース

後は何かをインプットする時には常に誰かに説明するつもりになるってのも確かに大切。

4 章 コミュニケーションの極意

「その場で吸収できることを最大化したい」というスタンス。複雑なものを一気に提供されてもその場で理解しきれないので、単純にリアルタイムに理解できる適切な情報量が好まれる

学び。

テキストコミュニケーションに慣れていなかったりすると、本質的な情報以外の何かを付与してしまうこともあるのだろうか。伝わり方を気にして、とか。それも文化的な問題の気もするけど。

ディスカッションは「どちらが正しいのか」はどうでもよく、「自分の考えを自分なりに深めるための行為」なので、初心者こそやったほうが良い。

この考え方はなかったな~。「どちらが正しいか」を決めようと思ったことはないけど、「自分なりに深める」というのもなかった。意見交換って意味に近いのだと思うけど、そういう場面があんまりなかったかもしれない。僕はこう思うってなって、でも私はこう思うってなった時に、お互いの考えを深める事が出来ているかな~と言われると微妙。確かにそういう考え方もあるよね、程度で終わってしまっている。

ただ決めるのは君だし、僕の意見なんて全然無視していいよ。

僕もこのスタンスなんだけ、どうなんだろうな~と思うときがある。根底にはさ、僕の意見なんて相手の成果物のクオリティを今よりも高いものにするためのものでしかなくて、自分の思い通りの成果物にしてほしいなんて思っていないんだよな。だから究極言うと、PR で 100 個コメント付けても一つも対応しないとかは全然 OK。ただし、意見は欲しいんだけどね。

もっと成果物に対するリスペクトを表していった方が良いのかな。まずは作ってくれてありがとう、から会話を始めるとか。思ってるだけじゃ一生伝わらないし。言葉だけじゃなく態度でも示していこう。

6 章 仕事と人生の質を高める生活習慣術

本当に生産性を上げたければ長時間労働をやめなければいけない

長時間労働をやめて、生産性を上げるための学びの時間を確保してねって事。時間を区切ってその中で成果を出すように工夫を凝らすような力学を発生させるって意味も含まれているんだろうが、ここでは「自己学習」をしていくことが大切だとのこと。

「整理され、検索せずにすぐに取り出せる状態になっている事」そこまでやって「完了」と捉える

これいいね。やってみよう。確かに自分の人生をコントロール出来ている感覚はない。調べたいなや試してみたい、やってみたい事が山済みでそれが気を散らす原因になっている可能背はある。一つ一つ処していけば今と何か変わるのかも。

5S の話に近いよね。

5Sとは何か | 5S|ナビゲート