※本記事は、Geminiによる意訳+翻訳と、自身でも査読して要約して、レイアウト調整したものです。
※感想は、オリジナルです。
原文
On Good Software Engineers | Candost's Blog
意訳+要約
優れたソフトウェアエンジニアについて
ソフトウェアエンジニアに対してどのような期待を持つべきか、その定義は簡単ではありません。企業ごとにニーズ、構造、技術スタック、文化が異なるため、チームに新しいメンバーが加わると、組織の期待と個人の期待を一致させることがマネージャーの課題となります。
10倍エンジニア、スーパースター、ロックスター開発者などの定義は、良いエンジニアの定義とはなりません。多くの仕事をこなすかもしれませんが、チーム協調性を犠牲にして低品質なコードを生み出すこともあり、最終的にはチームの士気が低下し、組織は劣悪なコードのコストを負担することもあります。
キャリアフレームワークというものがあります。それは役割の定義に役立ちますが、良いエンジニアを定義するものではありません。
優秀なエンジニアの条件
- プロジェクトを進展させ、チームと協力して繰り返し高品質なソリューションを提供する
- 小さな明確なタスクを高品質で繰り返し遂行する
- 機能やプロジェクトを推進し、提供できる
- チームとしてソリューションを提供するために他者や組織に良い影響を与える
- 明確な意思疎通
- フィードバックの授受、共感を真摯にできる
- アイデアからソリューションに至るまでのプロセスを理解している
- 自分がいる環境を学び、プロセスを超えて独立して仕事を推進する
- 組織の仕組み、文化、規範に応じて働き方を最適化する
- 当事者意識を持って積極的に働き、品質向上と速度を高める
- 顧客のニーズを理解し、アプローチを調整して、不必要に遅延を抑制する
- コードベースの複雑さを常に軽減し、常に高品質を提供する
- 変化する組織でも信頼のおけるパフォーマンスを発揮できる
- ミスを認めることができる
- 自分自身に責任を持つ
- 同じミスが再び起こらないようにする方法を探せる
- 不快な状況に陥ったとしても、改善活動をやめない
- 性格タイプに関係なくチームプレーヤーとして行動できる
- 問題を認識し、解決策を提供する
- 問題を投げ出して他人に修正を求めない
感想+雑記
今までやってきたことを思い出したり、コイツクソだなって奴を思い出すと、結構思い当たるふしが。。。
プロジェクトのリーダー的ポジションにいたときは、ミスを認められない奴に四苦八苦させられた。
責任を俺になすりつけようとしてきて、イライラした記憶がある。
あと、変な解決方法を提案してきて、なんでそんな解決方法になるのか質問して突き詰めていくと逆ギレするのもマジで辛かった。。。
テメーの知識不足が悪いのでは?って心のなかで思ってたけど、グッとこらえた。
規約とかガン無視のコードを大量に作ってきたときも、能力の高さをアピってきたときは、キレそうだった。
上げればきりが無いな。。。
愚痴はここまで。
挙げられている条件を一言で言うと、当事者意識を持って献身的な人ってのが優秀なエンジニアとして認められるのかなと感じた。
自分ができているかというと、怪しい気が。。。。
まぁ、あまり反発するようなことは、しなくなったが、内心では思っていたりもする。
それを言うタイミングは考えるようになったので、人間的には成長していると思いたい。
我慢出来ないときは、内々で愚痴ったりはしている。
ここで挙げられたものを見ると、大体はチーム開発を想定されている条件になっている。
たぶん、世間一般的な考えだと、何か超人的な人が優秀なエンジニアって感じがするんだけど、人一人ができることは限られている。
これを理解している人が少ない気がするんだよね。
誰かにスポットが当たるときは、その背後を支えてくれるチームを見れないのは、何か違うのではないかと常々思ってる。
そういう考えがあるので、ここで出された条件は、比較的、好印象で読むことができた。