不安定な環境だからこそ身に付けられる技術ってあると思うよ | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

同じシステムを保守し続けることや、同じ環境で仕事を続けていくと、そこで安定した技術ってものばかりが身について、いざと言うときに全然応用が利かないってことがよくあったりします。


・ 同じ技術の繰り返しで、別の技術を知らなかったり

・ 安定した環境であるが故に、別の環境でやってみるとうまくいかなかったり

・ 同じ仲間で知った仲になるが故に競争力が無くなったり


自分の知らない環境、不安定な環境に身をおくからこそ身につく技術っていうのも多い気がします。



安定した環境を目指す矛盾


技術と言うのは安定したものを目指す方向に動きます。

バグが多く残っているソフトウェアを使うより、古くとも安定して定評があるものを使いたがるでしょうし、効果がわからない開発プロセスで進めるよりも無難な手法を使いたがるでしょう。

自分ひとりなら困るのは自身で済みますが、チームで仕事をする上ではより安定したものを選定しておいた方が、うまく動いていきます。


つまり、不安定さを取り除く方向に動くわけですが、この不安定さを取り除くうちは、あれこれと試行錯誤をするため技術の向上が見込めますが、一旦安定した状態に突入してしまうと、パタッとそこからの進歩を止めてしまうことが多かったりします。

安定して動いているものに対して、わざわざ不安定な要素を混入させる必要はないと考えたりするわけです。


安定した技術は、実績が残るため繰り返し使われます。

より良い技術があったとしても、チーム内で実績が無かったりするため、その導入することで環境が大きく変化することを嫌ったりもします。

ハイレイヤのエンジニアが知りうる技術を使うより、チーム内の誰もがわかっている技術を使った方がトラブルが起きたときにも対処しやすいという考えもあるのでしょう。


ただ、これはシステムだけでなくそれを運用・保守するエンジニア自体もレガシー化してしまう結果にもなりかねません。

安定した環境にするためにやっていることが、それが成就するとそこからの発展がなくなってしまうリスクがそこにあったりします。



不安定な環境だからこそ身につくこと


先に書いたように、不安定な環境だとそれを取り除くために試行錯誤を繰り返します。

それによって身に付ける技術や知識が多くあります。

異なる言語やソフトウェア、開発環境やフレームワークなどなど異なる技術を導入することで、その改善を試みようとします。


不安定な環境だと、うまく動くかどうかもわからないので、検証などに多くの時間を費やすことになったりします。

パッと安定した環境にならないかと、ため息をもらしたりもしますが、その不安定な環境で四苦八苦しているそのプロセスそのものが技術を磨く大きな要因にもなっていたりします。

どこかからありものの安定した環境を持ってきても、上辺の保守・運用に関する知識をマニュアルから得ることは出来るかもしれませんが、根本をなすところは全くわからないという場合も多いのではないでしょうか。


安定した環境だと、その環境を変えることの理由がなかったりしますが、不安定な環境だとそれを安定させるためと言う大義名分もでてきます

このことは、保守・運用する組織において結構大きな枷にもなったりします。

「なんで安定して動いている環境をわざわざ変えるのか?」とか「導入効果は云々・・・」とか。


不安定な環境は、それが認知されていればいるほど動きやすかったりもします。

「ここのパフォーマンスを改善するためです」とか「このバグを直します」とか。

それ故に試行錯誤が繰り返され、そのプロセスによって技術の発展があるのではないかと思うわけです。



まとめ


技術って必ず一つの環境で成功しても他の環境でやってみるとうまくいかないって事は往々にしてあります。

その環境で成功した知識と言うものが他のところではほとんど役に立たなかったりすることもあるわけです。

だからこそ、色々な環境での経験が既存の技術でも別の角度から新しい知識を吹き込んでくれたりもします。


安定した環境を手に入れたのなら、更なる高みを目指していかなければ、そこで発展がストップしてしまいます。

不安定な環境に飛び込んでいくことで身に付けられる技術っていうのも多いのではないかと思うわけです。