最近ウマ娘の影響で始めたリアル競馬で負け続けているのに楽しくてしょうがない事に若干の恐怖を感じている放浪軍師です。今回は久々に雑記を書いてみようかと思います。とくに若いエンジニアに向けた記事になります。
レガシーな環境に閉じ込められてはいませんか?
突然ですが、みなさんはエンジニアとして成長ができないようなレガシーな環境に閉じ込められてはいませんでしょうか?私は以前、そのような環境に閉じ込められていたことがあります。
レガシーな環境に閉じ込められているとエンジニアとしての成長が期待できないので、そのまま5年10年と居続けた場合、いざ転職しようにもしょうもない技術しか持たないので転職は極めて困難です。その為、どんなにその会社に居たくなくてもしがみつくしかなくなります。まぁそれはまだマシなほうで、会社が倒産してしまったりリストラされたりという事態が起きた場合、、、どうなるか想像してみてください。とっても恐ろしい話ですよね?
このようにエンジニアとはモダンな技術力を常に追い続けなければいけない非常に危険な職業であると私は思っています。
ただ、私がそうだったように自分がそんなレガシーな環境に閉じ込められていて、さらにその事に長い事気が付くことができないという事は平然と起こり得ます。何故ならレガシーな環境にはモダンな環境を経験したエンジニアがいないからです。レガシーな環境ではレガシーなのが当たり前なのですね。その為、自分の技術力の遅れに気が付いたときには既に時遅し。一般的なエンジニアとの差が周回遅れレベル…なんて経験が私にもありました…
そこで、あなたがいるそこはレガシーな環境かもしれないよ?というような例を提示させて頂こうと思います。もし自身の環境が例に当てはまるようでしたら要注意です。
Git を使っていない
まず最初に挙げたいのが、Git を使っていない です。Git というのは分散型バージョン管理ツールの事で、ファイルの更新履歴を管理してくれるすごい奴です。Git を使えば誰がいつどのようにコードを修正したのかが一目瞭然ですし、複数人で同じファイルを更新した際に修正内容を合体させるというような芸当も行う事ができますので、修正箇所はコメントアウトして全て残し、日付と名前を記述しておくとか、ファイルを更新する前や後に周知徹底を行う。みたいなルールとは完全におさらばできます。こんな神ツールを使わない理由は一つもありませんが、もし使ってないとすればそれは Git という新しい技術を取り込むだけの能力が無いレガシーに浸った環境であるという事。ハッキリ言って今日日エンジニアを名乗っていて Git の使い方がわからないというのは致命的ですので当てはまる人は充分にご注意ください。なお、たまに混同している人がいるようですが Git と GitHub は別物です。
リモートワークが不可能
次に挙げたいのは、リモートワークが不可能 です。会社によっては円滑なコミュニケーションの為に出社を推奨している場合もありますが、そこはとりあえず置いておいて、雨が降ろうが槍が降ろうがいかなる時でもリモートワークができないというのは相当に危険度が高いんじゃないかと思います。ほとんどの IT 企業は3年前の新型コロナウイルスによって一度はリモートワークに移行しました。その後どうしたかは企業によって考え方が異なるので深くは追究しませんが、あの環境下にあってもリモートワークに移行しなかった会社は、そもそもリモートワークを行うだけの能力がない。すなわちレガシーな環境から脱却する能力がないという事になります。リモートワークを行っている会社では、先に上げた Git やチャットツールなどを用いての業務技術が着実に育ってきています。そんな会社がリモートワークを一切経験していない人を中途採用するでしょうか?あんまり歓迎されないんじゃないかなと思います。
やたらとドキュメントが多い
はい、やたらとドキュメントが多い です。たとえばコーディングする際には要件定義書・基本設計書・DB設計書等が必要にはなると思うのですが、これらがやたらと多い場合は要注意かと思います。ドキュメントが多ければ多いほど更新管理にコストがかかり、最終的にはドキュメントの修正が放置されシステム内部とドキュメントの情報に大きな差違がでてきて無意味なドキュメントが多数存在しているという状況に追い込まれます。基本的にドキュメントは少なければ少ないほど良いです。ただし、必須なドキュメントすらないのは問題ですのでそこは注意してください。なお、ドキュメントが多くなってしまう理由は以下のように複数ありますが、どれもがレガシーな環境であるがために起きている事象だと私は思います。
コーディングの補佐的資料が多数存在している
たとえば DB の status カラムに入っている int 型の数字は 1 = 新規登録 2= 編集状態 3 = 取消状態 みたいなのがExcelにドキュメントとしてまとめられているみたいな場合はかなり危険です。そんなのはテーブルを別に用意して管理しておくべき情報ですよね。このようにレガシーな環境では、足りない情報を技術力ではなくドキュメントで残そうとしてしまう傾向にあるように感じます。
改修毎にドキュメントを残し続けている
基本設計書_v1.60_20230214(最新).xlsxみたいなのが多数並んで管理されていてドキュメントが多いという事もあります。こういうのはそれこそ先ほどの Git でバージョン管理するか、クラウドで管理される Google スプレッドシートなどを用いて共用しつつ随時履歴が残って保存もされるようなシステムを利用すれば良いだけの話なので、それができない環境というのはやはりレガシーな環境であると言っても差し支えは無いでしょう。
明らかに無駄なドキュメントを作る事を正としてしまっている
詳細設計書と称して、コーディングを日本語で事細かに説明したようなドキュメントを作るのが正しいという訳のわからない文化がまかり通っている環境が確かに存在します。これって誰に向けての資料なんですかね?ハッキリ言ってマジで無駄で、そんな資料を作る暇があったらコーディングしたほうが絶対に良いというのは誰の目からも明らかです。それでもそのような文化があるとするならばそれは、そのような無駄な文化を破壊する事ができない環境であるという事です。そのような環境では新しい技術を取り入れるなんてことはまずしないのではないでしょうか?
廃れた言語や技術で開発を行っている
私は前々職で長きにわたり VB6 で開発を行うという事を行っていましたが、この VB6 は 1998 年が最終更新というもはや骨董品レベルの言語です。このような言語を用いて開発を行うというのはもはや新しい技術に手を出す気が一切無い強烈なレガシーな環境と言ってよいでしょう。他にも、IE でしか動かないWebシステムを扱っているとか明確な理由なくWebApiの概念がないWebシステムを扱っている等も同様にヤバい気がします。こういった環境に身を置いている場合、新しい技術を身につけるなんてことはまずできません。なんとか自己学習でモダンな言語や技術を使った勉強を行い、世の中の真っ当なエンジニアに喰らいついていくしかありませんが、残念ながら仕事で学べる人との差は広がる一方だと思われます。
まとめ
以上が私の思うレガシーな環境になります。「そんな環境あるのかよwwww」と思った方。おめでとうございます。あなたは大丈夫です。逆に「え!?普通じゃね!?」と思った方。残念ながら貴方が身を置く環境はレガシーな環境である可能性がありますので、よくよく自分の将来を見据えたうえで身の振りを考えてみる事を私はお勧めいたします。