orangeitems’s diary

クラウドで働くインフラエンジニアの日々の感想です(ほぼ毎日更新)。

設計って誰から学ぶもの??

f:id:orangeitems:20200615105127j:plain

 

とんでもない実装は大手SIerでもすることについて

今日話題になっているこの記事。

 

qiita.com

実際に自分が見た「オワコン大手SIer」のアンチパターンをご紹介していきます。
自分が多く当てはまっている場合は今すぐ直してください。移行する人がストレスで死にます。

 

うん、まあ運悪くこういうシステムに当たる人はいますよね。

大手SIerだからといってその成果物の品質が末端のコードレベルまで整っている保障は全くありません。はい、全くありません。

大手SIerには超優秀な人がいる一方で、そうではない人もいます。転職も多いし人数も多いしで、しかもパートナーが入ってくる可能性も高いのでそうなってしまうのは当然かなと思って横で見ています。

中小で伸びているところは、優秀な技術者を囲い、必ずその人やチームで仕事するから品質がいいんです。まあ昨今は、そういった中小を大手SIerのキャッシュで買収しつつ、オワコン技術者を早期退職や職場転換で追い出すケースも散見され、なかなかドライなことになっていると思います。こんなの昔からか。

とにかく、SIerがオワコンなのでもなく、オワコンSIerがいるわけでもなく、オワコンSEがいるんだよということですね。

なぜ、こんな実装が現場で成立してしまうのでしょうか。

 

考察

ITの世界に居れば、要件定義をまず行い、そこから設計、実装、テスト、リリースと言う流れに行くことはもう常識みたいなものです。で、だいたいの技術記事を見ると実装の話が非常に多い。Qiitaなんかはもうほぼ実装技術の記事ばかりかと思いますがいかがでしょうか。

で、長年やってると、ITの世界は実装技術ばかりが注目されますが、実際は設計の方がもっと大事であることを実感するケースが多いです。

設計を無視するから、実装が無茶苦茶になるのです。で、動けばいい、なんてことになる。冒頭の例はそういうことだと思います。

しかし、ではどう設計するか、って実はあまりインターネットに情報がないことが多い。

設計があやふやな現場で起こりがちなのが、設計書の不備です。何をすることが目的で、そのためにどんな要素技術を使い、どんな機能に分けて・・、そんな設計書がちゃんと書かれていないことは、よくあります。

もしくは、設計書はあるけれども本番運用に入ってから、その関係者がまともに内容を見てないケース。中途採用や異動などで移ってきて、そこから設計書を見るも現状のシステムとは乖離している。度重なる更新で設計書の通りじゃない。

コードを見ると更新履歴がコメントで入っているが、なぜ更新したかは書かれていない。更新した理由を現場に聞いたら教えてくれる。どこにその記載はある?。それはメールでやりとりしている。そんなバカな、新しい人はメールの履歴なんかないじゃないか。

というふうに、設計が適当だったり、運用時に構築時の設計思想を考慮せずにどんどん壊していくパターンなど、まぁ、設計って本当に軽視されがちだと思います。だから、無茶苦茶な実装ははびこっていきます。

そもそもこの文化の大元は、インターネットの記事は実装技術のトピックを書くのには向いているけれど、設計のノウハウを書くには向いていないというところから起因しているように思います。

だいたい、1000~3000字で、こんなことをするために、こう実装したら、動いたよ!、みたいな記事がインターネットのメインストリームだと思います。

技術本を昔ほど買い込まなくても、インターネットに落ちているいろいろな技術記事を掘っていけば実装することはできるようになりました。

しかし、大事な設計の部分がなおざりになっているのです。

で、AWSが使えるとかJavaが使えるとか、実装技術=スキル、という雰囲気が蔓延してしまった。雰囲気で動くものができやすくなってきた。

なんでこんな実装にしたの?って聴くと、「このURLのヤツをコピペして作りました」と平気で言う。

やっぱりでもでも、設計は大事なんです。良い設計は良い実装を作る。

コピペしてもいいけど、なんでそう言う実装にしたかは理解しなよ、と。

最近は「デザインパターン」という言葉で、よい設計をマネする文化もあります。これは良いことです。でも、やっぱり、実装技術のように切り取ってマネするものではなく、体系的に設計技術は学ぶ必要があると思うんですよね。

設計技術って、やったらダメなものをそぎ落とした、非常に価値の高い知識です。

で、大手SIerはそういう知識を持っているんです。ただ、そういう知識をどう社員に伝播させるかがうまくいっていない会社ももちろんあります。また正しいと思っている設計技術がオワコンな可能性だってある。

まぁだから、常にIT業界は人が絶え間なく移動している。自社がオワコン化しないためです。

設計って誰から学ぶもの??。それは、恵まれている人は自社研修ですかね。で、たいていは本を買ってちゃんと勉強するべきもの、だと思いますね。インターネットで設計を学ぶのは、「知ったかぶり」になりかねない、と思います。

 

大事なことはあまり変わってないけれど

私の設計の知識って、誰かに教えてもらったというより、現場で落ちている成果物を見て勉強した内容が大きいです。素晴らしい設計書を何度か見たことがあり、その内容をつまびらかに見て、ああこうやって設計ってするのね、と。まあ私がやる設計はだいたいそのパクリです。

まぁ本もいくつか読んだかな、読んだ本の内容やタイトルはもう忘れちゃいましたが、血や肉にはなっていると思います。

大事なことは、長年あまり変わっていないように思いますが、ひとつ気になる点は、これからコンテナやアジャイルが流行していくと、設計まわりの考え方が大きく変わっていきそうな点。

Kubernetesがらみの仕事をして、ちょっと苦労してみたらいいかもな、なんて考えています。きっと、それなりのベストプラクティスがあり設計方法がありそうですが、まだ私にはわからないです。未熟者です。

業界に20年以上いても、未熟者だなと思うので、IT業界はなかなか刺激的です。