SIerはプログラミングが出来ません。
下手をすると全くプログラムが読めない人もいます。SIerは顧客のシステム開発に携わる仕事で、要件定義から設計、プログラミング、運用保守まで一気通貫で行う職業です。
日本のIT業界では、SIerは大企業が多く、官公庁や銀行、その他多くの社会システムを作っています。
そんな大規模なシステムを作っているSIerがプログラミング出来ないってどういうこと?
と知らない人からみたら感じることかもしれませんが、それでも成り立ってきたのがSIerです。
僕自身、SIerで働いていますが、自分でプログラミングをする機会は限りなく少ないです。
ただ、実際に働いて時代の変化に取り残されているのを肌で感じることと、これから先はSIerでもプログラミングの知識が必要になる時代が来るのではないかと思っています。
SIerにプログラミングが出来ない理由
Q:SIerはなぜプログラミングが出来ないの?
A:プログラミングをする機会がないから。
結局、SIerがプログラミング出来ない理由っていうのはこれに尽きます。
人間、覚えたことも使わなければ忘れていきます。昔学校で学んだことも使わない知識は忘れますよね。
SIerも若手のうちは研修の一環でプログラミングをすることもありますが、現場ので業務でプログラミングをすることはほとんどありません。
僕も研修でプログラミングを同期とともにしましたが、ときどき会うと、プログラミングをしているやつはいませんでした。
主にやっていることといえば、
- 進捗管理
- 顧客との打ち合わせ
- ドキュメント作成
- 社内会議
などなどです。
会議とドキュメント作成ばっかりです。
ちなみに、ドキュメント作成はほとんどExcelです。SIerはExcelが大好きです。
Excelと日々ふれあい、進捗管理や会議に明け暮れているとプログラミングをすることはなくなってしまいます。
そのくせ、参照するセルを結合しまくる人がいるので意味がわかりません。関数のエラーが多発します。発狂したくなります。
Excel大好きSIerはExcelを極めるべきだと思います。はい。
キャリアが管理職しかない
SIerがプログラミングを出来ない理由の1つに、キャリアが管理職しかない、ということもあります。
凄腕のプログラマーでもSIerで働くなら出世の道は管理職しかありません。
どれだけプログラミングが好きでも、その道が閉ざされているとなると選ぶべきは2つです。
諦めて管理職になるか、転職してプログラマーとして生きていくか。
なので、SIerにはプログラミングが出来る人はほとんどいません。
最近はキャリアに管理職しかない技術軽視の考え方が見直されている会社もありますが、まだまだ道半ばといった感じです。
優秀なエンジニアはその会社に残るよりもっと待遇がいい会社があるので、転職する人は多いです。
SIerがプログラミングをしないことの問題点
プログラミングが出来なくてもなんとかなってきたSIerですが、プログラムに対する理解がないからこそ起こる問題も数多く存在します。
- 仕様に問題が起こる
- 技術的に実現可能か判断できない
- 使っている技術が古い
僕が働いていて、実際にプログラミングが出来ない人がいると感じる課題です。
順番に説明していきます。
仕様に問題が起こる
SIerは上流工程である要件定義から顧客と関わりシステムの開発を行います。
要件定義はその名の通り、顧客からの要件を聞き、どのような業務をシステムで実現するか聞き出す工程です。
この工程で顧客の業務を整理するのですが、当然、システム化することが難しいこともあります。
既存製品の個社カスタマイズとなると余計にそういったことが起こります。
しかし、プログラミングが出来ないようなSEが要件定義をすると、出来そうだからという理由で仕様の実装を決めて、いざ実装するときに頭を悩ませることになります。
表面的に見ると簡単にできそうなことも、プログラム的に制約があることは多いです。
ちょっとした項目の変更や、桁数の変更の影響が多岐に渡り、実装がかなり厳しくなることもありえます。
そういったことを考えずに実装して後から問題になることはよくあることです。
仕様を決める立場にあるからこそ、プログラムについての知識や、インフラや他社の技術など多くを知っておく必要があると僕は思います。
顧客との打ち合わせで「何でもやります。」みたいなスタンスの人がいるとかなり先が思いやられます。
技術的に実現可能か判断できない
こういうことがしたい。という顧客の要望はとても多いです。
今はこういう業務をしていて、システムではもっと簡単にしたいとか、いざ使ってみたらこういった機能が欲しいとか。
顧客からの要求に際限はありません。
そのすべてに応えるわけにも行きませんが、1つ1つの実現可能性の判断は常に必要になります。
プログラムに関する知識や、実装経験があればその場で出来るかどうかの判断が出来ることもありますが、自分が全くプログラムを書けない場合は持ち帰って出来る人に相談してからの回答になります。
動きが実に遅いです。
優秀なエンジニアがいれば簡単にできることも、プログラミング未経験のSEだと自分の担当範囲で経験がなければ判断がつきません。
自分の知り得る技術で実装しようとして、無駄の多い仕様になったりすることもあります。
無駄というのはコストとして跳ね返ってきます。つまり、不幸になるのは顧客だけというわけですね。
SIerは人月商売なので、工数がかかるほど費用が膨れ上がります。つまり無駄が多いと高くなります。そして顧客にそれを判断する方法はありません。
SIer側からしたら儲かりますが、僕はあまり腑に落ちないです。正直、もっと簡単に出来ることにこんな時間と労力をかける価値があるのだろうか。と疑問に思うことは多いです。
使っている技術が古い
安定稼働を最優先とするSIerは最新の技術を使うことは基本的にほとんどありません。前例踏襲がほとんどです。
なんせ、新技術にチャレンジして稼働後に障害が起こったら裁判沙汰もありえますからね。なので、動くことが保証された技術でシステムを作り上げることが基本です。
そうなると、必然的に一昔まえの仕組みを使うことになります。会社全体でそういったことが起こるので、新技術に対する有識者がほとんどいないといった現象が社内で起こります。
IT業界なのに使っている技術は5年前のもの、とか普通にありますよ。
僕が関わったものではJavaの開発でJDK6を使っているようなものもありました。ちなみに2017年の話です。
僕が関わったJDK6というのは2013年にサポートが終了しているもの……。
数年前にサポート終了しているものを使うのってどうなの?
とは思いましたが、既に決まっていたことなので変えることも出来ず。もやもやしました。
JDK6を導入した先輩はサポート期限のことなんて知りもしなかったようです。
衝撃です。そんな古いJavaを使ってるのに他社製品を組み合わせたいとか言い出すので、コーディングでかなり制約があり、乗り越えるのに苦労しました。最新ならすぐに突破できたのに。
レガシーシステムを使って意味のわからない制約に苦労するのもSIerです。主に苦労するのは僕のような末端ですが。
SIerにプログラムスキルは必要なのか?
僕が思うに、今後SIerにもプログラミングスキルは必要だと思います。
今後も国のシステムや大企業の基幹システムの開発にSIerは必要になってくるとは思いますが、いつまでも古い技術を使っていては、スタートアップ企業に他の領域を持っていかれてしまうことが多くなるでしょう。
最近は安価で使いやすいシステムが多くなっています。さらに、クラウドの普及でサーバなどのインフラ構築もボタンを押すだけで出来るようになりました。
多少知識のある人が数人いれば、システム運用も自社でどうにか出来る時代です。
そうなると、SIerに求められるものは何なのか。
利益を追求できるシステム開発ではないでしょうか。
最近良く言われるDXというやつですね。
紙の業務をシステム化して効率化する、何ていうのは既に多くの企業が実践しています。仕事を効率化するツールや仕組みも安くていいものが今は多く存在します。
社内のインフラ構築やセキュリティなどもクラウドの普及で簡単に構築出来るようになりました。
ここまで簡単に揃う時代になったのです。そうなれば次は利益の追求です。システムを使った効率的なマーケティングやデータ分析、販路の拡大販売のサポートなど。
効率化に向けられていたIT投資が今後は成長のためのIT投資になるはずです。
そうなったときに古い仕組みを使っいては限界があります。
最近はデータの分析にPythonが使われることが多くなりました。
ライブラリが豊富で簡単に分析が出来るので多くのエンジニアに利用されています。僕の周りでPythonが出来る人はいません。もう既に遅れています。
Pythonだけでなく、様々な技術で新しい仕組みは作られています。
プログラミングの学習はそういった知識のキャッチアップにも使えます。
技術動向のキャッチアップと新たな仕組みを作り上げて行くためにも、プログラミングスキルはSIerに必須だと僕は考えています。
自分のスキルを磨き続けないと淘汰される時代です。