SIerでも技術力は磨ける。みんな勘違いしているアプリ開発における技術力って何って話

どうもです、わだっしーです。

大手SIerでPMやっている25歳です。

 

今回は
「SIerは技術力低いってのは違うんじゃない?」
って話をします。

 

一般的な技術力が高い状態って、
どんなイメージを持ちますでしょうか。

特に駆け出しエンジニアや若手が思う
『高い技術力』のイメージって
こんな感じだと思うんですよね。

  • ウェブサービスなどのカッコいいアプリを作れること
  • あらゆる言語、ツールを使いこなせること
  • 最新技術を扱えること

それゆえ、
レガシーを多く扱うSIerは技術力が低く、
モダンを扱うWeb系は技術力が高い、
と思うわれることが多いです。

 

でもこれって、
技術の本質ではないんですよね。

それに、上記ができたからと言って、
自分の価値が高まるわけでもないです。

全部が間違いではないのですが、
WebだろうとSIerだろうと
本質を捉えてITエンジニアをやっている人は、
僕と同じ意見を持つと思います。

WebとSIerとでは、
大事にしている観点は異なりますが、
どこに比重を置くかが違うだけで、
アプリ開発の観点における技術力は
共通すると言っても良いでしょう。

 

今回の記事で
「技術力ってどんなもんだっけ?」
ってことを改めて考えてみて欲しいです。

SIerの技術力って本当に低いんだっけ?

結論を話すと僕は
「SIerの技術力は低くない
と思っています。

SIerが作るような大規模なシステムは
本当に技術力が低かったら作れません。

金融や証券などは特にそうですが、
数分動かなかっただけで、
数千万円〜数億の損失が出ます。

 

実際に自分でアプリを作って、
長時間動かすテストをしたり、
重たい処理を実行するテストをすると
突然動かなくなったりします。

大規模になればなるほど、
安定的に動くことが可能なコードを書く
難易度は非常に高くなります。

ハードウェアのリソースや
ミドルウェアやOSのスペックも考えないと
大人数が使っても長期的に耐えられる
システムを作ることはできません。

そのため、SIerでまず一番大事にされるのは、
安定して動き続けられること
なので、Webとは技術観点が異なります。

一言で言えば『信頼性』を大事にしている、
ということになります。

 

僕はいわゆるWeb系と呼ばれる側の
開発ベンダにWebアプリ開発を発注して、
管理をしたことがあるのですが、
想定されるアクセス数や負荷に
全く耐えることができませんでした。

要件にはもちろんあったのですが、
受入側の評価試験では
全然ダメだったんですよね。

ある一定人数以上同時に使用すると
アプリがバーストして動かなったので、
仕様を満たしていないとのことでNG。

マシンスペックを上げれば、
作ってもらったアプリでもイケますが、
僕がコードを見たところ
「ハードリソースもっとうまく使える」
って感じでしたので、
アドバイスだけして修正させました。

具体的には、CPUのコア使用率が
1処理でコアを全部占有していたので、
1処理で使用するコア数に制限を掛けました。

1処理でそれなりにかかる
製品を扱っていたので、
CPUリソースの使い方が雑だと
めちゃくちゃ時間がかかるのです。

マシンリソースってそんなに上げなくても
ちょっとコードを工夫するだけで
全然マシになります。

SIerはこういうことは得意だと思うし、
それには経験も知識も必要なので、
信頼性の観点での技術力はWebより高い
といっても過言ではないと思います。

実際、Web系のマネージャさんと話をすると
「信頼性の観点については、
SIerさんからドンドン取り入れていきたい」
と聞かされることも多いです。

コンサルの方に関して言えば、
Web系企業から信頼性の相談をされることが
非常に多いそうです。

 

SIerが標準で取り入れている国際規格の品質モデル

SIerだとソフトウェア品質モデルとして、
当たり前のように
国際規格を取り入れています。

Webでも指標としてカッチリ
取り入れているところもありますが、
多くはありません。

なんだか難しそうに感じますが、
要するに
「ソフトウェアの品質上げるなら
この観点を大事にすると良いよ」
ってISOが決めた規格になります。

表で簡単に表現するとこんな感じ。

項目 意味 SIerでの重要度 Webでの重要度
効率性
  • 処理時間が短いか
  • リソースの利用効率が良いか
保守性
  • メンテナンスしやすいか
  • 試験しやすいか
  • 解析しやすいか
