ソフト開発分野で求められるスキル(2)炎上させない!
昨日の記事で予告した、「短納期の高密度な仕事を、炎上させずに進めるスキル」です。そんなにすごいテクニックということではないので、読んでがっかりしないでください・・・。
最近の仕事は、とにかく、「短納期で高密度」です。「依頼するからね〜」と予告を受けてから、決済が通って「Go!」となるまでに時間がかかる割に、カットオーバーは全く先に伸びないことがほとんどで、結局期間はとても短くなり、短くなるから費用も安く、となることが多い感じです。まあ、費用は難易度にもよりますが。。難しい仕事の場合は逆に期間が短くなったリスク分高くして、とかいう交渉が通ることもあります。
さて、そんな「短納期で高密度」な仕事は、結構な頻度で「炎上」あるいはそこまでいかなくても、ひどい目にあうことが多いものです。そもそも最近の開発仕事は、仕様が明確に決まらないまま開発し始めることが多く、すんなりと行く方が珍しいくらいかも知れません。もちろん受ける側が一方的に悪いというよりは、最初からリスキーな仕事なのです。そんな仕事を上手く進めるポイントは・・・
「先手を打つ」
仕様が決まるのを待っていても、なかなか決まりません。「これとこれだけは決まらないと進められない」というポイントを明確にして、できるだけ早い段階で「決めてください!」と要求することが大切です。なんでもそうなのですが、こちらからどんどんボールを投げておき、相手側にボールがある状態にしておくと、相手側から「本当に進んでいるのか?」「今の状況を整理して報告せい!」「できているところまでまとめて定期的に提出しなさい」などと、管理下に置かれにくくなります。自分側が主導権を握ることがとても大切です。
多くの人は、「自分が仕切るより、仕切ってもらう方が楽」と考えるようですが、私は逆だと思います。仕切られたら自分側で時間をコントロールできなくなります。自分が仕切る方がはるかに楽です。
「コミュニケーションを密に」
先手を打つ、と近い内容ですが、お互いの状況を密に把握しあえていないと、「本当に間に合うのだろうか?」「思ったものができてくるのだろうか?」と心配になるもので、そうなると、「仕様書を出せ!」「説明しに来なさい」など、結局手間が増えます。普段から、頻繁に質問を投げたり、成果をこまめに提出したりしていれば、相手も安心して任せてくれます。
また、コミュニケーションの頻度が増えるほど、お互いの気心が知れてくるもので、仕事のポイントもつかみやすくなり、調整や交渉もスムーズにできるようになります。
私はこの二つができるかどうかで、炎上するかしないかがほぼ決まると感じています。
「あまり頻繁に質問したり、大した用事でもないのにメールしたりするのは相手に迷惑では?」と遠慮する人が、特に経験の浅い人に多いようですが、逆です。依頼した側としては、間違えたまま進んでしまうことや、様子がわからないことの方がはるかに困るのです。できるお客さんだと、わざと仕様書に穴を作っておき、その点を質問してくるかどうかで、まじめに検討してくれているかどうかを評価する、というくらいなのです。
私は最初のまともな(?)受託開発の仕事をしたときに、1日に30通くらい、質問メールを送信していましたが、「いい加減にしろ!」と怒られたことはなく、むしろ「小俣さんからのメール連射攻撃に対応しなければ」と、仕様の調整をどんどんしてもらえたり、あるいは、「今日はメール攻撃がこないけど、体調でも崩した?」と心配してもらったりしたものです。
・・・「うーん、こんなことは開発に限らず、仕事の基本じゃないの?」と言われそうなので、技術的なポイントも書いておきましょう。でも、どちらが大切かと言われれば、前述したコミュニケーション関連の方だと思います。
「技術的な不安をつぶしておく」
時間をかければできるところは、がんばれば何とかなるものです。どうやって作ればよいのかがわからないところの、「目処」をつけておきましょう。私は基本的にできる見込みがつかない時点では「見積もりません(というより、見積もれません)」。見積ができる時点=プロトタイプで目処がついた時点、と考えています。
「できれば得意分野の仕事を受けること」
私であれば、UNIX系でのネットワークプログラミングの仕事なら、長年のノウハウが頭にもありますし、ソースやライブラリとしてもたくさんあります。短納期で高密度だろうが、一度過去に似たようなことをやっていれば、実は一瞬で終わる仕事も多いのです。ネットワークプログラミングのノウハウがない人が2ヶ月かかってもできるかどうかわからない仕事を、下手すれば2時間で終わらせることができることもあるのです。短納期だろうが高密度だろうが、余裕です。
そんな都合の良い仕事、そうそう取れないだろう、と思う人はアピール不足でしょう。自分のまわりはもちろん、お客さんや知り合いにも、あるいはホームページやブログでも、とにかく自分はこんな仕事が得意だ!こんな実績がある!とアピールし続けなければ、自分の好きな仕事は集められません。
「腕を磨いておく」
過去の資産を使えない部分は、新たに作るしかありません。実は新たに作るスピードは、できる人でもできない人でもそんなに違わないのです。まあ、それでも27倍くらいは違うかも知れませんが、少なくとも2ヶ月:2時間というほどではありません。それでも、作るスピードが速くて、しかも問題がないソースが書けるかどうかは重要なポイントになります。
日頃からプログラミングの腕を磨いておくことと、キータイピングのスピードやエディターの使いこなしなど、地道な努力が差になります。
まあ、一番差が出るのは、「問題がないソースをすらすら書けるか」でしょう。コーディングしてコンパイルして簡単にテストしてすぐにお客さんにリリースできるようなソースを、最初からすらすら書けるレベルを目指しましょう。もちろん「問題がない」には、「メンテナンスしやすい」も含まれます。
短納期で高密度な仕事で上記ポイントを外してしまうと、相手からはどんどん要求が増え、仕事はますます進まなくなり、仕方ないので徹夜や休日出勤して体調を崩して寝込んだりして、それを取り返すためにまた徹夜・・・と、悲惨な状況になります。ここぞというときに徹夜したりすることは仕方ありませんが、それが定常化してしまうと、体が持ちませんし、効率と品質が下がってしまいます。
「自分が仕切る」「目処はつけておく」「得意分野で勝負」
このあたりがポイントだと私は考えています。
========
さて、今日は朝から社外で検証実験や打ち合わせなどをして、会社に戻る途中、秋葉原駅構内で3DSの体験コーナーがありました。
けっこう、立体に見えますね!ついつい画面の写真を撮ろうかと思ったら、係員さんに「ゲーム画面の写真は駄目なんですよ」と。「展示の様子は良いの?」と聞いたら、「それは大丈夫です。無効には嵐の写真もあるので是非!」
うーん・・・嵐に興味はないのですが、まあ、娘が喜びそうなので撮影しておきました。。
帰社後、一通りやることを終えたら、回線遅延シミュレータの高性能版「EthdelayPro」の問い合わせがたくさん来ていて、在庫しているハードの出荷準備をしなければ、ということになり、最近はメンバーがやってくれていたのですが、皆大忙しなので、私が久々に準備しました。
どうせやるなら楽しまなければ、と、わざわざ4台、一度にセットアップし、記念撮影。4台とも起動している写真はかなり珍しいです!
ちゃんと「NCAD Ethdelay」とIPアドレスが出ていますね。今思えば「EthdelayPro」と出した方が・・・3文字くらい入りそうですね。
1台ずつしっかり動作確認をします。EthdelayProは測定機能があるので、自分自身で動作を確認でき、とても便利です!
この4台はおそらくすぐに出てしまい、社内在庫はなくなりそうですが、まだハードメーカーの国内事業所に在庫してもらっているのがあるので、もう少しなら短納期で納品できます。必要な方はお早めに!!