メインコンテンツへ移動

3年目

無料2019-07-13#Mind

「10年の軌跡」の3年目

0. 振り返り

いつの間にか、互いに貸し借りなしと言える時期が近づいてきた。そしてようやく、双方がどのように報い合ってきたかに気づいた:

5年間の青春 <-> リソースと機会

学習の成果

51件のブログ記事のうち:

  • TypeScript:TSの特性 x19, d.ts x1

  • VS Code:VSCode拡張機能 x3

  • React:Reactの新機能 x9, Taro x1

  • 仕様:ESn x3, GeneratorとAsync function x1

  • バックエンド関連:Query Builder x1, Tokenログイン x1, BFF x1

  • Node.js:Node.jsの10年史 x1

  • コンパイル原理:理論 x1, 実装 x1

  • 関数型プログラミング:Haskell x1, 副作用の処理方法 x1

  • ツール:Git Submodule x1, Babel x1, Lottie x1

  • ちょっとしたツール:emoji utils x1

  • CSS:CSS Feature Query x1, Flexboxの計算ルール x1

TypeScriptという大きな船に乗り込み、半年間を費やしてVS Codeのいくつかの秘密を探り当てた。Reactの新機能にはかろうじてついていき、バックエンドの常識的な空白を一つずつ埋め、ES仕様は一気に3年分を補完し、関数型プログラミングは一区切りついた。ツールやちょっとした制作物、CSSなどはほぼWeb環境から離れた……。技術的な知識の蓄積は多いが、技術力や価値の出力へと変換されたものは少なく、知識の境界線が後方(バックエンド)や下方(低レイヤー)へと伸びている。

目標達成度

  • フロントエンド技術のエコシステムはReact体系、およびそこから派生したTaroなどのクロスプラットフォームソリューションに注力した。

  • 理想のフレームワークについてはさらなるアイデアがなく、実践の場も不足していた。

  • アルゴリズムについてはいくつかのポイントを深掘りしたが、同様に実用シーンの欠如に阻まれ、継続できなかった。

  • プレゼンテーションスキルに関しては進歩がなく、習慣が崩れて以来、今日まで放置されている。

  • デザインの審美眼については深掘りせず、以前の「整列」や「コントラスト」といった常識的な段階に留まっている。

  • 思考についてはいくつかの気づきがあったが、体系化されておらず、自分に合った思考モードを形成するには至っていない。

  • 英語は進歩するどころか後退し、覚えたはずの単語も日に日に記憶が薄れている。

メインラインであるReact体系以外ではほとんど行動が伴わず、フレームワーク、アルゴリズム、プレゼン、デザイン、英語のどれも向上しなかった。全体的な達成度は非常に低い。実際の行動が計画から逸脱しており、根気が以前ほどなくなったことと、計画自体が適切でなかったことが原因かもしれない。

成長の経緯

1年間の50件の近況記録のうち:

  • 計画の欠如:時間と効率 x11, 目標指向 x3

  • 思考の開始:思考と内省 x4, 主体性と変化 x4

  • 自制力の低下、習慣の崩壊:スローペースと継続 x8, 自制 x4

  • 得られたもの:所感 x12, 経験 x2

時間管理と効率の問題は解決されないままだが、思考力は意識的に強化されており、経験や気づきは徐々に増えてきた。しかし、自制力の低下は顕著である。

10月から始まった半年間の「職人的な集中」は、この3年間で唯一、まとまった時間を連続して投入できた期間だった。継続的なリソースのサポートの下、いくつかのポイントを極めることができ、その過程でVS CodeやTypeScriptとかけがえのない縁を結んだ。

1. 気づき

体系的思考

技術をより体系的な視点から捉え、体系的な構築能力を強化せよ。

この評価をもらったあの日から、体系化の定義について時折考えを巡らせてきた。一体どのような思考プロセスが体系的と言えるのだろうか?

1年半後、「体系化」の類義語は「パス(リンク)」と「ループ(クローズドループ)」である、つまり「パスの視点から考える」ことだと理解し、そこから「ループ思考」という言葉を導き出した。核心に近づいたような気はしたが、まだ何かが足りない、実感が伴わない感覚があった。

最近になって、最もふさわしい説明は実は「ストーリー(化)」であることに気づいた:

体系的思考とは、ストーリーの各部分を密接に結びつけることである。

背景があり、中心があり、メインラインがあり、文脈がある。一つの事柄を大きな背景の中に置き、その中心的な意義を明確にし、メインラインを伸ばす。さらに関連する事象や登場人物を加えて文脈を形成すれば、システムが出来上がる。以下の「リーフ(葉)モデル」がそれに対応している:

