世間一般のイメージだと、プログラムが書ける人は、
何となく論理的思考力がありそうに見える。
でも、実はその論理には全く論理性がない(笑)
まず分類ですが、
一言でプログラマーと言っても、スキルレベルは以下の通り大きく分かれます。
1. 顧客要望を聞きながら実際のシステムを作れる人
2. 設計書があればコーディング出来る人
3. プログラム仕様書が無いとコードが書けない人
一般の方は、1のレベルをイメージするでしょう。
でも、残念ながらそのレベルに達している人は、業界の中でも限られているのが現実です。
比率的な統計が無さそうですが、僕の感覚では5%いればいいほうかな、と。
ちなみに、欧米では1のレベルの人は、「スーパープログラマー」などと呼ばれ、高報酬を得られているだけでなく、社内外の地位も高いのですが、日本はあまりプログラマーで高額報酬を得ている人は少ないと思います。
少し話が逸れましたが、
論理的思考力があるのは、詰まるところ、1のレベルの人だけなのです。
言ってしまえば、
2や3の人たちは、論理的思考力を必要としない、
作業者レベルです。
つまり、プログラマーとは言っても、
論理的思考力がある人は、ほんの一握りなのです。
なぜなのでしょうか?
それは、論理的思考力とは何か?と一言で言うと、
「要素分解出来ること」だからです。
最近のオープン系のプログラミングは、オブジェクトと言われる共通処理部品をつなげて処理を組み上げる方式が一般的なため、一からオブジェクトの定義を行うなら兎も角、既に出来上がったフロー図に基づいてコードを書くだけならば、とりわけ要素分解のスキルが求められるものではありません。
しかし、顧客要望を聞きながら設計を一から起こすためには、この能力が無いとシステム開発は出来ません。
システム開発のプロセスを要素分解すると、
以下の通りとなります。
1. 顧客が何を求めているかを正解に把握する
2. システムでの実現性を検討する
3. 実現可能なものは機能設計に落とし込む
4. 困難なものは業務フローを変えるなど代替手段を提案する
5. 機能設計が固まったら実装(プログラミング)する
6. テストケースを作成し動作確認する
7. 不具合を検知したら修正する
8. 顧客要望通りの動きになっているか、受入テストを実施し納品する
上記の一連の流れを一人前で出来る人のことを、
「システムコンサルタント」または「スーパープログラマー」と呼びます。
冒頭で説明した1のスキルレベルの人は、
全て自前で出来ます。
だから、言ってしまえば、
このレベルに達している人は、誰かの助けを借りる必要がない。
課題があるとしたら、作業ボリュームと納期の問題だけである。
大規模システム開発においてもこれは例外ではなく、
1人スーパープログラマーがいれば、彼に十分な時間を確保してあげれば、品質の高いシステムが難なく完成するだろう。
では、なぜ多くの人数をかけてシステム開発を行うのか?
はっきり言うと、雇用を創出するためである。
ソフトウェア開発というものは、完成度の高いシステムパッケージを一度作り込んでしまえば、あとは「金太郎アメ」の世界である。
これが、ソフトウェア事業の旨味であり、極めて利益率の高いビジネスモデルなのである。
だから、容易にパクられないように著作権が守られ、
ライセンス化して製作者の権利が守られる必要がある。
そして、そのライセンスをパッケージとして販売すれば、大きな手間がかかるのは最初だけ。
あとは、殆ど初期投資が必要ない青天井に儲かるビジネスなんです。
だから、facebookやGoogle、amazonは儲かるんですよ。
一方で、
多くの日本のIT企業は、この「自分でつくる」ことが出来ず、外国製のパッケージをカスタマイズしたり、
フルスクラッチでつくる必要のない、非効率で品質が高いとも言えないシステムをつくる「手間賃」だけで、ユーザーにお金を請求しているところが殆どだ。
このビジネスモデルは、「人月モデル」として業界では有名で、建設業と何ら変わらない手法で管理がされている。
人の労働力をベースとした、何とも前時代的な作業が日々行われていることを想像出来るだろうか。
この世界では、「創造性」などというものは存在せず、ひたすら「ユーザー要件」という名の設計書に基づいてプログラムを書いては、「違う!」「やっぱりこうしたい!」とユーザーに言われるがままに修正して納品する、労働者が大半を占めている。
こんな単純作業に従事する人たちに、論理的思考力が身につくだろうか?
例えが悪いかも知れないが、工事現場の力仕事と何ら変わりない、根気と体力だけが求められる仕事なのだ。
こんな仕事が、若者に魅力的にうつるわけがないだろう。
だから、業界はいつも人手不足なのだ。
でも、多くの経営者はこんな現実を知りつつも、見て見ぬフリを決め込み、あまつさえ、「クリエイティブな仕事だ!」などというウソ八百を並べ立て、労働者をコキ使って自分は左団扇でゴルフなぞに明け暮れてるのだ。
僕のようなプロジェクトマネジメントの仕事は、
本来何の変哲もないつまらない管理作業に終始するところが、エンジニアがクリエイティブな仕事を放棄している分、ユーザーや元請け会社、ベンダー各社とのクリエイティブな調整仕事が回ってくる。
そうしてプロジェクトマネジメントを長いことやっていると、自然と論理的思考力が磨かれていくのである。