インフラエンジニアであってもプログラマであってもやはり適正というのは存在していると思います。
適性がない仕事では本来の能力が発揮できない事や、技術力の向上に時間がかかってしまう事もあります。
出来れば自分に適した仕事をするのが一番良いですし、モチベーションが保てることでストレスも少なくなります。
インフラエンジニアといっても、サーバが得意な人とネットワークが得意な人、仮想化技術が得意な人とさらに細分化されます。
インフラの領域は所謂、IT基盤の設計・構築・運用・保守です。
アプリのように、エンドユーザの目には見えないバックグラウンドの世界です。
インフラエンジニアは自分に合わない…
理由は様々ですが、実務を経験してそんな風に感じる人や、インフラエンジニアという職種に疑念を抱いてしまう人もいると思います。
そこで、この記事で書いていきたいのはインフラエンジニアを辞めたくなった人に対して、インフラエンジニアから脱却するための方法について書いていきたいと思います。
ちなみに、私もインフラエンジニアを辞めたいと思っていた時期がありました。
今では普通に対応しているんですけどね(笑)
実際アプリ寄りのお仕事を頂いた事もあるので、その経験からインフラエンジニアからキャリアチェンジすることについて書いていきます。
いきなり分野を変えるのはデメリット
インフラエンジニアにとって開発業務は厳しい
インフラエンジニアを辞めて、突然プログラマになるというのはハードルが高いです。
理由としては、インフラとアプリの概念が全くもって異なるからです。
インフラエンジニアの設計とは、設定できる設定値から適切な設計を行う事が大半ですが、アプリケーションは技術者によってプログラムの記述が異なります。
つまり、同じ処理をするとしても何通りも書き方があります。
もちろん、コーディング規約などを設けて徹底して統一する場合もありますし、負荷を考慮して一番適切なコーディングを優先する場合もあります。
資格よりも経験値であったり、どんなアプリケーションを作ったことがあるかが重要なのがプログラマです。
つまり、開発未経験であれば給料が下がっても良いならプログラマとしても就職できるでしょう。
私なら給料を下げてまで転職する覚悟はありません。
シェルスクリプトやバッチスクリプトと、プログラミング言語は似て非なるものです。
インタプリタ型とプログラミング言語では、知識のレベルが違います。
もちろん、インタプリタでも配列など使いこなせていれば最低限アプリの知識を理解できるかもしれませんが、オブジェクトやメソッド、認証などに関してはインフラと全然違います。
言葉に大きな壁がある事を意識してほしいと思います。
プログラミング言語を覚えることだけが開発ではない
開発業務と言うのは、プログラミング言語のコーディングだけではありません。
元々のシステムエンジニアで言えば、サーバの知識が必要になります。
インフラエンジニアを長くやってきた人にとっては、サーバなら詳しいぞ!と思うかもしれませんが知識の種類が違います。
Windows Serverの設定やUnix/Linuxサーバの設定も知っておくと生きる知識でありますが、必要なのはアプリを動かすサーバの知識です。
WebやAPで言えばnginxやApache、Tomcat、JBossの事を指しています。
DBで言えば、OracleDB、SQL Server、DB2、Postgresなどなど。
インフラエンジニアは基本的には、細かいコネクションプールの設定やヒープの設定などを実施した経験がないと思います。
Apache、Tomcatの連携についても私も完璧に把握してはいません。
こういった知識も開発業務には必要になってきます。
B to Cのサイト開発などでは、負荷分散ももちろんですが、セッション維持に関してはLB側だけの世界ではなく、Apache Tomcatの設定も必要ですし、ここで失敗すると大問題です。
こういった認識が無いままだと、いきなりアプリケーション開発に参入してもインフラの知見があってもやはり初心者と変わらない状態ですよね。
設計書やドキュメントにも壁がある
システムの設計構築には、設計書が必須です。
SIerであれば必ずユーザに納品する必要があります。
納品が不要なケースとしては、ERPパッケージであったり、ソフトウェアベンダの製品を導入する際に、開発元が情報を明かしていない内容に関しては作成できないので不要です。
開発業務では、非常に重要なドキュメントがありますが、それはインフラエンジニアが作成したことのない資料です。
ER図とエンティティ定義書です。
データベースの内部処理の相関図のようなものですが、設計でも運用でも極めて重要な資料です。
これがないと、仕様を確認するのにデータベースやアプリケーションの構造、ソースを直接確認するしかありません。
ソフトベンダはこういった資料を公開しないことが多いです。
(同じような製品を開発されても困りますしね)
無理やりインフラエンジニアの設計書に変換すると結線図ですね。
どこのポートにIPアドレスがいくつで、VLAN IDがいくつで数GBで…みたいな組み合わせを作成します。
自社開発のアプリケーションに関しては、必ずこの資料が必要です。
サービスのコアになる仕様を定めているものになるので、インフラエンジニアからプログラマになった際は、この言葉の意味も知らないかもしれませんね。
インフラエンジニアを辞めるならミドルを主体的に
ミドルウェアとはその名の通り中間
インフラエンジニアを辞めたいが、アプリケーションをやりたいという人は、ミドルウェアのお仕事を積極的にこなすことをお勧めします。
理由は、ミドルウェアを扱う上でアプリケーションとの連携が必須だからです。
私はデータベースを得意としています。
データベースとは、アプリケーションがデータを書き込んだり読み込んだりするのに必要なので、アプリケーションサーバとの連携も必須です。
ただし、サーバサイドのストレージやI/O性能、バックアップ・リストアなどの基本的な知識も必要なので、インフラの知識も必要です。
その名の通りサービスの中間に位置しています。
つまり、インフラの知識を活かしつつ、アプリの知識も身につきます。
プログラミング言語を覚える事だけが開発業務ではないと記載した通りで、データベースやアプリケーションサーバ、WEBサーバの知識も必要です。
現場によっては、DBの管理者であるDBA業務をアプリ開発が担当しているケースもあるので、ミドルウェアに関してはインフラの知識も活きるので参入していける領域だと思います。
徐々にレイヤを上げていける
もしデータベースで経験を積めたら、次はAPサーバへ作業の領域を広げていける事も出来ます。
データベースとアプリケーションは切っても切れない関係なので、設計業務などを行っていれば、データベースを安定的に運用するためにAPサーバへ設定している内容や、アプリケーションの要件で設定したAPサーバの設定値についてノウハウが溜まっているはずです。
検証環境などでは構築できるようになっていると良いですね。
検証できるという事は、挙動が分かるという事です。
問題ないと言い切れる設定値であれば、本番環境への設定も可能なわけです。
1度でも本番環境での作業実績が出来れば、あとは増やしていくだけです。
なんだか時間がかかりそうな事を書いていますが、その1回に自信があれば全力で出来るというアピールをしてキャリアチェンジしてみても良いでしょう。
私は結局、インフラメインでミドルもアプリも片手間でやるという業務内容で報酬が良かったので、アプリ側へキャリアチェンジはしませんでした。
データベース技術を学んでからは、Web系の案件の成約率が良かったので、アプリ寄りのお仕事もやろうと思えばできそうです。
ミドルは出来るけどプログラミングもしたいは強い
プログラマの知り合いが何人かいますが、本当にコーディング主体の人ってインフラもそうですが、ミドルに強くなかったりします。
特に、推しているデータベースに関してです。
パフォーマンスチューニング系はデータベース側で強い人がいると便利なんですよね。
ミドルに詳しい人を開発現場では欲していたりします。
全ての会社ではないので、言い切る事は出来ませんが、サーバサイドの知識があれば簡単に実現できることも多いんですよね。
わざわざプログラムにしなくても良い機能であったり、そういった設計部分に関してはミドルウェアに詳しい人がいた方がより効率的で品質も良いです。
開発で活きる知識を持っているという事は即戦力であり、プログラミング関しては素人なわけです。
ですが、ミドルウェアを扱った知識があれば0ベースで学習する事になるわけでもないので、そんなに悪い印象もないと思います。
むしろ、ミドルの経験を評価してもらえれば給料なども変わらないと思います。
フリーランスの案件成約でもそうですが、ミドルは絶対に出来た方が良いと確信をもって言えました。
最後に
長々とインフラエンジニアを辞めてアプリに行くための方法について書いていきました。
結局のところ、インフラとアプリには大きな知識の壁があり、得られる経験も違う事から、中間層であるミドルからアプローチしましょうという事です。
インフラの知識も活かしていけるので、急がば回れという事で、ミドルウェアの業務経験を開発業務の人や会社にアピールすることで参入障壁が低くなっていくと思います。
なぜなら、転職するのであれば即戦力が前提なのでインフラエンジニアの経験しかなかったらインフラエンジニアの仕事をやって欲しいと言われるだけですからね。
なので、アプリでも通用する確かな技術を身に着けることが最短ルートかと思います。