NCZOnline

Nicholas C. Zakas氏がNCZOnlineにおいてWhat makes a great software engineer?のタイトルのもと、優れたエンジニアになるための方法を紹介している。数週間前にNetflixの社風を紹介したプレゼン資料が公開された。Netflixで働くことの利点を紹介するプレゼンだが、同氏の考えはこれとは違うようだ。氏はそのプレゼンに触発され、優れたエンジニアになるにはどこで働いているかは関係なく、本人がどう取り組むかであるという自説を紹介している。紹介されている内容は次のとおり。

いつでも正しい方法を実践する

若手エンジニアに多い過ちだが、これは年上のエンジニアにも起こりうる。優れたエンジニアは正しい方法がどんな状況にも適用できることを知っており、正しい方法で取り組んだ場合でも時間が足りないという場合には、そもそも作業時間が足りないということを知っている。仕事の質が根本的にエンジニアとしてのあなたを定義することになる。妥協してうやむやにするようなことはしてはならず、作成したコードはすべて正しい方法で実施されたものか確認する。

苦痛を経験する心構えでいる

優れたエンジニアは積極的に問題に挑戦し、取り組みを続け、問題を解決されることを厭わない。優れていないエンジニアはすぐに他人に助けを求め、自分で解決しようとしない。問題を解決するというのは優れたスキルであり、苦労して問題へ取り組むことが、すなわち学習していく方法だ。

学習を止めない

技術流動は早いため、継続して学ばなければ、従業員としては消耗品という位置づけにされるだけ。優れたエンジニアになるには、まず自分はすべてを知っているわけではないと認め、ありとあらゆる方法で多くの知識を追っていく。ブログを読み、カンファレンスに参加し、開発者会議に出席する。

知識を共有する

自身の価値を作るものは知識ではなく、その知識を使って会社に対して価値のあるものを作り出せるかとうい点にある。他人と知識を共有することでそれを実現できる。組織レベルで知識を閉じ込めている場合、熾烈な内部競争には狡猾で抜け目なく他人を陥れようとする状況が発生する。優れたエンジニアは知識を共有することを恐れないし、それでポジションを失うとは考えない。

助けの手を差し伸べる

優れたエンジニアは自分が特定の仕事に縛られているとは考えない。若手エンジニアから助けを求められれば直ぐに手助けに向かう。それがどんなに小さくみすぼらしいものだったとしても、優れたエンジニアはそれを嘲笑ったりしない。チームプレーの重要性を理解しており、どんな作業をしていても助けに向かっていく。

時間を確保する

優れたエンジニアは自然と生まれるものではなく、作り出されるもの。ここに掲載されている内容を実践し、一生懸命仕事をすることで作り出される。優れたエンジニアになるべく取り組みをはじめたのなら、これから多くのことをしなければならない。それには数年かかるかもしれないし、10年かかるかもしれない。粘り強く取り組む必要がある。優れた組織であれば、あなたが優れたエンジニアになる素質があると判断すれば、それを支援してくれる。仕事を通じてそれを示していけばいい。修養を続け邁進せよ。

Nicholas C. Zakas氏はYahoo!でWebデベロッパ/フロントエンドエンジニアを務めている。"Professional JavaScript for Web Developers"、"Professional Ajax"などの書籍の著者であり、NCZOnlineにおいてJavaScriptパフォーマンスに関する記事やJavaScriptに関連するブラウザの動作などの記事を公開している。