Mindsetという言葉をご存知でしょうか?日本語では「マインドセット」とカタカナ表記されることが多いですが、「考え方」や「思考法」と訳されることもあります。ただ、心理学の定義によれば、「思考(Thinking)」とは「情報を操作し、概念を形成し、問題解決や意思決定、反省的・創造的思考を行うプロセス」を指します。一方、Mindsetは「態度、見解、前提、習慣」の集合体であり、思考プロセスの結果として生まれるものです。つまり、思考がMindsetに直接影響を与えるのです。
では、Toolsetとは何でしょうか?Toolsetは、仕事や作業を助ける道具の集合体です。たとえば、IDEや開発フレームワーク、ライブラリなどがこれに当たります。Toolsetは私たちのニーズを満たしてくれますが、長期間使いすぎると、自分の能力が低下してしまうこともあります。
MindsetとToolsetはどのように関係しているのでしょうか?エンジニアの世界では「フレームワークやライブラリを使う前に基礎を学べ」というアドバイスがよくあります。フレームワークの乱用の根本的な原因はどこにあるのか?それは「ベトナム人は手っ取り早いことを好むからだ」などとよく言われますが、実際は違います。使っているフレームワークの多くは海外で開発されたものです。違いは、ベトナム人と海外のエンジニアのMindsetにあるのです。
どんなToolsetにも、必ずその背後にはMindsetがあります。Toolsetが生まれた理由や目的があるのです。万能なToolsetは存在しません。言語やツール、フレームワークは、私たちが直面する問題の一部しか解決できません。Toolsetを乱用してしまうのは、そのToolsetのMindsetを理解していないため、もしくは自分自身のMindsetに問題があるためです。
たとえば、プロジェクトにアジャイルを導入するときは、アジャイルMindsetを理解しなければなりません。プロシージャ指向からオブジェクト指向に移行するときも、Mindsetを変える必要があります。モノリシックからマイクロサービスへの移行も同じです。
幸い、Mindsetは変えるのが難しいですが、変えることは可能です。Toolsetを変える(つまりMindsetを変える)際に苦労する人も多くいます。解決策は、そのToolsetのMindsetをしっかり理解し、深く学ぶことです。いきなり使い始めると、後で大きな問題にぶつかることもあります。
すべての問題に適用できる2つのMindset
問題の根本を解決するためには、どのMindsetが他のMindsetの形成に影響を与えているかを理解する必要があります。Carol Dweck著「Mindset: The New Psychology of Success」によれば、人のMindsetには「Fixed Mindset(固定型)」と「Growth Mindset(成長型)」の2種類があります。
-
Fixed Mindset(固定型)
才能は生まれつきで変えられないと信じているタイプです。何をやっても無駄だと思い、失敗した人はずっと失敗し続けると考えます。自分が「頭がいい」と言われると、それを守るために学習や努力を避ける傾向があります。 -
Growth Mindset(成長型)
才能は努力や経験で伸ばせると信じているタイプです。課題や挑戦を成長の機会と捉え、誰もが自分より賢くなれると信じています。もちろん、誰でもアインシュタインになれるわけではありませんが、学びや努力で賢くなれると考えます。
つまり、学びに対するMindsetが、他のMindsetの形成に大きな影響を与えます。Mindsetは学びと実践を通じて培われるものです。実際の現場でよく見られる良くないMindsetの例をいくつか紹介します。
- 数学が得意でないとエンジニアになれない
- 言語Aを使う人は言語Bを使う人より優秀
- 女性は男性よりコーディングが苦手
- コーディングが上手ければ良い仕事ができる
- 有名大学出身者は普通の大学出身者より仕事ができる
- これだけ勉強すれば十分
- 独学の方が人から教わるより良い
現場では「System Thinking」「Product Mindset」「Agile Mindset」「Project Mindset」「Leadership Mindset」など、さまざまなMindsetが語られます。実際、職種や立場によって必要なMindsetは異なります。たとえば、プロダクトマネージャーにはProduct Mindset、プロジェクトマネージャーにはProject Mindset、リーダーにはLeadership Mindsetが必要です。多くの人は、意識せずにこれらのMindsetを使っていますが、自分のMindsetを他人に押し付けると、仕事で衝突が起きやすくなります。他人の立場に立って考えることで、より理解し合えるようになります。
MindsetとToolsetの関係
どんなToolsetにも、必ずMindsetが存在します。Toolsetは万能ではなく、言語やツール、フレームワークは問題の一部しか解決できません。Toolsetを乱用してしまうのは、そのToolsetのMindsetを理解していないため、もしくは自分自身のMindsetに問題があるためです。
- アジャイルを導入するときは、アジャイルMindsetを理解する
- プロシージャ指向からオブジェクト指向に移行するときは、Mindsetを変える
- モノリシックからマイクロサービスに移行するときも、Mindsetを変える
Mindsetは変えるのが難しいですが、変えることは可能です。Toolsetを変える際に苦労する人は多いですが、そのToolsetのMindsetをしっかり理解し、深く学ぶことが大切です。いきなり使い始めると、後で大きな問題にぶつかることもあります。
まとめ
ソフトウェア開発において、MindsetとToolsetは密接に関係しています。Toolsetを効果的に活用するには、その背後にあるMindsetを理解し、自分自身のMindsetも見直すことが重要です。Mindsetは変えるのが難しいですが、意識して学び続けることで、より良い開発者へと成長できます。