プログラマーSEが『仕事をやり抜く力』をつける方法
私は基本的に任された仕事は全て最後までやり抜いています。もちろん、予定していた納期に間に合わなくてスコープや日程を調整してもらうことはありますけどね。
以前参加したプロジェクトである人に言われた一言から、
- 「仕事をやり抜く力」とは何なのか?
- どうすれば仕事をやり抜くことができるか?
がわかったので、紹介します。
遅延してる作業のヘルプを頼まれた話
ある日、別チームのリーダーから、
「ちょっとこっちの仕事手伝ってくれない?うまく進んでなくてさ…」
と言われました。
話を聞いてみたところ、DBのデータを集計してレポートを作成する仕事でした。
私が話を聞いて、ぱぱっとSQLを書いたら、「そうそうそれをやってほしかったんだよ!」とのことでした。
5分で終わる仕事が一ヶ月も遅延していたんです。
遅延の原因は、
「リーダーからチームメンバーへの指示が正しく伝わっていなかった」
ことでした。
「こんなかんたんなことが一ヶ月もできなかったってやばくないですか?」
とそのリーダーとメンバーに言いました。すると、
「やまろうさんは仕事ができる人だからそう言うんだろうけど、できない人だっているんだよ」
と言われました。そこで、ハッとしました。
自分に「できるやり方」で仕事をする
「いや、私だってなんでもかんたんにできるわけではありません。自分ができるやり方で仕事をしているだけですよ。」
と答えました。
仕事ができる・できないは、自分なりの方法で仕事をやり抜くかということに気がついたんです。
このタスクが遅延した理由は2つあります。
- 作業を指示する側(リーダー)が作業者が理解できるように説明できなかったこと
- 作業する側(メンバー)がタスクを理解できなかったこと。理解できてないので、もっと詳しく説明してほしいと言えなかったこと。
リーダーもメンバーもどちらにも原因があるんです。どちらかがちゃんとしてたら、うまくいっていたはずです。
私が作業を指示する立場の時は、相手によって説明の仕方を変えています。
相手に合ったインプットを与える
例えば、指示する相手が日本語が得意でない中国人エンジニアの場合、ドキュメントはできるだけ漢字を使い、カタカナは使わず英語で書くようにします。
中国人にとって漢字は母国語に近くとても理解しやすいのに対し、カタカナは英語でもないし漢字でもない、一番理解しにくいものらしいんです。カタカナ表記するものは基本的に英語由来なので、アルファベットで書くようにしています。それなら英語として理解できますからね。
話す時にも、できるだけセンテンスを短く切って話します。自分が海外旅行した時のことを思い出すと非ネイティブにとってどういう表現がわかりやすいかが想像できます。
他にも、仕様を理解してコードに落とし込む能力がない人には、DBアクセスのコードだけ書くことに専念してもらう等の工夫をします。仕様を理解しなくても、「こういうデータを返すSQLを書いてね」という指示なら理解できるからです。
こんな風にして、相手に合わせて作業指示を変えています。
仕事がうまく進まないのは相手がバカだからではありません。相手に合ったインプットを与えていないことが原因です。
これが仕事をやり抜く方法です。自分が作業をする時も同じです。
不得意な分野の仕事をやりぬく方法
私の場合、業務システム開発は、10年以上のキャリア、スキルがあるので、作業を指示したり、技術を教えたり、問題を解決する立場になることが多いんですが、Webサービスやゲーム開発の場合は、指示を受けたり、教わったりしながら作業をしています。
Webサービスは業務システムと利用技術やアーキテクチャが似てるので、それほど困りませんが、ゲーム開発の場合、「このタスクできるかなぁ?難しいなぁ」と感じることが多々あります。
それでも、任された仕事は、自分なりにすべてこなしてきました。
誰かに相談する時のベストプラクティス
どうやったかというと、まず自分でできるところまで進めます。コードを読んだり、書いて動作を検証したりです。
壁にぶち当たり、「ここから先どうすればいいかわからない」となった段階で、それがわかりそうな人、チームリーダーやベテランエンジニアに相談をします。
「ここまでは進められて、こういうことがわかっているのですが、ここからどうすればいいですかね?」
と聞くと、
「そこまでわかってるなら、そこからは○○すればいいんじゃない?」とか「□□を調べればやり方がわかると思うよ!」
などのアドバイスをもらえます。
「じゃあ、最初から聞けばいいじゃん?」と思われたかもしれませんが、それだと相手の時間を取りすぎますし、ソースコードを調べて試行錯誤した結果を伝えたから、相手も答えられたっていう場合が多いので、相談材料を揃える必要があります。
ゼロから相手に丸投げで相談したら、相談された側が調べて回答しなければなりません。相談相手は多くの人から相談を受けるような人です。その人がさける時間はチームにとって貴重な資源です。
ですから、自分で調べられるところまでは自分でやる、そうして判断材料を揃えた上で相談するのがベストです。
こうすれば、自分単体ではできない仕事も周りの人に助けてもらうコストを最小限にしながら最後までやり抜くことができます。これは自分だけでなくチームの生産性を最大化する方法でもあります。
そんなわけで、自分が作業をする時と作業指示をする時のそれぞれのやり方を使い分けてみてください。