この連載も早いものでもう23回です。そして最終回です。これまで2年近く、ありがとうございました。
これまでの総括というわけではありませんが、エンジニアとして成長していくために筆者が必要だと思うことについて、あらためてまとめてみます。
1.逃げない
なんといっても一番成長するために必要なことは、逃げないことだと思います。たとえばトラブルはもっとも成長するチャンスですが、逃げていてはもちろんそのチャンスを活かすことはできません。またトラブルではなくても、とにかく逃げるということは、イコール経験値を貯めることを放棄することにほかなりません。
逃げなければ、経験値が貯まるだけではなく、周りからの信用も獲得し、より重要なタスクを任されるようになれ、さらに成長することができます。もちろん、逃げないだけではなく、逃げない上に結果を出すことが重要ですが、結果というのはそのとき自分が持っているスキルが足りていれば出る、そうでなければ出ないものなので、これはできる限りまでトライするとしか言いようがありません。
スキルが及ばず無理な場合には、それに対処できる人に任せるのも重要なことで、それは逃げることにはなりません。とにもかくにも、エンジニアが成長するためには(エンジニアだけではないですが)、この逃げないというのが一番重要だと思います。
2. 武器を手に入れる
世の中にはさまざまな技術、知識、道具などがありますが、その中でも本当に役にたつ武器というものがいくつかあります。
インフラエンジニアであれば、tcpdumpやstrace(などのシステムコールトレーサー)、各種statを計測するコマンドあたりがそれにあたります。こういった強力な武器を手に入れて使いこなすことは、それ自体が自身の成長にもつながりますが、それと同時にこういった本質的な武器を手に入れて使いこなすことこそが、本質を見抜くために役立ちます。
UNIXやLinuxであれば、パケットとシステムコールと各種statや、あとは/procや/etc、ライブラリの仕組みあたりを知れば、もうだいたい怖いものはなくなると言えます。当然ながら、何が本当に武器になるのかを見極める力も必要になってきます。それには場数を踏むことも重要ですし、他人の意見や経験を参考にすることも重要です。そういう意味では、情報収集のスキルというのも大変に重要だといえます。
情報収集自体が一番強力な武器であるとも言えるでしょう。
3.力を手に入れる
ここでいう力というのは技術力ではなくて自分の意見や考えを通す力です。それは周囲からの信頼であったり、影響力であったり、権力であったり、胆力であったりと要因はさまざまです。
やはりエンジニアたるもの(エンジニアだけではないですが)、自分が正しいと思ったことはそれを貫けるほうが、人の言うままに動いているよりは成長します。もちろん、自分が間違っていてそれがわからないままにそれを押し通すのは自分にとってもマイナスですが、まあえてしてそういう人は遅かれ早かれ自分の意見が通せなくなります。
余談ですが、意見が正しくない人の意見が通ってしまう組織というのは最悪ですね。そのために、自分の意見がまっとうな理由で通りやすくなるように努力しましょう。それには、自分の成果をきっちりアピールするとか、重要なタスクを進んで引きうける(そして結果をきちんと出す)とか、昇進などのチャンスがあれば迷わず手を挙げるなど、ものおじしないで前進していくことが重要です。
またそれは、マネジメントを厭わないということにもつながります。なんとなく、エンジニアはマネジメントにいくようでは「上がり」だ(悪い意味で)と言われるような風潮がありますが、そんなことはないと思います。
1台のサーバを運用するのと1000台のサーバを運用するのは、ほとんど全く別のことです。static routeひとつでいいルーティングとBGPフルルートも、ほとんど全く別のことです。
エンジニアの成長とはちょっと違いますが、スティーブ・ジョブズが数人しかいない会社にずっといたとしたら、あれほどの事は成し遂げられなかったでしょう。権力というのは正しく使えば夢や野望を達成する武器になるのです。どうせやるのであれば、でかいフィールドに立つほうが身につくものは増えていきます。そのためにはマネジメントをする機会があればそれを逃さず、チャンスとして活用していきましょう。
4.こだわる
結果を出すことは重要ですが、必要最小限なのか、それを越えていくのかというのもまた重要です。
トラブルが発生したときに、それを解決することは一番重要ですが、それ以外にも再発防止をすることや、運用の改善をすることなど、できることはたくさんあります。この「こだわり」というのが、エンジニアにとっては大変重要です。
サーバがたくさんあるときに、環境の違い(バージョンなど)を気にしないのか、全部がきっちりそろっていないと気がすまないか、無駄なファイルやプロセスなどをギリギリまで削ぎ落とさないと気がすまないか、とにかくこういったこだわりというのはそのまま成長につながることが多いと言えます。
他にも、運用から手動の部分を減らすためにスクリプトやmakefileを作ったりとか、バージョン管理を取り入れたりとか、こういった作業のひとつひとつが自身の経験値や知識を増やすチャンスになります。
5.トラブルに遭遇すること
これは自分の意思だけではどうにもならない部分もありますが、とはいえトラブルに遭遇するというのはもっともスキルと経験を増やすチャンスです。自転車やスキーは転ぶほど上手くなるのと一緒です。トラブル対応中は、ドラゴンボールの「精神と時の部屋」のように、同じ時間が長く感じられます。それも深刻であればあるほど顕著になります。
もちろん結果を出すこと(解決すること)が一番重要なのですが、解決に取り組む時間自体が成長の大きな糧になります。しかも、だいたいインフラエンジニアというのは減点法なものですが、トラブル解決は加点になる貴重な機会でもあります。
トラブルは三段跳びで経験などを手に入れるチャンスです。なければそれに越しことはありませんが、あったら是非積極的に取り組みましょう。もちろん、解決すればそれはボーナスポイントです。解決するまでのステップも経験になるとはいえ、解決しないとその過程の答え合わせができません。
また、解決するとそれだけ、自分の信頼も獲得することができ、それはそのまま力にもなっていくことでしょう。
6.投げださない
逃げないと似ているかもしれませんが、これは場面場面で投げださないという意味ではなくて、あるフィールドにおいては一定期間結果を出すまで続けるという意味です。一般的には結果を出すまで3年が目安といいますが、これは個人差はあると思います。成長に1年、活躍に1年、育成に1年とかいったりしますね。筆者の場合はだいたい2年だった気がします。
会社都合解雇や、経営方針変更など、本当にやむをえない場合もあるとは思いますが、それでもたいがいの場合においてはどんな状況でも成長の機会というものはあるものです。
ジョブホッパーは次のキャリアを見つけるチャンスも減っていきます。選択肢が減るということはそれだけチャンスも減るということです。何か不満があったらその解消にチャレンジしてみましょう。コミュニケーション力や交渉力、営業力すらエンジニアキャリアにとってはプラスになります。本当に自分が良いと思うことをやりたければ、経営者になることでさえひとつの選択肢になりえます。
7.情報発信する
経験や知識を貯めこむだけではいずれ頭打ちになります。自分の得たものを発信していきましょう。
それは、職場の仲間かもしれないし、自分の部下かもしれないし、同じ業界の友達かもしれないし、不特定多数に対してかもしれません。情報発信するには、自分の中だけにあるときよりも細かいところがはっきりしていなければなりません。文字化できない情報は伝達できないので、自分の知識経験を文章にできなければなりません。それはつまり、自分の知識経験を整理するということになります。
また、情報を発信するには、曖昧なところがあってはいけません。自分の中だけの知識経験であるときはなんとなくで済ませていたところも、ちゃんと調べて裏を取る必要があります。すなわちそれは、自分の知識経験がより明確なものになるということです。
それに加えて、情報発信するということは、発信した情報に責任を持つということです。これは、一番最初に挙げた「逃げない」に通じることでもあります。さらに、情報発信することで、新たな人のネットワークができていき、またそれが自分にとっての糧にもなっていきます。
今回は最後ということもあって、これまでの連載を要約して、エンジニアの成長にとって筆者が重要だと思うことを、あらためて挙げてみました。みなさんがエンジニアとして成長していくことを祈っています。