北戴河の漁船
最近はほとんどの時間をあれこれ考えて過ごしており、自分は一体何に向いているのかと考え込んでいます。自分の大学生活を振り返ってみると、何をするにも中途半端で一貫性がなく、そのせいで今、就職活動にとても苦労しています。WebとAndroidのどちらも精通するところまで至らず、面接のたびに「どちらをやりたいですか」と聞かれても、いつも曖昧で優柔不断な答えになってしまいます。これは間違いなく大きな教訓です。もし後輩たちにアドバイスするとしたら、自分が本当に好きなことを見つけて、進むのが遅くても構わないから、とにかく一つの技術を継続的に追いかけることが大切で、そうして初めて継続的に成長できるのだと伝えたいです。
話を戻すと、今年の4月以前は、卒業までにモバイルインターネット関連の技術を一通り学ぼうと思っていました。主にPHP、Android、iOSで、卒業したらインターネット企業に入って、いわゆる「モバイルインターネット時代」を体験したいと考えていました。しかし、今年の4月頃から、以前所属していたスタートアップチームが毎日のように要件を変更し、プロジェクトが延々と遅れていくことに非常にうんざりし始めました。その当時一番強く感じたのは、将来「ユーザーニーズ」に振り回されるのも嫌だし、いわゆる「プロジェクトマネージャー」に振り回されるのも嫌だということでした。どんな開発にもプロジェクトマネージャーはいるものですが、とにかく当時はアプリケーション開発をやらないと心に決めました。
これは夏のインターンシップの選択にも影響しました。当時、3つの選択肢がありました:テンセントのPHP開発エンジニア、レノボのサーバー部門のOSチーム、そしてレッドハットのハードウェアテストチーム(詳細は忘れました)。考えた末、レノボのサーバー部門に行くことを選びました。実は、もし当時テンセントを選んでPHPを書いていたら、今頃PHPの仕事を見つけるのは簡単だったでしょう。
レノボに来て初めてわかったのですが、いわゆるOSチームはLenovoのサーバーに合わせて最適化を行うのではなく、各OSベンダーが提供するBeta、RC、GA版のOSを自社のサーバー上で認証する仕事でした。つまり、これらのOSの機能が正常に動作するかをテストするのです。しかし、この仕事で最も価値がある点は2つあります。1つは、OSが正常に動作することを証明するためにどのようなテスト項目を実施すべきかということ、もう1つは、テスト中に問題が発生した場合に、issueの原因がどこにあるのかを分析することです。この2つの理由から、OSエンジニアには高いスキルが要求され、豊富な経験が必要です。OSチームの主力エンジニアは全員30歳以上で、基本的に以前は対応するOSベンダーに勤めていました。そのため、OSベンダーに行って学ばなければ、大きな成長はないだろうと思いました。
しかし、この過程で、他の人が簡単には得られない多くの経験を得ることができました。例えばサーバーの構成です。ソフトウェア工学出身の私ですが、今では一台のサーバーを直接組み立てることができ、マシンのハードウェア故障も簡単に分析できます。最も重要なのは、私が関わった2つのOSが、VMwareのESXiとCitrixのXenServerだったことです。この過程で、初めてエンタープライズ級の仮想化ソフトウェアに触れ、自分で資料を読み始め、少しずつ理解するようになりました。実際、クラウドコンピューティングであれビッグデータであれ、最も基本的なプラットフォームは仮想化によって実現されています。では、仮想化の核心は何でしょうか?私はネットワークとストレージだと思います。
さて、これだけ書いてきて、自分の考えもだんだん明確になってきました。私は個人的にはぜひサーバー業界に残り、その上のプラットフォーム、例えばOpenStackなどを学びたいと思っています。そしてやはり開発の仕事がしたいです。というのも、しばらくコーディングをしないと、本当に安心感が得られないからです。最終的に自分がやりたいことをできるよう願っています。
出典:http://www.jianshu.com/p/3388e900a635