エンジニアとして成功するための大事なことトップ3

Youtubeの要約です。
先日すごく感銘を受けた動画を見ましたので、シェアさせてください。
もっと短く要約しようと思ったのですが、ほとんど和訳になってました。ところどころ省略しているところもありますので、全文訳で無いことは注意です。

3 top qualities for a Software Engineer to be successful

Techlead Google Youtube
Patrick Shyu

【導入部分】

手を早く動かす事はとても大事。何も意味がなくても、キーボードを早く叩いたり、マウスを動かしたり、「早く動く真似事」をするだけでも体が早く動く事に慣れるので、普段からやっておくと良い。

1 【インパクト】

エンジニアにとって重要なのは、単にとても多くのバグを無くすだけでも、リファクタリングするだけでも、フレームワークを作るだけではないです。
重要なのはポジティブなインパクトを会社に与える事です。インパクトは計測可能でなければならなくて、例えば、Webサイトへの流入を◯%向上したとか、リファクタリングによってパフォーマンスが◯%向上したなどです。
つまり言いたいのはバグの改修やリファクタリングを行ったのであれば、その効果が明示出来なければ会社からあなたの功績は見えないのです。

どうするか?
もしバグがあれば、バグをリストアップしてまとめてみましょう。まとめたタスクに、パフォーマンスに関係するバグを解決するというストーリーを付けて、パフォーマンスを計測してみます。そしてもしそれが20%のパフォーマンスを向上させたとなると、それはあなたが会社にあたえたインパクトになります。 チームを結成して取り組む事も出来ます。

リファクタリングについて。
リファクタリングに取り掛かる前にあなたは、知っておくべき事があります。それは、会社がどんな方向にリファクタリングしていきたいかです。 もし会社がオブジェクト指向プログラミングから関数型プログラミングに移行したい意思があるのに、オブジェクト指向のままリファクタリングすべきではありません。その行為のインパクトは無いものになってしまいます。

2【難しさの解決 (技術的・組織的・不明確なこと)】

難しさには、技術的、組織的、不明確な事の難しさがあります。
技術的な難しさは、すごく難解なアルゴリズムを構築したり、機械学習を駆使したりする事です。
組織的な難しさとは、大きな会社は既にもっているシステムがお互いに複雑に絡み合っていて、その事に対する対応や、複数のチームとコミュニケーションを行う事です。
不明確な事(アンビギュイティー)への難しさとは、誰も分からない事への取り組みです。誰も何を選択して良いのかわからないことです、例えば、どのフレームワークを使えば良いのかさっぱりな状態とか。もしその状態であなたが、ドキュメントを読んでメリットデメリットなどを提示すればプロジェクトは前に進むことができ、不明確な事へ対応するスキルがあると会社は認識します。
大事なことは、上記のように、もしあなたが何か難しい事に対面したら、その重要な瞬間から避ける事をせず果敢にチャレンジしてみてください。

3【イニシアチブ・リーダーシップ】

イニシアチブ・リーダーシップは軍隊的なものではなくて、
メンタリングをしたり、他人を手助けしたりする事で、自然に育まれていくものです。技術的なバックグランドや組織的なバックグランドはとても良いアドバイスをするのに役立つでしょう。
リーダーシップは役職に付くものではなく、役職があるから尊敬されるわけではありません。もしリーダー・マネージャーという役職を持っていても上記のように他人を助けたりする事をしなければ、もうリーダー・マネージャーではありません。
それらの事であなたが、会社から信用を得ることが出来ると自分のプロジェクトをする事が出来ます。同じ量の仕事でも誰かのアイディアの仕事をするよりか、自分のアイディアの仕事を進める方が、あなたのキャリアに良い影響を及ぼします。

【さいごに】

会社の中だけではなくて人生でも、それらの事は実践可能です。
例えば、家族旅行をプランニングすることは、不明確だし、複雑な事ですが、家族にとってとても良いインパクトを与えて、みなが喜びます。

プロダクトを作っているのであれば、最適化を進めるよりも、より早くマーケットに出してみます。そのことはマーケットにインパクトを与えますし、多くの学びがあります。

多くのエンジニアがクオリティの高いエンジニアとは、多くのGithubプロダクトを行ったり、クラスのプロジェクト(大学生は)を行ったり、VIMやEMACSなどのエディターを使いこなしたり、Macが良いかWindowsが良いかなどを考えたりすることを言います。
それらの事は、3つの重要な事のレンズを通して見ると良いです。
例えば、クラスプロジェクトはインパクトはゼロです。なぜなら、大学の中でのプロジェクトなのでリリースされる事はありません。技術的な難しさはあるでしょう。リーダーシップはゼロです。なぜなら教授があなたをアサインするからです。VIMとEMACSどちらを選ぶかには、インパクトも複雑さもイニシアチブもありません。

オープンソースプロジェクトを通して3つの事が学べます。オープンソースプロジェクトはいくらかのインパクトを与える事が出来ます。技術的な複雑さもあります。まちがいなくイニシアチブがあります。


個人的な感想としては、会社を社会という風に置き換えて理解することも出来るなと思いました。
今回、動画の内容を詳細に理解するために手伝ってくれた同僚や、内部用にシェアしたものを読んでくれて面白いからシェアしてみたらと言ってくれた仲間に感謝します。

OPからFPに移行 の OP/FP とは何を指す単語でしょうか?
不勉強で申し訳ありませんが、ご教示ください。

自己解決しました
Object-Oriented Programming (OOP) and Functional Programming (FP)ですね。

350contribution

@matsuda_sinsuke
ありがとうございます!その通りです。ご質問を参考に本文も修正させて頂きました。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.