システムエンジニアには、業務委託という契約方法がよく用いられますが、法的に二種類の形式があります。
在宅でプログラミングなどを行う場合は、一般的に請負契約を結ぶことになります。
請負契約の場合、「特定の成果物を指定された期日までに納めること」を契約するのであり、「その成果物を完成させるために行う作業内容や取り組み方」は全て、請け負った側に一任されているからです。
特定の場所に常駐して、提示時間は勤務しなければならないというような契約内容の場合は、委任契約が結ばれることになります。
このため請負契約の場合、「仕事が急に増えたから残業をしてほしい」というような指示が雇用側からあったとしても、その指示に従う必要はありませんし、指示をした雇用側は法に触れてしまう可能性があります。
最初の契約の時点で「週に何回、打ち合わせのために出勤して欲しい」というような内容で締結することが一般的であるため、それ以外に従う必要はありません。
ただし、成果物を仕上げるためにはそう言った打ち合わせは少なからず必要になりますので、万が一、契約時にそういった内容が示されていない場合は確認するようにしましょう。
一方、作業時間は裁量性であるが故に、成果物を仕上げるためにどれだけの時間を費やしても、残業代や追加の報酬というものを貰うことはよほど特別な事例でない限り困難です。
最もその問題に陥りやすいパターンとしては、開発途中における仕様変更が頻発することですです。
こちらも事前に仕様変更を受け入れられるか、どのようなプロセスで開発するかなど、請負契約の段階で明白にすることが大切です。