[caption id="attachment_1981" align="alignnone" width="969"]leaf model leaf model[/caption]

つまり、体系的思考とは全体的な視点から問題を分析する手法であり、問題をメインラインや大きな背景と結びつけること、それが「パス」であり、循環するものが「ループ」なのだ。

モデル

数学の分野では、モデルの類義語は公式だ。実際の問題を記述するために数学モデルを構築し、数学的な問題を解くことで実際の問題を解決する。このモデリングの考え方は、実際にはすべての問題に当てはまる。例えば飛哥が言ったように:

何度言ったらわかるんだ。プラットフォームのモデルで要件を推し量れ。何でもかんでも機能を詰め込むんじゃない。

どの製品にもモデルとしての属性があり、それによって製品が何に適しており、何をすべきでないかが決まる。同様に、どのソリューションにも対応するモデルがある。問題を解決するプロセスとは以下の通りだ:

  1. 問題をモデルに当てはめる

  2. モデルを実行して解を求める

どのように当てはめるかが鍵となる。モデルで解決すべきだが現在のモデルでは直接解決できない問題に直面したとき、2つの選択肢がある。モデルを逆に豊かにし改善するか、既存のモデルを通じてそれほど直接的ではない方法で解決するかだ。多くの場合、モデルの健全な発展のためには、後者を選択すべきであり、時には選択しなければならない。

聴くことと話すこと

聴くことよりも、私たちは常に話すことを切望している。本能的に表現し、認められ、話を聴いてもらい、尊重されたいと願っているからだ:

人は生まれながらにして声��出すことができる。高らかな泣き声で宇宙に向かって「Hello World」と叫び、新生の力で「私はここにいる、私こそが私だ」と声を上げる。

しかし、往々にして聴くことは話すことよりも力強い。同時に、話を聴くことは打ち明けることよりも難しい。『男は火星から、女は金星からやってきた』で、聴くことの重要性を初めて知った:

ストレスを感じている女性は、問題を解決することを急いではいない。まずは自分の本当の気持ちを話し、他人の理解と共感を得たいのだ。そうして初めて、安らぎと心地よさを感じることができる。

聴かずにただひたすら話すだけでは、何の意味もない:

男性は女性の機嫌が悪いと見るや、いそいそと「修理の達人」の帽子をかぶり、女性の問題点を指摘し、解決策を提示しようとする。しかし、それは女性をさらに不快にさせるだけだ!

人をパイプに例えるなら、聴くことは入力であり、話すことは出力だ。聴いた内容を加工して話すことが理解であり、2つのパイプが繋がることが共感なのだ。

なぜ私はブログを書くのか

知り合ったばかりの頃、毎週ブログを書き終えるまでは絶対に外に出ようとしなかったね。

知り合ってから1年が経ち、こう変わった:

君が2日間ずっとブログを書いているのをただ見ていたよ。

では、なぜブログを書くのか? なぜ毎週書くのか?

形式的には、書き残すのは大抵、覚えきれないからだ。あるいは、覚える必要はなく、必要なときに調べればいい類のものだ。したがって、ブログの多くは自分に向けたものであり、知識の整理と経験の総括が主目的だ。先見的な予言もなければ、歴史を貫くような洞察もめったにない。

毎週1記事書くのは、あの時から時間が1週間単位で高速に回転し始め、バージョンの数字が1つずつ増え、カレンダーが1行ずつ急速にグレーに染まっていったからだ……。ブログは週報に似ており、周期的な内省と沈殿のようなものだ。そして1週間という期間は、ある程度の進捗を生み、経験を得るのにちょうどいい期限である。

週を重ねることは、グラウンドに伸びる軌跡のようだ。一度立ち止まって息をつけば、そこで終わってしまうかもしれない。だから、周期は一種の制約であり、最も継続が困難な時でも壊したくない習慣なのだ。

一方で、ブログを書くことは創造のプロセスであり、決して資料の整理ではない。それは内面化と洗練の作業だ。その過程で常に新しい発見があるため、どの記事にも魂が宿っている。それは知識のインデックスのようなものだ。例えば:

これらのサポートにより、Classは完全なコンポーネント特性を備えた唯一の選択肢となった。Classには多くの問題があるが、代わりになるものはない。――『関数型コンポーネントの台頭』

Query Builderは、Queryの作成とシリアル化を分離した。――『Raw SQL, Query BuilderとORM』

