私が働いているIT業界には、システムエンジニア(SE)という職種がある。
このSEには、アプリケーションスペシャリスト、データベーススペシャリスト、ネットワークスペシャリストやシステムアーキテクトなどの様々な分野の技術者がいる。
一口にSEと言っても、このように様々な技術分野の要員を必要とするため、コンピューターシステムを動かすには如何に様々な技術が必要になるかがこのことからもわかる。
では、SEのスキルとは何なのかと考えた時に、突き詰めるとコンピューターシステムに関する知識と応用力がどれほどあるかなのではないかと思い至った。
最近では、クラウドサービスの普及により本当にインフラに近い業務をしていなければ、自分の端末を使ってサーバ構築からアプリケーション開発までを完結することができてしまう。
従って、物理的なハードウェアを扱うスキルは今後それほど重要視されなくなっていくだろうと考えている。ただし、物理的なハードウェアを扱うスキルが必要でなくなるわけではなく、この分野の技術者の希少性が上がるという話だ。
物理的ハードウェアがなくなるわけではなく、限られた技術者だけが物理的ハードウェアを取り扱い、多くの技術者はこの物理的ハードウェアがサービスというソフトウェアで隠された世界で勝負していくことになるということだ。
そうなってくると、様々なサービスの根幹となる知識を持っており、それらのサービスをどのように組み合わせれば目的が達成できるのかという知識をつなぐ応用力がスキルとみなされるようになっていくだろう。
このスキルも標準的なものであれば、書籍やネットの情報から拾うことができる。
一方で、その知識の本質的な部分の勉強を疎かにしていると、いざトラブルにあった時に適切な対処ができなくなることも容易に想定できる。
単純にAWSでEC2のサーバを構築するだけであれば、EC2のサーバ構築について説明してある本を買ってくればサーバ構築事体は技術者ではない私でもできる。
しかし、実際の業務に使うサーバ構築という観点ではこれだけでは目的は達成されない。サーバの構成を決める要件の技術的な観点での整理ができないからだ。
これが、この業界の難しさであり、システムを取り扱わない人たちには理解されない点の一つだ。
例えば、最近はハードウェアのスペックも相当に上がったため、はじめてパソコンを購入する際に標準的な価格の新品パソコンを購入すれば、よほどのマシンスペックを必要とするような動画作成などをしない限りにおいては、どのパソコンを購入しても目的は達成される。システムを扱わない人はこの恩恵を受けて、技術者の知識の深さに思いをはせるということがなくなる。
いや、むしろ簡単になりすぎたことで、技術的な分野はよくわからないから立ち入らないようにしてしまっているように思える。
これで、技術者の分野は自分には立ち入れないということで、技術者の価値を高く評価してくれば良いがそういうことにはなっていない。
顧客は、自分たちの目的を達成したいと考えている一方で、その目的を達成するために何をすべきかをSEが詳細に定義しなければ目的を果たすシステムは構築できないという点をなかなか理解してもらえなくなっている。
正直もう少し理解を示してもらいたい。
SEは自分たちが持っている知識を総動員して、知識をつなぎ合わせて顧客の目的を達成するためのシステムを構築し、運用している。
技術者側の観点としては、色々な分野の技術者がいるが、本質的な設計ができる技術者となると限られてくる。
予算を度外視して、このサービスが使えれば良いという要件であれば、それほど難しく考える必要はないが、システムは運用するとほとんどの場合トラブルに見舞われるものである。
そうすると、あらかじめトラブルにどう対処するかも検討しておく必要があり、どんな案件であっても、本質的な知識と応用力のあるSEが必要だ。
SEは、表層的な設定方法だけを学ぶのではなく、本質的な技術に目を向けて勉強していないと結局はいざという時に役に立つ知識を習得できない。
トラブルなどはできれば経験したくないものではあるだろうが、実際に切羽詰まった状況により成長できるというのは神話でもなんでもなく事実だ。
本質的な技術はGraphical User Interfaceのような簡易化されたユーザーインターフェースで隠された裏側にある。
この裏側に興味のないSEは、成長することはないだろう。
IT業界で成長するには飽くなき探求心が最も必要なのだ。