信頼性
    • 事故が起きにくいかどうか
  • 正常動作し続けられるか
  • 障害から復帰しやすいか
使用性
  • ユーザにとって使いやすいか
  • ユーザにとってわかりやすいか
移植性
  • 他のデバイスでも動作するか
  • 実行環境に導入しやすいか
機能性
  • 目的の達成に即しているか
  • セキュリティは十分か

 

世間一般的に品質の指標にされやすいのは、
『使用性』の部分であり、
WebはSIerよりも大事にしているので、
その観点で技術力が語られることが多いです。

でも、アプリの品質を測る指標は、
『使用性』だけではないので、
一つの観点だけで、
技術力を語るのは違うと思うのです。

 

逆にWeb系で『信頼性』の重要度が
SIerよりも低いかというと
「止まっても損失が少ないから」
になります。

ちょっと止まったとしても
特別大きなお金が飛ぶわけじゃないので、
それよりかはユーザが使ったときの
体感を大事にした方がお金になりやすいです。

技術的な話をすれば、
Webアプリにおいては、
ちょっとぐらいのエラーは、
「もう一度やり直してください」
と表示するだけで済まされることもあります。

それは、信頼性を多少削っても
大して問題がないし、
使用性を高めるために開発リソースを
多く投入したいからになります。

Webサービスはユーザが使ったときに
快適であることがめっちゃ大事なので、
当然と言えば当然ですね。

なので、SIerよりも
信頼性の重要度は低いのです。

 

SIerだろうとWebだろうと
上記の指標は役に立つので、
頭の片隅にでも入れておくと良いでしょう。

品質の観点を忘れた時のために
この記事をブックマークしておくのも
アリかもしれません。

コードを書くときでも
どの観点を大事にするのか?
を考えてみると
より良いコードを書けると思います。

 

SIerで技術力を磨くためには

SIerで技術力を高めるためには、
『信頼性』の観点を知ること
が一番大事だと思います。

 

例えば、テスト一つ取ってみても
どうやったらよいシステムになるか?を
考えながらやると技術力は上がります。

SIerだと『信頼性』を大事にしているので、
その観点でテスト仕様書を書いたり、
テストをするとシステムのあるべき姿が
見えてくるようになります。

その目を養うことができると
プログラムを書いたときの質が上がるし、
他の分野でも応用が効きます。

 

せっかくSIerにいるのであれば、
まずは信頼性の観点を技術を高めていき、
そのベースをもとに他の観点でも
レベルアップしていった方がよいでしょう。

SIerがこだわっているところって、
すんげー地味なんですけど、
盗めるところは盗んだ方が得じゃないですかね。

Web業界全体からすれば、
喉から手が出るほど欲しい技術なので。

 

技術力を一言で言うなれば

ここまでは
『技術力の要素』
について話してきました。

WebとSIerとでは、
大事にしている観点が違うよ
ってことですね。

そもそも、どっちの技術力が高いか?
って話自体が不毛なんですよね。

この観点を見落とすと
SIerの技術力は低い
ってイメージなると思います。

 

では、これらを踏まえた上で、
技術力って結局何?
って話をします。

 

僕は技術力を一言で言うなれば、
知識だと思っています。

勉強したこと、
自分が経験したこと、
人の経験したこと、

それらの情報をどれだけ持っているか?
が技術の高低差を分けると考えます。

 

言語やライブラリ、FWなどの
技術の扱い方はもちろんのこと、
場面に応じた使い方や応用する力

これって、
知識がないとできないんですよね。

必死に考えるってのも大事なんですけど、
知識があれば考えるのが非常に楽です。

 

料理と同じだと思っていて、
良い材料と良いレシピがあれば、
誰でも美味しい料理が作れますよね。

技術力においては、
材料=技術
自分・他人の経験=レシピ
ってことになります。

なので、アプリ開発においては、
技術と経験に関する知識があれば、
良いものを作りやすいと考えます。

 

また、あまりフォーカスされにくいですけど、
『他人の経験』は格上から盗めると
技術力は上がりやすいですね。

自分が経験せずとも
先人がうまくいっているレシピを使えば、
自分もうまくいきやすいのでコスパ最高です。

最高の材料があったとしても
レシピがなかったら料理ってキツいですよね。

アプリ開発も『作り方』を知らないと
手探りで作ることになるので、
知らないと結構大変だと思います。

