思考・考察
十人十色のチームで働くエンジニアとして心がけている3つのこと
yahata
PM/webエンジニアの八幡です。
久しぶりのブログで、Amazon Machine Learningの話を書くか、TypedArrayの話を書くか、OLYMPUS AIRの話を書くか、色々迷いましたが、会社のブログなので仕事のことを書きますw
弊社では色々な職種のスタッフがチームを組んで動いています。社員はエンジニア・デザイナー・ディレクター・マネージャ・営業から、多様なスキルセットを持つアルバイトスタッフまで。
そんな十人十色のチームで働くエンジニアとして、自分が普段気をつけていることをまとめてみようと思います。
普段エンジニアとして気をつけていること
自分が普段気をつけているのは、大きく分けて次の3つです。
- リスクを説明すること
- 自分の仕事を他の人に任せられるようにすること
- どんな技術も正当に評価できるようになること
リスクを説明すること
エンジニアは、プロダクトが持つリスクを誰よりも把握している必要があると考えています。
このライブラリのこのバージョンではXSS脆弱性があるとか、この設計を採用すると後々UIに制約が生じるとか、このURL設計だと拡張性が失われるとか。「お前が気づかなかったら誰が気づくんだ?」ということばかりですが、他のチームメンバーがリスクに煩わされずに安心して仕事できるように、最低限果たさなければいけない責務です。
まあ、深く知れば知るほどリスクばかり見えてくるというのは確かに気持ち悪い部分もありますが、「なんとなく怖いから手を出さない」よりも、リスクに確実に対処しながら前に進めるようになった方が楽しいです。そう思いません?
自分の仕事を他の人に任せられるようにすること
自分の仕事はとにかく自動化するなり、環境を整えるなりして、他のスタッフに依頼できるようにする必要があります。
それはリスクヘッジでもあり、効率化でもあり、チームメンバーが本質的な仕事に取り組めるようにするために重要なことです。
また、自分にしかできない仕事があるということは、自分がボトルネックであるということです。
業務だと、どうしても慣れたやり方で目の前のタスクをとにかくこなすのを優先しがちですが、「この仕事は本当に自分にしかできないのか?」とちょっと自問自答してみると、案外そうでもなかったりします。
どんな技術も正当に評価できるようになること
正当な評価が行われていないチームでは、不公平感やアサインミスが生じたりして、結果的にチーム全体のクオリティが落ちてしまいます。過大でも過小でもなく、正当な評価を行うことは非常に大切です。
人は、自分より10倍以上優秀な人間は正確に評価できないと言います。
だから、チームにweb技術レベル100のスタッフがいたら、自分は最低でもレベル10になっておく。
チームにマネジメント技術レベル50のスタッフがいたら、自分は最低でもレベル5になっておく。
正当な評価のためには、そうやってまず相手の持つ技術を理解しようとする姿勢が大事なんですね。
まあ、弊社は特にスペシャリストが強い環境なので、広く知識を得ていこうというジェネラリスト的なスタイルは実は肩身が狭かったりするのですがw
エンジニアのキャリアの方向性
クックパッドCTOの館野さんの「エンジニアのキャリアの方向性」という記事では、こんなことが書かれています。
私が今考えるエンジニアのキャリアプランは大きく分類するとこの3つがあるのかなぁ、と思ってまして
1. 経営者(CTOなど)・技術マネージャ
様々な技術の知識やマネジメント力があるからこそ、組織にあった技術戦略を考え、会社や社員を導き育てる人
2. 技術スペシャリスト
歳を重ねても技術を吸収し磨き続け深い知識があるからこそ、活躍できるエンジニア
3. サービススペシャリスト
ユーザに向けてアプリやサービスなどを提供し続けるエンジニア。技術もできるが、その技術をエンドユーザの価値に直接結びつけられる人。
一口にエンジニアと言っても、色々なスタイルがあると思います。
自分が何に重きを置いているのか、時々振り返ってみると何か発見があるかもしれません。