DDDによる才能の育て方

この記事は「[ドメイン駆動で才能についての誤解をぶった斬る](https://qiita.com/retemo/items/141e56c71cb85f79eb2d)」の続きです。


#前振り

前回は**使い方が定まらない**「才能」という言葉について「**文字の意味**」と「**目に見える事象**」から**本来の意味**は「能力の芽」と「突出した能力」の２つだろうと**推測**しました。

ただしこれはあくまで**事象に名前を付けた**だけです。その事象の裏に潜む「原理」、言い換えれば「正体」は掴めていない状況です。だから人々は「自分にとって才能とは何か」を考えるし、その結果として才能という言葉に「素質」であったり「生まれつき」だったりと言った**特別な意味**を見出すのでしょう。

ただ、それは「**才能の原因・素**」の**意味**であって「才能」の意味じゃないんですけどね。

例えば**虹の原理**について考えたり調べたからといって、虹を「光の屈折率の違い」と呼んだり、光の**色収差**を「虹」と呼んだら変でしょ？それと同じことです。

ドメインを扱う以上、IT技術者にもその**違いは認識して欲しい**のですが、でもまあ「才能の素」は確かに気になりますよね。

**「あなたにとって才能とは何ですか？」**

自分であればこの問いに「**努力の質を高めるもの**」と答えます。
（もちろん**才能の素**についての答えです）

前回、「努力の量か、努力の質か」であればそこそこ（高レベルな）人にとって永遠の関心事になり得るという話をしましたが、その延長ですね。（もし「努力の質」という言葉がピンとこなかったら「**勉強の質**」と読み替えてみてください。）
自分は凡人なので「努力」どころか「仕事の量か、仕事の質か」についてよく悩みます。それどころか、未熟だった頃は「**仕事の質ってどうやれば上がるのか**」ということ自体が悩みのタネでした。量はやっているうちに慣れて増やせますが、それで質が上がる訳ではありません。むしろ**手抜きを覚えて雑になる**事も多いです。
だからこそ「仕事の質」を高める「何か」を、それが汎用的でないなら「努力の質」を高める何かを「才能の素」に求める訳です。

えぇ、カッコつけてますが**そのまんま**です。

え？「その**何か**が分かれば苦労はしない」？
まぁ気持ちはわかります。
でも、**分かっても苦労する**んですけどね。

まず１つ言えることは
「仕事と同様に、努力も続ければ**コツ**を掴んで質を上げられる」
ってことです。つまりは「努力の質的向上は努力した先にある」んです。

それから前回私が記した**才能の解釈**にはまだ**解説してない部分**がありましたよね。

```
「重要な何かに自分で気付く力」と
「その気付きを結果に結びつける力」
```

そう、これです。
これがズバリ「**努力のコツ**（質を高めるもの）＝**才能の素**」です。
どうです？習得の難易度は高目でしょ？
人によっては**諦め**たくなるかもしれません。
まぁ気持ちはわかります。
でもね、**目標が見えてきた**分だけ**まだマシ**でしょ？
チャレンジの甲斐はありますよね？

#「才能の素」の育て方

という訳で前置きが長くなりましたが
「どうすれば**才能の素**を育てることができるか？」
が今回のテーマです。
言い換えると「どうすれば**努力のコツ**が掴めるか？」ですね。
さらに易しく言い換えれば「**勉強のコツ**や、**経験を活かすコツ**の掴み方」がテーマです。

が、予め断っておきます。
前回の最後にも述べましたが結局は**効率良く経験を積む**のが成功への**1番の近道**です。
なぜなら普通の人がそこそこ成功できるように**社会（特にIT業界）の仕組みはできている**からです。当然、それに乗っかるのが一番ラクです。
なのでここで扱う内容は正道というよりは一種の「詭道」言い換えれば「**チート**」です。

それでも効率良く経験を積むための選択肢は多い方が良いでしょうし、少なくともここで提示するのは転職エージェントが示すキャリア・プランよりずっと中身を伴っているはずです。ですから、しばらくお付き合いください。

#機会を得るために有望を装う？

しょっぱなからチート臭がプンプンとしますが、世の中、自分がやりたいことをできる機会はそう多くはありません。それが人気のジャンルなら尚更です。だから、まずは自らに才能があることを示し、それを任される（行うことを許される）必要があります。例え**見せ掛け**だけでも才能があるように見せた者勝ちです。
ここまで書けば前回から読んでる方はピンとくるでしょう。

そう、**将来有望**に見られたいなら、
要は世間で「**経験**」と呼ばれているものを**早めに、そして隠れて**積むことです。
どうせ他人は「才能」と「経験」の区別ができませんから。

もしチートが嫌なら最大限、**正規化された努力**を行ってください。
「正規」とは言い換えれば「標準」とか「単位、基本」のことです。
つまり「正規化された努力」は「**標準的な努力**」とか「無駄を削ぎ落とされた努力」と言い換えることができます。
ここで言う「正規化された努力」とは

```
 1. 「何が重要か」を考え
 2. 「どうすれば成果が出るか」を考え
 3. 「他の問題が発生ないか」を考え
 4. 「それが正しいことを確認する」
```
という一連のプロセスです。

大変そう？
そりゃあ「努力」ですから。
これを上手く隠せたらどんなジャンルでも「才能がある」あるいは「有能だ」って言ってもらえます。仮に隠せなかったとしても「正規化された努力」を続ければ見せかけでは無い基礎力が養われるはずです。だからたとえすぐには結果が出なくても見る人が見れば評価してもらえます。

だからアナタがもし他人が「正規化された努力」を続けているのを見かけたら「頑張っているなぁ」と生暖かく見守ってあげてください。

#質か？量か？

前回の最後の方で成功するために**ほどほどの人**が取れる選択肢として「**努力の量か、努力の質か**」を挙げました。
ただ、実際のところ「努力の質」なんて事を考えている人はむしろ**意識が高い人**で、大抵は「仕事の量か、仕事の質か」レベルのことを考えていると思います。なのでまずは「仕事」の「質と量」の性質から見ていきましょう。

仕事の「質と量」を比較するとどうしても「質」の方が高級そうに見えますが、スピードアップで量を稼ぐことは生産性の向上を意味しますし、必ずしも質の方が高級という訳ではありません。また「**過程**の質と量」が「**結果**の質と量」に直結しない点も要注意です。

そう、最終的に問題になるのは「結果」です。「結果＝アウトプット」の量や質を高めるのが最終ゴールですが、それが「過程の性質」と一致している必要はありません。求められているのが「結果の質」だったとしても「過程」は「量」で押し切っても構わない訳です。もちろん逆も然り。

昭和の時代は「過程の量」が全てみたいな風潮がありましたが、今や「働き方改革」の時代となり「過程の質」が全てみたいな風潮になってます。そんなの個人や仕事の性質によるんですけどね。

そもそも「量」の後に「質」が来るのが自然であって「質」が先に来るのは「チート」です。チートは時短にはなるけど「質を上げていくプロセス」を踏まないのですから「努力のコツ」を得る機会は確実に減るでしょうね。

ただまぁ「過程の質」の時代になって見えてきたこともあります。
過程の質を高めるために必要なのは「集中」と「効率」そして「優先順位付け」です。
前者２つは訓練で伸ばせますが、それでも限りが有ります。だからこそ「結果を最大化」するためには「優先順位付け」が重要になってきます。

が、そんなことより、まずは「**結果＝アウトプット**」ですよ。
前回述べたように結局「才能」は「結果」が出ないことには見えてきませんから。「才能が見えない」のでは、その素となる「努力の質を上げる方法」も測れないってことです。



##結果に結びつける

結果を確実に出すなら「経験がある」方が圧倒的に有利です。
では経験が無い分野では結果が出せないのでしょうか？
答えは否です。それが違うということを目にするからこそ「才能」という言葉が一人歩きするのでしょうね。
ここで先述の「**気付きを結果に結びつける力**」の話になるわけですが
これは「何に気付くか」によって具体的な**対処方法が変わって**くる、ある意味**一番厄介**な部分です。
その**大量の対処方法**を一々**経験するのは時間がかかり過ぎる**ため、かなりの部分を「学習」でカバーすることになります。


例えば経験には成功経験と失敗経験があり、
「設計」の成功体験については「**デザイン・パターン**」、失敗体験は「**アンチ・パターン**」として多くが共有されています。
このようにドキュメント化してあればその経験を共有することができます。

こうしたことを学ぶのは単純な努力ですから、できない人の方が少ないでしょう。
問題はそうして**得た知識**を「気付きを結果に結びつける力」に**どう結びつけるか？**ですよね。（そうじゃないと「努力の質」は上がりませんから。）

それには知識を**経験へと昇華**してあげれば良いのです。
ではその「知識」と「経験」の違いは何でしょうか？

その主な違いは
1. 一連のプロセスがつながっている（知識は断片的にナリガチ）
2. 五感で体験している
3. プロセスと結果が強く結びついている
の３点です。

よく「他では得難い経験をした」なんて文章を見かけますしそれはそれで事実なのでしょうが、少なくとも前２つについては代替え手段があります。
「プロセス」はマニュアル等である程度の「**追体験**」ができますし「五感」の代替えには「**感情**」が使えます。

ちなみに、「追体験」と「感情」はどちらも**小説やらコミックの得意分野**ですね。
実際の業務では下手に「感情」に訴えると今日では逆に「パワハラ」で訴えられかねませんけど。

ただし、この２つだけだと「プロセスと結果」が強く結びつかないので、経験を短縮するためのテクニックに過ぎません。で結局、勉強だけでは足りませんからそれを経験へと変える「行動力」は不可欠です。

では「行動力」の源は？
よく言われるのはモチベーション＝**動機**ですね。

まとめると
「**追体験、感情、動機**」が「**知識を結果に**結びつけるためのコツ」ってことになります。これだけ聞くとなんか精神論っぽいですが、あくまで具体的な知識が有ってこそなので、その辺りは誤解の無いようにしてください。

え？「**気づきを結果に**」じゃなかったのかって？

そうなんですが、「気づき」と「対策」を結びつける部分って要は「パターン・マッチ」の一種であって、おそらく「気づき」の範疇に含まれるんですよね。

##重要な何かに自分で気付く

さて、話変わってここからは
「**重要な何かに自分で気付く力**」の話です。
これには先の「優先順位付け」も含まれます。

これが「努力の質」を上げるのに役立つ理由は分かりますよね？
そう、無駄が減って**学習や経験の密度**が上がるからです。

で、話を大きく戻して申し訳ないのですが、先の記事で扱った「才能に関する事実」には、実を言うと取り上げなかった４つ目があります。それは「**生まれつきにしか見えないが、そうじゃ無い才能がある**」で、そう、それが「重要な何かに自分で気付く力」です。

何しろ他人に教えられることなく「**自分で気付く**」のですから、あたかも素から持っていた「生まれつきの能力」のように見えてしまう**紛らわしい能力**です。
おそらく「才能」のことを「生まれつきの力」だと確信している人の中にはこれに騙されている人も多いことでしょう。
ですがこれは「**洞察力**」とも言われる「観察力と思考力」を組み合わせた複合能力であり、もちろん**習得可能**です。

ただし実用レベルで「洞察力」を身につけている人は残念ながらマレです。
洞察力を身につけるには「**自分の目で見て、自分の頭で考える**」必要がありますが、それだけで身に付くほど**単純な能力ではありません**。「研究者のワークフロー」や「デバッグのワークフロー」あるいは「**正規化された努力**」の反復を通して徐々に身についていくものですが、これだけでも習得の難しさが伺えます。
その他にも**阻害要因**は色々あります。

1. 生まれつきという誤解
2. 難易度が桁違いに高い
3. 義務教育に入っていなかった
4. チャレンジを許される人が社会的にマレ
5. 表面的な才能で人材を選ぶ人事レベルの低さ

1は先述の通り、紛らわしいからです。2は「洞察力を磨く方法」を知らないと無限に時間を浪費しますし、やり方を知っていても「答えを知っている」のに比べれば遥かに時間がかかります。3は「詰め込み学習の弊害」ですね。近年改善されつつあるようですがそれでも十分とは言えません。４は効率の問題です。何しろ時間がかかりますから、社会活動ではそれ以外に手段がない場合にのみ優秀な人材にその手の仕事を割り振ります。5は人選側の能力不足です。「結果を早く出す奴＝**才能があるように見える奴**」に重要な仕事を割り振っているケースが多いのですが、これは**素質や個性**を見ようともしない**素人じみた**やり方です。ですが単純で理解しやすいため、なかなか廃れません。

特に3と5のコンボは深刻ですね。**「観察力と思考力」は「詰め込み学習」では育めません**し、**「詰め込み学習」した方が「早く答えを出せる」**のですから最悪です。

こうした諸々の事情により、そもそも洞察力を身につける機会に恵まれること自体が少ないのですが、その点では**IT業界**はまだ**恵まれて**います。「車輪の再発明」等、自分で気付くことを禁止しているかのような文化もありますが、「先が見えないデバッグ」「高過ぎる設計自由度」「ベストプラクティスが見えてこない実装方針の検討」等々、**自分の目で見て自分の頭で考える機会**は豊富です。

そして中でも「**ドメイン駆動**開発」を正しく行えば「重要な何かに自分で気付く力」は**勝手に身に付く**と言い切れます。つまり「ドメイン駆動」も**洞察力を鍛える方法**の一種です。

前の記事「ドメイン駆動で才能についての誤解をぶった斬る」がその良い例です。

お暇ならもう一度前の記事を読み返してみてください。
その順番がドメイン駆動分析を行う際の**典型的なプロセスに沿っている**ことが見て取れると思います。これは日々「ドメイン駆動」を心がけて、その分析手法に馴染んでいたからこそ出せた成果です。
少なくとも私は「才能とは何か」について**他人から教わったことはありません**。見本だけは書物にしろ実物にしろたくさん目にしてきましたが、たぶんIT業界に入る前の私ではここまでの分析はできなかったでしょう。

まぁわざわざ「ドメイン駆動分析」を「才能の分析」に使う暇人は私ぐらいかもしれませんが「ドメイン分析」を仕事で任されている人は沢山いますよね？その人達は「自分が恵まれた立場にある」ことを自覚してください。長くなるのでここでは扱えませんが「ドメイン駆動」には気づきを得るためのメソッドも機会も豊富に含まれています。

だから、もしアナタがドメイン分析を任されているなら問います。
仕事に全身全霊で取り組んでますか？

別に重要なことに自分で気づいてなくても構いませんが、そうあろうと努力しないのなら、その訓練の機会は他の人に譲ってあげてください。じゃないと**社会的な機会損失**です。

##才能や素質の先にあるもの

さて、ここまでずっと才能について述べてきましたが、才能や素質を持っている人が持っていないものがあります。それはそう「**経験**」です。
ここで言う経験とはチートな「人工才能」や、「経験の代替え」で述べた半端なやつではなく、キッチリと**一連のプロセスが完結**している**経験**のことです。

その完結した経験を**一般化すると**何度も出てきている「**正規化された努力**」になります。
そしてそのプロセスはIT業界で**品質保証のために実践**されているプロセスでもあります。

おさらいしてみましょう。

```
 1. 「何が重要か」を考え
 2. 「どうすれば成果が出るか」を考え
 3. 「他の問題が発生ないか」を考え
 4. 「それが正しいことを確認する」一連のプロセス
```

1と2は「重要な何かに自分で気付く力」と「その気付きを結果に結びつける力」に対応しています。言い換えれば「才能」あるいは「机上論」で何とかなる部分です。
では3や4はどうでしょうか？
3の典型例は**デバック時の水平確認**ですが、2以上にパターンが多くなるので「ドメイン」を分けなければ効果的な分析はできません。つまり具体的である必要があります。
4は実践してみないと結果が出ません。

そう、3と4は**経験にのみ含まれます**。
もし、1と2にばかり気を取られて3と4を疎かにしたら...実力はどんどん開くことになります。だからこそ「才能とか素質とか」余計なことに気を取られずに**普通に仕事を覚えるべき**です。

というか、共同開発では「素質」はむしろ邪魔ですらあります。
ちょっと脱線しますが、いい機会だからここらで「素質」の話もしておきましょう。

##素質がある方が苦労する？

実は素質があるからといって素人がそのままで現場のエースになれることはまずありません。
学生の頃からプログラミングが得意だったという人に多いのが「プログラムの構造把握能力に長けているタイプ」です。
こういう人は似通ったメソッド名が並ぶ、時には７〜８万行ぐらいに膨らむ１万行超のViewControllerを難なく使いこなしたりしますが
それを引き継ぐことになった凡人にとっては悪夢でしかありません。
野生の才能はそのままでは共同開発では活かしにくいものです。
普通の人ならDDDやSOLID原則等のノウハウにメリットを見出せるでしょうが、
それがなくてもプログラムが組めてしまう人にとってはこれらを学ぶモチベーションを持てないため、かえって苦労することも珍しくありません。

それでも素質に恵まれたいですか？

#まとめ

さて、**努力のコツ**は伝わったでしょうか？

ここで提示した「知識を経験に昇華する方法」「洞察力を養うプロセス」「正規化された努力」は「努力の質」を高め、体得できれば「才能の花や実」あるいは「突出した能力」と呼ばれる成功につながる強力なツールです。

とりあえずは才能（の素）を身につけるための道標は一通り示せたと思います。

ただし、これらを周りが強制して習慣付けることは今も昔も困難です。
IT業界は機会に恵まれているとは言え、才能から教えるほど暇な訳ではありません。
むしろ人材不足で余計なことをする余裕はないでしょう。
つまり、あとは自分の足で歩く必要があります。

また、そうでなくても「才能の個性」という問題があります。
例えば先の**正規化された努力**を見て「そんなの既にやってるけどうまくいかない」という人は**自分の個性を理解できていない**可能性があります。
結局、自分という最小ドメイン単位のことは自分で向き合うしかないんです。

これは私の勝手な想像ですが
「努力 or 才能」表現が増えた背景には
経験を強制的に積ませる機会が減ったからでは無いでしょうか？
だから自発的に動ける人以外は経験≒才能を体験する機会が減って
努力と才能が別物のように思う人が増えているのではないでしょうか？

だから厳しいようですがあえて言います。

```
ぶっちゃけ自分の才能ぐらい自分で引き出せや！
```

##おさらい

###「才能」の意味
言葉自身の意味は
「突出した能力」もしくは「能力の芽」
その事象を起こす素となっているのは
「重要な何かに自分で気付く力、及び、その気付きを結果に結びつける力」

### 言いたかったこと
「ドメイン駆動開発を正しく行えば才能なんて勝手についてくる」
「ぶっちゃけ自分の才能ぐらい自分で引き出せや！」