本来内的に関連しているコードがライフサイクルによってバラバラにされ、全く無関係なコードが最終的に一つのメソッドに詰め込まれてしまった。――『React Hooks紹介』

さらに興味深いことに、Render PropsとHOCは相互に変換することさえ可能だ。――『Reactコンポーネント間のロジック再利用』

そして魂のない記事は、インターネットの記憶におけるゴミでしかない。

片足で10年歩む

片足で10年歩み続けるのは並大抵のことではない。そろそろ、もう一方の足を少しずつ伸ばしていく時だ。

技術一本の路線で10年歩んできた先輩は、その方向性の限界と終わりを見据えたようだ:

現場で働いて10年近くになるこの節目に、専門技術だけを追求する道がチームにさらなる価値をもたらす余地は、次第に小さくなっていることに気づいた。

一本道の技術路線が行き詰まるのは、究めるべき技術をすべて知ったからではなく、個人の能力を強化し続けるだけでは、チームや企業に対して明確な貢献をすることが難しくなったからだ。

つまり、この段階に達すると、個人の技術による企業への価値出力は最大化されつつあり、技術力だけの向上では価値の突破口を見出すのが難しくなる。技術リーダーとしての役割から一歩踏み出し、人や事の変革を考える必要がある。

もし私が頑なに「10年の軌跡」を今のまま歩み続ければ、技術的な達成は先輩に及ばず、人や事の能力もそれほど優れたものにはならないだろう。先輩ははるか先からその終わりを見通しており、私は同じ道のりを躊躇しながら進んでいる。幸いにも、その背中越しに未来を予見することができた。

では、私に適した路線は何なのか、どうすれば自分らしさを出せるのか?

……まだ確かな答えはないが、勇気を持って挑戦する時が来た。

二. 目標

4年目

  • 後方:バックエンドに転向するのではなく、フロントエンドから後方へと拡張する。

  • 下方:アルゴリズムを深掘りするのではなく、Node.jsのC++拡張に取り組む。

  • 表現:聴くことが先、話すことは後。

  • 思考:体系的思考能力を強化する。

  • 吸収:会社はあまりにも多くのリソースを提供してくれていた。残念ながら、今になってようやくそれに気づいた。

より良い自分に出会うために

凡人は自分の間違いから学び、賢者は他人の間違いから学ぶ。

間違いだけでなく、正しいことも学ぶことができる。

影響力を育てる

後に、外部への発信こそが影響力の発信であることを悟った。それは一定の収入をもたらすだけでなく、膨大な人脈も引き寄せる。なぜなら、そうする人があまりにも少ないからだ。そして発信を好む人は、似たような人を探し求める。いわゆるマタイ効果で、発信が増えるほど影響力は増大していく。

技術知識を蓄積し共有すると同時に、個人の影響力も発信していく。もっと早く始めるべきだったが、今からでも遅すぎることはない:

木を植えるのに最適な時期は10年前だった。次に良い時期は今だ。

時間を管理する

計画と時間管理は重要だ。なぜなら:

効率の悪さは情熱を削ぎ落とすからだ。

根気と継続は前提条件だが、マイルストーンとなる段階的な成果によるインセンティブも重要だ。一定のペースで走るのと、ペースを変えて走るのと同じだ。単調な等速走行は苦痛を蓄積させるが、リズムのある変速走行はプロセス全体にメリハリを与える:

4歩で1呼吸、6歩で1呼吸。最終的に自由呼吸法が一番楽だと気づいた。

知識から価値へ

マクロ的には、技術はビジネスと結びついて初めて価値を生む。知識と業務の関係を具体化すると、このようなウェイトリフティングのモデルになる:

 -           -
| |---------| |
 -  \  ○  /  -
     -( )-
      | |
    --   --
   |       |

両腕はそれぞれ技術知識と業務知識を表し、2つのプレートは技術力と業務価値である。

つまり、知識が筋肉の強度を決め、業務価値こそが重量挙げの記録なのだ。さらに重要なのは、強い筋肉や重いプレートが鍵ではなく、両腕の力が調和し、左右の重量が均衡して初めて、転倒することなく美しいフォームで持ち上げることができるということだ。

三. 計画

今、この瞬間から変えていく。

メインライン

  • 後方(バックエンド拡張)

  • 影響力

  • 思考力

サブライン

  • プレゼンテーションの技術

  • 下方(低レイヤー拡張)

日常

  • 表現

  • 吸収

コメント

コメントはまだありません

コメントを書く