インフラエンジニアとアプリケーションエンジニアの脳みその違い

f:id:orangeitems:20220401124446j:plain

 

昨日はずっとPythonの環境構築をずっとやっていた。

インフラエンジニアの守備範囲としては結構遠目の場所にある。基本はOSまでで、その上のミドルウェアについてはやってもインストールまで。その上はアプリケーションエンジニアの領域である。最近はプログラム書いた!コンパイルした!リンクした!動く!みたいな簡単なものじゃない。社会のデジタル化やインターネット、APIなどで、かなり要件も拡散してしまっていることから、それを毎度一からプログラミングするのは全然得策ではないし、誰もそんなことはやっていない。

最近はGithubなどにソースコードがあり、Gitでローカルに取り込み、いろいろなアプリケーションを動かすことができる。おかげで、このアプリケーション、動かしてみたいななんてこともあるのだが、そうすると「いやいや、ミドルウェアのことは全然・・」なんて言ってられない。まあミドルウェアも、本番サービスがトラブったときに、Webサーバーの設定やデータベースサーバーがどうこうみたいなことはあるので、知識はあった方が良いが本業ではないということだ。したがって本業からは距離が離れていて、空白地域もあり、もし自分が今から成長するなら、このアプリケーションに近い部分だろうなと思ってる。だから、昨日は環境構築をやってみた。

Pythonも面白い言語で、LinuxでもWindowsでも動くと言いながら、ライブラリーによってはWindowsに対応していないというものもある。Windowsで環境構築して行ったらつまずいたので、WSL2でUbuntu20.04を入れ、その上にPythonを構築していった。Pythonにはたくさんのライブラリがあり、それをimportしまくることで、イチイチ処理を書かなくてもよくなるのが素晴らしいと思った。

Githubにコードを上げるような人物は、Pythonを動かすということに熟知しているため、こうやって構築すれば動くよなんて言わない。そういう資料は、後から動かした人が親切ついでにメモを残すのだ。そうやって有名になって言った結果、誰でも使えるライブラリーが誕生したりするのだが、昨日はそんな資料がなかった。だから、相当ハマった。フラフラになりながらも最後は動いた。

いろいろ動かない理由は後からわかったけれど、やっぱりPythonの言語そのものに対する理解の無さは大きい。毎回引っ掛かっては悩み、ということを繰り返した結果、なんとなくPythonの世界の入口から広がっている世界を見ることができた。何か作りたいというよりは、どういう世界観の言語かを体感できた。

もしアプリケーションエンジニアなら、ここから何かコーディングして作ってみたいとも思うだろう。確かにそれができる知識を少し得ることができた。ただインフラエンジニアの私としては、もっとPythonで動くアプリケーションを見つけて、セットアップしてみたいと思った。この辺りが脳みその違いと言うものだと思う。作るのはめんどくさい。それより人が作ったものを遊んでみたい。他人の成果物ありき。

インフラエンジニアは、まずはアプリケーションを作ろうというプロジェクトが先にあって、その次に呼ばれることが多い。どんな環境構築をすれば本番で安定運用できますか?、と。だからこそ時間があるときには検証をしようと最近思っている。こういうふうに「動きましたよ」というのは強い。いざ予算を決めてプロジェクトがゴーした後に「動きませんでしたよ」っていうのが一番つらい。スケジュールもつらい。関係者もつらい。自分もつらい。三方よしではなく、三方つらし、だ。

逆に、自分が作ったり使ったりしないもんだから、マニュアルや教科書もあまり目を通さずいきなり製品に突っ込んで、経験と実績で乗り越えようとしてしまう短所もある。昨日も、さんざんハマった結果、ああ、こんな簡単なことで引っ掛かってたのか。理屈から学んでおけば悩みすらなかったな、と思うことも何度もあった。

ただ、インフラエンジニアの血として、よくわからんものに突っ込んで言ってああだこうだ悩みながら「動いたー!」っての、どうも止められない。仕事だろうが遊びだろうが、やってしまうところから、そういう宿命なのだろう。

アプリケーションエンジニアは、まず理論から学び、体系を作っていった結果、何か大きいものを作りたい、そういう特性だろうとイメージしている。

ということで、インフラエンジニアとアプリケーションエンジニアって、全然違う特性だと思う。もし、進路に悩む人がいたら、自分の性格に合わせて選んでもらいたい。