この記事は『Code Polaris Advent Calendar 2023』 の7日目の記事です。
ちなみに、このアドベントカレンダーでもう1回登場する予定です。
レガシーなシステムと向き合っている今日この頃
最近、ASPとかbashとかOracle Database(PL/SQLもいらっしゃる)とかのサーバ載せ替え案件に参画しています。先輩と社会人2~3年目の後輩くんたちとなんとかやっているのですが、PHPとかCMSとかの案件をやってきた後輩くんたちからすると、めちゃめちゃレガシーで古(いにしえ)感たっぷりな環境で色々と進め方に戸惑っているように感じています。
そんな後輩くんたちに向けて、モダンな環境で過ごしていたのに、急に自分が生まれてもない時代に作られたようなシステムの案件に 放り込まれた時 アサインされた時の、なんとか健やかに生き残るための気持ちの持ち方について書いてみます。
同じような状況にいる方が少しでも前向きに、とりあえず今はなんとかやってみるかと思ってもらえるといいな。
分からなくてアタリマエ
10数年という短すぎる私のエンジニア経験の中で、レガシーなシステムのお守り(おもり)を年単位でやった経験がある身から言えることは、目の前にあるシステムのことは 「分からなくてアタリマエ」 だということ。
今までお守りをしてきたのならまだしも、急に放り込まれたのなら、全然分からなくてアタリマエ、それが正常と言っても過言ではないと思います。
だから、何か仕事を振られて、全然分からなかったとしても悲観的にならなくてOKです。たぶん一緒に働いている先輩や同僚もそう変わらないレベルで分からない状態です。
分からないことに悲観的になるよりも、やるべきことがあります。
分かろうとする努力をしてみる
「なんか全然分かんないけど、これってどうなっているんだろう?」と分かろうとする努力が大切です。
今あなたの目の前にあるのはレガシーなシステムですが、仮にあなたが全く知らない超絶最新最強な技術を目の前にしても、分からないという状況は同じです。その状況を変えていくのは 「分かろうとする努力」 です。努力のための具体的な行動は異なるかもしれませんが、分からないものに向き合う考え方や分かるために考えたりする思考力は、レガシーだろうが超絶最新最強だろうが、おそらく同じです。
「レガシーなシステムだから、これを理解しても今後活かせないしー」と思うのではなく、「これってどういう仕組みになっているんだろう?」「どんなデータの持ち方しているんだろう?」と何かしら疑問を持って、ちょっとでも理解しようと行動を起こしてみることは、ムダでは無いと思うのです。
先輩や同僚たちはたぶん、この分かろうとする努力をして、レガシーなシステムのことを紐解いて、分かるようになっていっていると思います。
デバッグを怖がらない・面倒くさがらない
昔の自分もそうなのですが、今一緒に働いている後輩くんたちも同じで、デバッグに積極的ではないように感じます(もちろん世にはそうじゃない人がいることも知っていますが)。
プログラミング言語にもよりますが、デバッグって、とても地道な作業です。コマンドプロンプトでメッセージを表示させたりブレークポイントを置いたりして、プログラムのどこまで進んだか見たり、ログに文字列を出力させてデータの途中経過を追っかけたりと・・・それはそれは地味で、プログラムによっては気の遠い作業になることもあります。
昔の自分だと、何かとスマートなやり方をしたくなりがちで、地道なデバッグ作業は苦手だったし、ログを読んだりブレークポイントで止めたりするのはなんか難しいと思い込んでいたし、面倒くさがってました。
私も途中で「どこまで進んだかわからーん」と投げ出したくもなるのですが、とはいえ、そこは 「分かろうとする努力」 です。プログラムを1行ずつ追っかけて、1つずつ可能性を潰していくことで、エラーの原因が分かります。
このデバッグは、モダンなシステムや環境であっても、形や方法を変えて必要になってくるスキルだと思います。なので、レガシーかモダンかは置いといて、デバッグに慣れる機会と思えば好機です。
レガシーなシステムでの経験は活かせるか?
たとえば、今後、超絶最新最強な技術の仕事をすることが決まっているとします。その前の案件がレガシーなシステムに関わる案件だったとして、このレガシー案件での経験は超雑最新最強な技術の仕事に活かせるでしょうか?
私は活かせると思います。
捉え方の問題で、「活かせる」「活かすぞ」と思って取り組めば、問題の本質やエッセンスが記憶に残って、将来似たような現象に当たった時に「これってあの時の考え方を活かせるかも」と思い付けるんじゃないかなと思うのです。逆に、「活かせない」と思って取り組むと、目先の問題解決だけに終わって、何も残らないような気がしています。
私の今の案件でも、せっかくよく分かっていないことがたくさんあるんだからデバッグの練習になるなと捉えようとしたり、一部分は今後も使いそうな技術があるなと感じているからその周辺を特に理解しようとしたりしています。
レガシーなシステムと向き合う時の気持ちの持ち方
・・・とまあいろいろ書いてみましたが、ちょこっとでも前向きに捉えようとしてみると良いかなと思ってます。
でも、どうしても前向きに捉えれない時もあります。そんな時は、その気持ちは否定せず、何がイヤなのか・どうだったら良いのかに向き合ってみるのも良いかも。
ちなみに、私の今の案件はデバッグが進み、ちょっとプロジェクトに余裕ができてきました、やったね!