なぜ論理的に考えられないか?

優秀なシステムエンジニアは"自然に"論理的な思考を行っています。
しかし、ほとんどの人はロジカルシンキングと呼ばれるスキルを学習して論理的思考が出来るようになったとは言わないでしょう。
彼らは学生時代の勉強や趣味などを通して論理的な思考を自然に身に着けただけであり、特別な存在ではありません。
論理的思考を行う為の訓練は難しいことではなく誰にでも習得する事ができますが、一朝一夕で身に付くものではなく日々の努力の積み重ねが必要です。
しかし、一度身に着けてしまえば知識とは違って忘れることはありません。

論理的思考が出来ない理由は様々ですが、論理的に考えられない人には幾つかの共通した特徴があります。
論理的思考を習得する為にはそれらの特徴を知り改善する事が必要です。

苦手意識

論理的に考えられない人は必ずと言っていいほど「論理的に考えるのが苦手」「自分には論理的に考えることは向かない」と思い込んでいます。
実は、このような意識が論理的思考を行う上で最も大きな足枷となります。


苦手意識を持って論理的思考を拒絶してしまう事は考えることを放棄してしまう事と同じです。
考えることを放棄してしまうと、同じところをグルグルと悩み続けてしまいます。
論理的に考えられる人は、例えどれほど困難な問題であっても最初から考えることを放棄しません。
困難な問題であるならば、「何が難しいのか?」「どうすれば簡単になるのか?」「自分に不足している知識や技術があるからなのか?」と考え、何が困難で何が解らないのかを導くことができます。
考えることを放棄する事はロジカルかどうか以前の問題です。


経験の浅いシステムエンジニアであるならば知識も経験も少ないのは当前でしょう。
しかし、時には自分のスキルレベルを大きく上回った問題を解決しなければならない事もあります。
その時に重要な事は、何が解らないのかを自覚できる事にあります。
そして、それを自覚するためには論理的な思考が必要不可欠なのです。
何が解らないかが自覚することで、先輩に質問したり本やウェブで調べることが可能となります。

失敗恐怖症

誰もが失敗するという事は怖い事と思っています。
仕事でミスを犯せば上司に怒られるだけで済まず、会社に損害を与えてしまうかもしれません。
車の運転などでミスを犯せば自分だけではなく無関係な人達まで巻き込んで怪我を負わせてしまうかもしれません。
失敗することを恐れて慎重になるという事は時には重要なことです。
しかし、考える事はどれだけ失敗しても誰も不利益を被る事はありません


同じ質問を技術力が同等で考えるのが苦手な人と得意な人に行った場合、反応がハッキリと分かれるのは失敗に対する恐怖から来ると考えられます。
考えるのが苦手な人は何か感じたり思った事があったとしても、それを発言する事を躊躇します。
発言する場合でも「間違っているかもしれませんが…」と前置きをしたがります。
これは間違った意見を述べる事で自分の評価が下がったり、怒られたり、馬鹿にされたりすると考えており、意識的でないにせよ自信のある意見でなければ発言を避けているのです。
会議の雰囲気や発言する環境に問題がある場合もありますが、自分の意見を殺す事や無知を隠す事で保身を図っている風潮があります。
しかし、ソフトウェア開発の現場においては少なくとも美徳ではないのです。


ソフトウェア開発での仕事とは考えることです。
例えば、アプリケーションの設計に関する会議において間違った考え(意見)を発言しても不利益を被る人はいません
ある考えからヒントを得て新たな考えが閃く事はよくある事です。
また、ある考えに違和感を感じた時に反論を述べないとすれば、そのツケは後から払わねばなりません。
そのまま違和感のある設計で実装を行い納品直前に発覚したならば、大きな手戻りが発生します。
「(あの時に反論しておけば徹夜しなくて済んだのに…)」と心の中で毒づいたとしても後の祭りなのです。


勿論、経験の浅いシステムエンジニアに対して、完璧な意見を求めている事はないでしょう。
しかし、間違った考えであっても考えたことは発言すべきです(出来ないような職場であればさっさと転職すべきです)。
発言をして間違っていればそれを指摘され、自分の知識を深めることになります。
余程基本的な事でもない限りは咎められることはありません。
むしろ、失敗できる時には失敗できるだけ失敗する方が結果として自分の為になるでしょう。
思考する団塊で失敗を恐れたならば、失敗は成功の母と言う格言を思い出してください。
失敗の積み重ねは成功を導きます。
そして、思考においては失敗によるリスクはありません

正解至上主義

学生時代に私達を苦しめたのは何時の時代でもテスト(問題)とその結果(解答)です。
論文や作文のテストでもない限り、テストには模範解答と呼ばれる正解が存在します。
そして、その正解を導き出す事が求められていました。
ところが、システムエンジニアの創り出すシステムには唯一の正解がない為、正解を探そうしていると論理的思考が出来なくなります。


例えばワープロソフトを作成する場合、エンドユーザーが満足するワープロソフトは唯一ではありません。
勿論、要求を満たしていなかったり、バグだらけで使用に耐えかねるアプリケーションであったならば論外ですが、要求を満たた高品質なワープロソフトには様々な形があるでしょう。
エンドユーザーも1人という事はありえません。
全員が平均的に満足するようなワープロソフトを作る事もできます。
特に初心者に評判が良いワープロソフトを作る事もできます。
エンドユーザーではなく経営者の喜ぶ(つまり安い!)ワープロソフトにする事もできます。
また、機能が全く同じであったとしても、プログラムでどのようにして実現するかという問題もあります。
そこには言語の選択から実装方法まで様々な実現手段があり、唯一の正解はありません。
これは設計などの上流工程に限った話ではありません。
担当した1機能を実現する方法(プログラム)も唯一とはならないでしょう。
実現方法まで細かく指定されたプログラムを作成することもありますが、ほとんどの場合はある程度の制約を設けた上で仕様を満たすように細部はプログラマが考えるのです。


ソフトウェア開発では、どの工程であっても唯一の正解はありません。
したがって、方法(解答)を1つ考え付いても、より良い方法(解答)を探す必要があります。
論理的思考が出来ない人は問いかけられた時に唯一で理想の正解を探そうとします。
しかし、単純な問題でもない限りは唯一で理想の正解はなく、探そうとする事自体が困難です。
それよりも誰でも思いつくような簡単な方法(解答)を作成し、改良していく事の方が簡単なのです。