会社向けの製品を作成する契約を結んでいる独立系ベンダーとして、設計ドキュメント、アーキテクチャ図、単体テストなど(基本的に、製品の実行に厳密に必要とされないもの、またはそれを拡張する)?
目標は、最終製品をクライアントが拡張できるようにして、無料ではなく、内部で開発を進めることができるようにすることです。彼らは、いくつかの設計上の決定などを理解するために、ソースを深く掘り下げる必要があります。彼らは、導入される回帰を防ぐための独自の包括的なテストを作成する責任があります。
ここでの考え方は、コードを理解できないようにすることではありません。原作者としての「内なる知識」と専門知識により、拡張機能の作成を請け負う将来の機会を作りたいと思います。
これは非倫理的と見なされますか?
編集:契約は現在交渉中であるため、最終成果物を構成するものの問題はしっかりと決定されていません。さらに、私は製品の所有権を維持することを述べるべきでした。クライアントに使用ライセンスのみを付与します。この詳細は、これが悪い形と見なされるかどうかに違いをもたらしますか?
契約上、必要なドキュメントの範囲に関する何らかの句を含めるのが賢明です。わかりやすくプロフェッショナルな形式で提示することで報酬を得る必要があります(ナプキンのスケッチをやり直してください)。
求められ、支払われたことだけを行うことは非倫理的ではありませんが、情報を差し控えるためにあなたの道を行くのは間違っています。
文書化が不十分で複雑なアプリで私が使用できないものを私にくれた場合、私の会社がなくてはならないある種の天才よりも、あなたは悪いプログラマーだと思う傾向があります。正しいことを行うことで評判を築きましょう。
単体テストとドキュメントの開発に料金を請求しましたか?彼らは請求書を支払いましたか?もしそうなら、彼らは彼らがあなたに支払ったものを受け取る権利があります。
それ以外の場合は、来週、p.se.comで「請負業者に、私たちが支払ったすべての技術文書と単体テストを強制的に提出させるにはどうすればよいですか」というタイトルの質問が表示されます。
あなたは自分自身を傷つけているだけです。彼らの内部スタッフがあなたがやったことを見て、文書の完全な欠如を見つけた場合、彼らはあなたがばかげていると考えて、将来的にあなたを保持する可能性があります少ない。
私はあなたがあなたを説明していると思うこれらのどれを尋ねます:
ソフトウェアの設計と作成、ビジネス上の問題の確立、およびプロジェクト全体の管理に関する専門知識に対して報酬が支払われます。あなたは彼らにライセンス料を請求します、彼らはソフトウェアやデザインを所有していません、そしてあなたは彼らに気分を良くするためだけにソースコードを渡します-彼らは本当にそれを使う権利がありません。
または
彼らのためにソフトウェアを設計および作成するための時間の対価が支払われています。彼らはビジネスの問題を知っており、プロジェクトを管理しています。彼らは、デザイン、ソフトウェア、ソースコード、および請求対象の時間内に作成したすべての作業成果物を所有しています。彼らは、それらすべてを自由に使用する完全な権利を持っています。
これらの2つの設定を組み合わせて使用しないでください。最初に多くの料金を請求するかもしれません(より多くのスキルを持ち、より多くのリスクを負っているので)または少ない(最終的に所有するものが少ないため)または同じです(それらのバランスが取れていると思われる場合)。 1つ目は、情報を保留するのではなく、素晴らしいことで何度も再雇用されます。 2番目の方法で生活していて、最初の方法に移行したい場合は、設計ドキュメントを共有しない以外にも多くのことができます。
ここで答える必要のある質問は本当に2つあり、両方に対処します。
そのドキュメントをクライアントに提供するために私はhaveしますか?
あなたはあなたが彼らに提供するとあなたの契約が言っていることを彼らに提供しなければなりません。私の意見では、それは、ドキュメントを提供せずにソースコードを合理的に維持/変更できない場合は、適切なドキュメントも提供する必要があることを意味します。
米国著作権局の 1976年著作権法の下で作られた作品 を見て、ドキュメント、ユニットテストなどが実際にクライアントによって所有されているかどうかを確認することをお勧めします。もしそうなら、あなたは間違いなくそれらを彼らに提供したいと思うでしょう。
Shouldそのドキュメントをクライアントに提供しますか?
あなたが彼らと再びビジネスをしたい場合、または彼らにあなたを他の人に勧めてもらいたい場合、あなたは彼らをあなたのビジネスの熱狂的なファンに変えるために必要なあらゆる仕事をする必要があります。
つまり、最高品質のソースコード、適切なコメント、その他彼らが興味を持っているものは何でも彼らに引き渡す必要があるということです。私のアドバイスは、成果物を渡すために彼らと会うとき、ユニットテストなどを彼らに与える準備をすることです。あなたがすべての重要なことを終えた後、「ところで、これらのコンポーネントの単体テストも生成しました。それらも必要ですか?」
あなたの顧客との忠誠心を生み出すために努力し、あなたは将来再び彼らのビジネスを手に入れるでしょう。
そうですね、そうです。
私はこの記事が好きです: http://unixwiz.net/techtips/be-consultant.html
あなたが説明していることは、あなたと再び仕事をすることについてのウォームファジーフィーリングを私に与えません。
あなたは天才かもしれませんが、あなたが Aバス から死んでしまったら、私はあなたから買ったものを維持する必要があります。
あなたが私にその能力を与えないのなら、私は二度とあなたを雇うつもりはありませんし、私が扱っていることのためにあなたを雇うことを勧めません。
さて、バイナリを販売している場合、たとえば、同じ製品を他の会社に販売できる「カスタムシュリンクラップ」の場合は、「少ない情報」を取り除く方が合理的です。 「モデル、今あなたは製品を販売しているからです。
違いは、ソースを使用して、将来的にソースコードを変更する機能を購入していることです。ただし、バイナリでは、それを実行する機能を購入しているだけです。
この時点で、あなたが彼らに届けなければならないすべての文書をリストした契約書または書面による合意/文書があると思います。
そうでない場合は、製品のカスタマイズ(ユーザーガイドのカスタマイズ以外)には、内部コードの動作に関する追加の知識が必要であることを明確にすることができます。そして、あなたが交渉の立場にあるなら、あなたは彼らにさらなる強化のためにあなたに連絡してそれの支払いを受けるように頼むことができます。
私が理解していることから、あなたはすでに彼らの製品のコードを書くために報酬を得ています、つまり彼らはそれを所有しています。したがって、すべてを文書化せずに離れると、彼らはそれを非倫理的と見なすことができます。
高レベルのアーキテクチャと主要な機能拡張を探す場所へのポインタを含むスケルトンアウトラインドキュメントを書くことをお勧めします。キーファイルなどはどれですか。あなたの仕事が良ければ、彼らはさらなる仕事のためにあなたに戻ってきてくれるでしょう。