これからはじめるインフラエンジニア 発表資料

新卒採用のイベントで『知的ヘンタイ六番勝負』というのをやっていまして、その『第三戦 大規模インフラ・解析勉強会』にてインフラについて話してよ、と人事オファーをいただきまして発表した次第でございます。

エンジニア志望とはいえ、不特定多数の人間に対してインフラの話と一口で言われても、誰が何をどれくらい理解してるのかわからないので厳しい案件ではありましたが、せっかく来ていただくので真面目に張り切った結果、質疑応答含めて1時間弱に渡る発表+風邪でノドが潰れた資料がこちらになります。



発表資料






補足

新卒の方々に向けて

これまで新卒の人に関わる機会がなく、インフラについてどの程度理解があるのか全くの不明でしたが、思っていたより勉強しているなという感触と、良いエンジニアになれそうな匂いを発している野郎も結構多かったな、という印象でした。

資料でも触れてますが、WEBエンジニアを目指した時に、何を武器に何エンジニアになるかが重要になってきます。自分もそうでしたが、若い頃はわりと「全部できるようになりたい」とか思っちゃうんですけど、意気込みは買っても考え方としてはあまりよろしくなくて、1つ1つの分野を丁寧に磨き上げた結果、大半のことができるようになった!というのが正しいプロセスかと思います。

最初はアプリエンジニアとしてRuby on Rails中心の業務になったとしても、別にそれで一生を終えるわけでもなく、努力を続けていれば少しずつ近い分野も得意になっていき、興味分野や特性が判明して、自分はなんちゃらエンジニアである、と自信を持って言えるようになるはずです。そのために、どのような分野・選択肢があるのかを知って欲しかったので今回、無理矢理広範囲に渡って資料を作成してみました。

進学もそうですが、わりと漠然と、理系ならいいやとか情報系ならいいや、という感じで進むこともあると思いますが、仕事も似た感じで良いと思っていまして、大事なのは

  • 日々の業務を効率良くこなせること
  • 技術力の向上に努力を惜しまないこと
  • ステップアップと分野選択ができる環境にいること

  • かと思います。
    もちろん、これをやるんだ!と決まってればそれにこしたことはないですが、それでも広範囲の知識を浅くでも身に着けておくことは重要であること間違いなしです。

    どうやって技術を習得しているか

    例えば、データベースについてどうやって習得したのですか?と聞かれるとこんな感じ。

  • 自分でアプリケーションを作成して、自分で運用した
  • リファレンスマニュアルの類はほぼ全部読んだ
  • ブログの情報も国内/海外問わず追いかける
  • 重要そうな設定項目は掘り下げて調べて実際に検証した
  • トラブルシューティングしまくった
  • パフォーマンスチューニングしまくった

  • これら全てが重要で、何一つ手は抜いてきていません。
    最初の頃は本を読むのも重要ですが、ぶっちゃけここ数年は本をまともに読んだ覚えがなく、
    ほぼ全て実務とWEB上での調査で磨かれていってると思います。
    (※私はDBA専門ではないので、まともなDBAにちゃんと話を聞いたほうがよいですけどね、と:-)

    本を読みました、MySQL動かしました、SQL叩いてみました、小規模アプリ作りました、までなら本のコピペでできるので、実務に関わりだしてようやくスタートラインなのかな・・と。特にDB関連は本番環境に関わらないと真の習得という意味では厳しいですね。

    どうやって技術を考えているか

    ミドルウェア習得に限らず、アーキテクチャ構想などでもやることは決まっていて

  • 可能な限りの情報をかき集める
  • 良さそうな事例3~4パターンを見つける
  • 既存の知識と合わせて自分用にブラッシュアップする
  • 検証する

  • 実運用で極端なトラブルが起きないためには検証が重要になりますが、
    たいていのものは他所様の真似っ子というか既存情報の練り上げですよ、と。

    新し目のことをやると事例がゼロなので、そういう時は少ないマニュアルや掲示板やソースコードを頼りに地道に構築していくことになります。

    社会への貢献

    インフラエンジニアには一般ユーザの反応や売上が存在しなく、
    しょせん基盤なのでわかりやすい達成感を感じることは難しいかもしれません。
    むしろ24時間365日稼働することがアタリマエと思われ、
    落ちた分だけマイナス評価とされるネガティブな考えに苦悩する時期もあるかもしれません。

    ただ、インフラエンジニアのお客様は誰かというと、まずは自分とこの社員であり、
    なんだかんだで感謝されることの方が多かったりします。
    自分が悪かったのに直しただけで感謝されることすらあります。

    技術情報の発信は逆にインフラエンジニアがやりやすい分野だったりするので
    直接的には世の中にソフトウェアを提供したりブログを書いたりすればよいですし、
    間接的にはユーザがストレス無くサービスを利用できている様子を聞くことができて、

    そういうことに俺は幸せを感じるんだ 的に悟っていけばいいのではないでしょうか。

    技術の評価について

    人事的なところなのであまり突っ込めないですが、
    資格で追加評価するところもあれば、頑張って技術力を数値化する会社もあります。

    基本的には仕事の結果やアウトプットに対して評価(≒給与)され、
    漠然とした「技術力」というもので評価されることは少ないかと思います。

    重要なのは、その会社の評価制度について正しく理解し、納得することだと思います。

    最も大事なこと

    楽しくやることです。

    私は好きでやってるので、別に深夜作業があろうと、自宅で調査しようと、苦に感じることはないです。かといって、誰かに家でも勉強したり検証することを強制することはありません。

    ただエンジニアに限らず、スポーツでも趣味でも、かけた時間に比例して実力が向上するので、デキるエンジニアになりたければ自宅でも休日でも色々やらないと話になんないよ、とは言います。あと、早い段階で2~3回は血反吐を吐くといいよ、とも言います。

    それを楽しめるか、苦痛と感じてブラックと言っちゃうかは、
    会社とか関係なくその人の適性だと思います。


    仕事をするにせよ遊ぶにせよ、いかに効率的に時間を作るかが大切なので、残りの在学期間をどう使うかを改めて考え、就職まで、そして就職してからも頑張っていただきたいと思います。