はじめに
Insanely Fastで有名なコミュニティで記事が上がっていたので翻訳・共有します。(許可いただきました。)
元記事: The road to senior dev
今回は同記事の前半、Projectに関しての部分まで。
以下翻訳
中堅エンジニアになるには
エンジニアとして、ソフトウェア開発会社の支援を行うに至るまでに、若手のエンジニアのメンタリングを行ってきた。
よく尋ねられるのは、「中堅エンジニアになるにはどうしたらいいのか?」ということだった。
この質問は、全ての組織ごとに「中堅エンジニア」なるものの定義が異なるから、そう単純なものじゃない。
しかし、規模や成熟度の違う様々な会社で働いてきた経験からいえば、単に何かの技術に精通するだけでは不十分だ。
「良い選択をすること」 、 「正確な予測をすること」 、 「日頃から時間通りに仕上げること」 こそが、本当に重要なんだ。
以下は、これからキャリアを考え始める若手のエンジニアに捧ぐものだ。経験豊富なエンジニアにとっては当たり前のことかもしれないが、私の仲間が悩み苦しんだことをリストアップしてる。
プロジェクト
優先順位を定めてそれを貫き通すこと
例えば建築の仕事に就いていて、ToDoリストの中に「トイレを設置する」「窓枠を塗る」という2つがあるとする。
もちろん、これらはどちらも完了していなくてはいけないが、トイレがなくてはその家には住めないのに対して、窓枠が塗られていなくても住むこと自体は可能だ。
とてつもなく馬鹿げた例えだし、「プロジェクトのプランはあって、予算も与えられているんだ」(だからこんな馬鹿げたことは考えなくてもいい)と反論するかもしれない。
だが現実には、プランは変わって、予算もカットされる。
重要なのは、「最も重要なことを常に意識して、そしてそれを確実に終わらせるようにすること」だ。
憶測をやめて、効果的な質問(powerful question)をすること
憶測は多くの問題の根本原因で、そして、憶測は本来確実に避けられるはずのものだから、この憶測というのはとても疎ましい。
例えば、「スタバに8時集合で」と言われたら、スターバックスの何店なのか、午前8時なのか午後8時なのか、という質問をしないといけない。
プロジェクトにおいても、「自分が何を分かっていないかを認識し、そして一切の不確実性が残らないように効果的な質問をしなければいけない」。
コーディングの前に分析をすること
特に若いときには、自分の価値を証明したくてとにかくすぐにコーディングを始めたくなることがあるだろう。
ただ、キミがこれから「どうやって」ものを作るのか、これらの手法を通じて先に見通しを立てる方が、結果的には速い。
- いくつか図を作成してみる
- 必要なら粗くスケッチを描いてみる、など
こうして、頭の中に「どこがハードルで、何が解消すべき疑問点なのか」というビジョンをクリアに描いておくことで、コーディングはより安全な形で始められる。
「良い選択」をすること
馬鹿げてるだろ?ただ別にこれは「飲酒運転をしない」なんて当たり前のことでもなく、かといってとてつもなく高度で専門的な話でもないんだ。
じゃあどうやって「良い選択」をするのか?
- ある選択肢について、影響しうるあらゆる可能性をリストアップする
- 実装難易度はどの程度か?
- 技術にどの程度習熟しているか?
- パフォーマンスは?
- コストは?
- etc..
- 他の選択肢についても同様にあらゆる可能性を検討する
後はピュー・マトリックスのようなシンプルな手法でこれらの選択肢を比較することで、キミの選択をよりソリッドにすることができる。
顧客を知ること
ソースコードベースのみで働いていて、作っているソフトウェアが解決しようとしてることに知識も興味もない人がいた。
私は彼らを「コーディング猿(code monkeys)」と呼んでいる。そう遠くない将来にはロボットか、より単価の安い労働者に取って代わられる存在だろう。
顧客の事情を気にかけ始めれば、人々はキミのいう事を聞いて、キミの意見を尋ねて、そしてキミの意見を評価してくれる。
そして着実に、キミの責任範囲は拡がり、キミの価値とチャンスは増大し、結果としてお給料にも色がつくってわけだ。
以上翻訳
実際、お客がどうやってシステムを使うのか?システムが代行したい業務とは何なのか?など、お客のことを知ることは本当に大事だなと思う。
次回はチームワーク編を翻訳する予定です。