はじめに
この記事はこれまで私が17年ほどの社会人経験の中で「エンジニアが身につけると良い掛け合わせスキル」を私なりの観点でまとめています。スキルと書いていますが、仕事に対するスタンス等も含みます。
特定の「デザイン」「マーケティング」「ファイナンス」のような専門領域スキルというよりは、汎用的なものを中心に書いています。
あくまで私個人の観点での話になるので、みなさんの参考の1つになれば幸いです!
基本的には「技術的なスキル」×「〇〇のスキル」という◯◯の部分の話です。
エンジニアが身につけると良い掛け合わせスキル
目次
①コミュニケーションスキル
いきなりざっくりしていますが、これはエンジニア歴が長くなるほど重要になってくるイメージです。責任範囲や関わる人が多くなると重要度が増してきます。
基本的に仕事をする(趣味でのプログラミングは別ですよ)という前提で考えると、会社員であれフリーランスであれ、起業するであれ、エンジニア以外とのコミュニケーションは中長期的にはほぼ必ず発生します。
ここでは、そのエンジニア以外の人とエンジニアリングに関するコミュニケーションをとる際のスキルの話をします。
-
技術に関する話を抽象化して伝えるスキル
- 技術そのものを理解してもらう必要はなく、抽象化してそれが何なのか?何をするものなのか?を伝える
- 相手は何が知りたいか?を常に考えるクセをつける
- 逆に言うと知らなくてい良いものは伝えなくて良い
-
技術が絡むリスクとリターンについて数値化して伝えるスキル
- 新しい技術の導入や負債の話などは、共通言語として定量的な数値に落とし込んで伝える
- 正確な数字を算出することも大事だが、仮置きでも良いのでまずは数字に置き換えてみる意識を持つ
- 特に負債の話などはエンジニア側の肌感も含めたものを理解してもらうのは非常に難しいので所謂「コスパ」的な観点で定量化して伝えることが大事
-
スケジューリングについて相手が理解するように伝えるスキル
- なぜこの開発が1ヶ月かかるのか、を相手に納得感を持って理解させる
- これをしないとひどい場合「開発が遅い」と捉えられて、信頼を無くし自分やチームが損をする
- 「相手の理解度が浅い」「何もわかってない」と言っても意味が無いので、自分やチームを守るためにも納得させる必要がある
他にもたくさんあると思いますが、基本的には前提知識の違う状態で相手との理解を深めるために努力をするということです。これはエンジニア以外の人にも必要な相互のスタンスだと思います。
②コスト管理スキル
スキルというよりはコストに関して普段から意識を向けている、または把握をしているという状態のイメージです。
開発に関する様々なことには必ずコストがかかります。人件費はもちろん、各種ツール利用料、サーバ代などなど。それを普段から意識している人はどれくらいいるでしょうか?
開発生産性という話を最近よく耳にしますが、基本的には 「投入した時間やコストに対して、どれだけの価値を生み出せたか」 なのでコストを把握していないと本質的には意味がありませんが、自分やチームが 開発に掛けた時間だけ意識している人 も多いような気がします。
そんな中で、トータルコストを把握して生産性を考えていれば一段視点の高いエンジニアになれると思います。
そういうのは経営層やマネージャーが管理していれば良いとも思いますが、ここを意識しているだけで本質的な生産性に目を向けている貴重なエンジニアになれると思います。
③チームマネジメントスキル
これは機会があればの話なのですが、チームをマネジメントする経験はしてみると良いと思います。
「マネジメントには興味がない。プレイヤーとして成長したい」という人も多いと思うのですが、機会があればやってみることをおすすめします。(経験のためだけにやるのはいかがなものかと思いますが一旦お置いておきます)
というのもチームや組織で働く場合、ほとんどの場合はマネジメントする人がいます。(チームリーダー的な立ち位置も含むこととします)
その人がどういうことを考えて、何に悩んでいて、何を大事にしているのか、は実際にマネジメントする立場にならないと分からないことも多いです。
もし自分のキャリア的にプレイヤーとしてやっていくにしても、上記のようなことを理解しているか、理解していないかで、組織やチームの中での動き方が変わってくると思います。
理解している場合はより良い働き方や動き方が出来て、自分のキャリアにとってもプラスになると思います。
最後に
あくまで私個人の観点での話になるので、どこかの部分でもみなさんの参考になれば幸いです!