私は、一部のウクライナの開発者に外部委託されたプロジェクトの管理を任されていました。
同社は、を介してそれらを雇ったElanceをで固定価格。その時点で、上司はそれらを処理し、仕事を成し遂げるために私を一人にしました。行う必要がある完全なものの詳細な仕様を作成しました。
このプロジェクトには、XMPP、RabbitMQ、データベースなどの処理が含まれていました。彼らとの最初の会議(常にIM)で、彼らが何をする必要があるかを徹底的に説明しました。彼らはそれを理解しているようでした-そして彼らはそれが簡単に行われると非常に確信していました。
ここまでは順調ですね。しかし、1週間後、私たちが再会したとき、彼らは何をすべきかについての誤解に満ちていました。開発者の1人にXMPPを知っているかどうか尋ねたとき、彼はXMPPを初めて使用していると言いました。最初の会議で、プロジェクトの複雑さと関連する技術について具体的に言及しました。加えて、私は彼らに彼らがそれを行う正確な方法の機能仕様を書くように繰り返し求めました。しかし、彼らはノーと言い、むしろコードを書きたいと主張しました。私はオーケーと言った。
プロジェクトは3週間後に完了し、必要なものを提供しました。その時点で、コードのレビューを開始しました。大部分は大丈夫でしたが、いくつかの重要な問題がありました。
- 彼らは設定ファイルに分離する必要があるもののいくつかをハードコーディングしました
- 1つに統合する必要がある複数の構成ファイルがありました
- 彼らはまったくドキュメントを書いていません
- その他の小さな変更
これらの変更を行うように依頼しました(ドキュメントを除く)-そして、議論がありました。
彼らは、価格が修正されたので、私は彼らが作業コードを完成したら変更を加えるように頼むことにおいて不公平であったと言った。彼らがプロジェクトに不合理な時間を費やし、今では何かを求めるのは完全に間違っていました。
最後に、彼らは変更を加え、プロジェクトは終了しました。しかし、それは私の心にいくつかの質問を残します...
彼らは必要なことをしましたが、私はそれを適切に行う必要がありました。私は本当に不公平でしたか?
機能仕様がなくてもコードを許可することに同意したのはなぜですか?
彼らがすべてを初めて理解したことを確認しなかったのはなぜですか?
誰もが同じ立場にいますか?外部委託プロジェクトを管理するより良い方法があると思いますか?
-更新-
すべての意見をありがとう-全体の経験を反映した後、私は結論づけることができます...
私は自分の側から仕様を曖昧にしたわけではありませんでしたが、私は確かにそれらを示唆されたように鉄で覆いませんでした。したがって、テイクアウェイは次のとおりです:常にできるだけ具体的にしてください-スペックもその観点から読んで、何かを見逃していないかどうかを確認してください。少なくとも3回繰り返します。
コードが何をすべきかを指定するだけでは不十分です。コードの外観を指定する必要があります。ディレクトリ構造は何ですか。可能であればファイル名も。これにより、後で多くの迷惑からあなたを救います。コーディングガイドライン、変数の命名規則、内部ドキュメント形式などを厳密に指定します。それらのガイドラインに従っていることを確認し、そうでない場合は悲鳴を上げます。
彼らの側から機能仕様を要求します-それはコードの前に書かれることを主張します。これにより、多くの混乱と誤解がなくなります。
開発中のコードを確認し、異常を早期に特定して修正できるようにします。1日おきに少なくとも1回は話しかけます。
最後に、彼らと良い関係を築こうとする。彼らの仕事に感謝していると感じさせます。ガイドラインに合わせて誇張してプッシュしないでください。代わりに、そうするように要求し、プロジェクトが完了したらコードのメンテナンスが非常に簡単になることを伝えてください。