はじめに
強いエンジニアと聞いてどんな人を想像するでしょうか?
「良いコードを書ける人」だったり、「コンピュータの仕組みを深く理解してコードが書ける人」だったりと人によってイメージする像は異なると思います。
幸いにも筆者の周りにはそういった方がたくさんいます。
じゃあ強いエンジニアって具体的に何が強いの?って部分をそんな方々の背中を約半年観察して自分なりに「こういうことか」という結論がついたのでそれを書いてみました。
強いエンジニアとは
筆者の結論からまず書くと、課題解決能力が極めて高いエンジニアだと捉えています。
それって具体的になんなの?というのを5つに絞って書きました。
エンジニアに対して強いという表現はどうなんだと言われてしまいそうですが、SNS各所でそういった表現を散見するので今回はそう書かせていただきます。
1. 経験
まず1つ目は経験です。
なんだ経験なのかと思った方、その通りです。
経験は強いです。
解決してきた課題の数が違うのです。
なので課題解決能力に直結します。
良いコードというのは過去の経験(特に失敗)から生まれることが多いので冒頭でも書いた「良いコードを書ける人」というのはこの経験が積まれた結果なのかなと思います。
どうしたら身につくか?
これに関してはひたすらトライアンドエラーを繰り返しながらコードを書くに尽きます。
強いていうならなるべくレビューをもらいやすい環境でコードを書くことだと思います。
レビューをもらうことで他者の経験を自分のコードに反映できるからです。
2. アウトプットの質
次にアウトプットの質です。
これはその人が書いたコードの質のことではなく、自分の持っている知識やノウハウを記事としてまとめる能力や、社内向けの開発ドキュメントをまとめる能力のことを指します。
具体的に該当するものは以下になります。
- 技術記事の質
- 社内ドキュメントの質
- 人に説明するときの質
どうしたら身につくか?
記事、ドキュメントに関しては量をこなすことが1番の近道かなと思います。
筆者の場合はQiitaへの記事投稿を毎週欠かさずやっています。
人に説明する時の質に関しても繰り返しになってしまいますが、量をこなすことだと思います。
あとこれは経験談なのですが、上の記事やドキュメントを書くということをこなしていると自然と頭の中で伝えたいことが整理されていくので上と同じことをやると良いと思います。
良く言われていることですが、質を上げるためにはひたすら量をやるのが良いと思います。
しかし、ただ量をやるのではなく、毎回トライアンドエラーをすること。
これさえやればスピードこそ個人差はありますが必ず上達すると思います。
3. インプットの深さ
分かりやすく言うと、「課題にぶつかったときに1つのソースからどれだけ深い部分まで読み取れるか」です。
例えば、Aさんとその先輩のBさんがいるとします。
Aさんはとあるバグを直すために公式のドキュメントを読みましたが、具体的な解決策が見つからず、先輩のBさんに助けを求めました。
すると5分もかからないうちにBさんは同じドキュメントから解決策を立ててくれました。
同じドキュメントを読んでもどれだけ深い部分まで理解できるかです。
それがインプットの深さです。
どうしたら身につくか?
自分のサービスを持っている人やプロジェクトにアサインされている方は不具合修正を率先してやるのがオススメです。
ただドキュメントを深く読めと言っても目的がないと上達しません。
なので目的を不具合修正において、量をこなすことが良いのかなと思います。
ちなみに筆者は英語のドキュメントが出ると途端にインプットが浅くなるので、英語のドキュメントを読みながらもスケジュール通りプロジェクトを終わらすことを今期の目標においています。
4. インプットの広さ
深さの次は広さです
これは解決方法をどこから得てくるかの、バリエーションの多さと言い換えられます。
課題にぶつかった際にまずやるのはググることですが、他にもyoutubeの動画だったり、podcastの音声だったり、Twitterで投げてみるみたいなものがあります。
情報を引っ張ってくるチャネルをどれだけ持ってるかがインプットの広さなのかなと思います。
どうしたら身につくか?
周りのいわゆる強いエンジニアに聞きましょう、今すぐです。
これは簡単かつすぐできるようになるのでオススメです。
筆者はこれで、音声メディアからインプットする方法とTwitterで有識者をリスト化する方法を教えてもらいました。
5. コミュニケーション能力
最後はコミュニケーション能力です。
これはわからないことがあった時に、適切な人に、適切なタイミングで、聞きたいことを正確に聞き出す能力だと思います。
適切な人と適切なタイミング、正確に聞き出すが特に大事だと思っていて、
その課題に関する技術に明るい人に聞かなければ意味がありませんし、
その人にも業務があるので聞いて良いタイミングを知らなければなりません。
また、自分が何で困っているか、何を知れることがゴールなのかを相手に伝え、聞き出す能力も持っていなければなりません。
これがコミュニケーション能力です。
どうしたら身につくか?
まず前提として必要なのが2で説明したアウトプットの質
です。
というのも人に説明する能力がまず必要だからです。
それができたらどのタイミングで誰に正確に聞き出すかですが、これは筆者自身も最適解を模索中です。
なので筆者が今やっている方法を共有しようと思います。
- 着手している課題の経緯を書く
- それに対して試したことと結果を書いておく
- 書いたもののリンクと併せて有識者に対して質問する
相談された側をなるべく短い時間で状況が把握できて、どれを試してダメだったかをスムーズに共有できるからです。
最後に
自分の中でもまだ整理している途中です。
これを読んで、「こんな特徴もあるよね!」というものがあったらコメントしていただけると新しい発見ができたりするので嬉しいです!
ではまた!