開発の分野は、どうしてだか、
自分の経験がものをいう世界になりがちですが、
経験は他人から盗むことができます。

ベテランから教えてもらったり、
セミナーや講座で学んだり、
書籍で勉強してみたり、
他人のコードから学んでみたり、

そこには人の経験則が詰まっているので、
そこから学ぶのは非常にコスパが良いです。

だから、僕は人の技術をパクりまくってきたし、
これからもそのスタンスは変わらないです。

他人の技術を肌感覚でマスターすると
ほかの技術にも応用が効くことが多いので、
非常におススメのスキルアップ法です。

 

なので、技術力を高めたいのであれば、

書籍やネットなどで勉強したり、
自分の経験から学んだり、
人の経験から学んでみたり、
現場のコードから学んだり、

あらゆる手段を駆使して、
どれだけ知識を蓄積できるか?
がキモになるかなと思います。

 

イメージに囚われると技術は磨けない

最後にまとめに入ります。

 

冒頭でも触れましたが、
世の技術力のイメージと
SIerの持っている技術力にはズレがあります。

SIerが大事にしているのは『信頼性』です。

その観点においては、
SIerは技術力はあると言ってよいでしょう。

なので、見方を間違うと
技術力はないということになります。

 

イメージだけで判断をしていると
自分のやっていることでは技術力は磨けない
と思ってしまうことになります。

こういった情報を発信をしている人は少ないので、
SIerでは技術を身に付けられないと思い込み、
成長を諦めてしまう人は多いかもしれません。

なので、もし、SIerに入ったけど
「このままだと技術力が身につかない!」
って思っているのなら、
今やっている開発を『信頼性』の観点で
見直してみると現状は良くなると思います。

 

僕はSIerに勤めて5年以上になりますが、
技術力が身につかなかったとは思わないです。

仕事によってテストしかしていない、
ドキュメント作成しかしていない、
って人も稀にいるかもしれませんが、
そうでもない限り技術力は身につきます。

そこで技術力が身につかない場合は、
おそらく考え方が間違っていると思うので、
僕の考え方を参考にしてみてください。

そこを修正するだけで、
今より技術力は全然上がると思います。

 

今回の記事が
「技術力ってそもそも何?」ってことを
改めて考えるきっかけになれば嬉しいです。

 

では、今回は以上になります。

わだっしーでした。

 

P.S. 大手SIerのスペシャリスト職は給料高い

また、宣伝みたいになりますけど、
SIerで技術力を高めていけば、
スペシャリスト系の役職につくことも可能です。

PMなどのマネジメントしかない
って思う人もいると思うんですけど、
そんなこともないので、
一応ここで話しておきます。

SIerのスペシャリスト系の役職は、
それなりに給料高いので、
そこを目指すのもアリだと思います。

特に大手SIerの給料はIT業界の中では高いので、
高給取りを目指す人にも向いてると思います。

(参考:SIerとWeb系の給料)

稼ぐエンジニアの考え方を凝縮した電子書籍をプレゼント中

僕はシステムエンジニアとして
年間6000万円以上売り上げています。


才能があったわけではないし、
昔から超がつくほど要領が悪いです。


そんな僕がプログラミングを習得したり、
心から尊敬する先輩や上司から影響を受けて、
エンジニアとして成長することができました。


酸いもあまいも経験してきましたが、
普通の人よりもたくさん失敗してきて、
それをガソリンにして結果にフォーカスしてきました。


その経験から
「ポンコツでもエンジニアになれる」
と思っているし、
成長して理想の自分を手に入れられると信じています。


そして、今は同じ道を志す仲間を
1人でも多く増やして、
エキサイティングでより生産性的な社会を
作っていこうと夢見ています。


そういった理念をもとに、
僕の知識や経験をふんだんに絞り出して、
エンジニアとして成長し、
結果を出すにはどうしたら良いかを
体系的にまとめた電子書籍を作りました。


僕のストーリーも交えて作っていて、
20分程度でサクッと読める内容なので、
もし興味があれば読んでみてください。


→電子書籍『エンジニアという生き方で人生をデザインする。』


メールアドレスを入力すれば、受け取れます。


最後まで読んでいただきありがとうございました。


もしこの記事が役に立った!と思われたら
SNS等でシェアしていただけるとすごく喜びます。
(すぐ下のボタンからシェアできます)