Договор это конечно хорошо, но реальность такова, что вряд ли вы пойдёте судиться, а если и пойдёте, то потеряете кучу времени и денег и не факт, что оно будет того стоить. А если заказчик из другой страны, то договором вообще можно подтереться.
Если вы собираетесь работать фулл-тайм, то на первых порах нужно убедиться, что заказчик готов платить в срок. Надо договориться, что первое время оплата будет после каждой 1-2 недель работы. И что оплата будет произведена в срок не более 1 недели. То есть: проработали 2 недели, подбили часы, ещё 1 неделя даётся заказчику на оплату. Если после этого срока оплата не происходит, то вся работа прекращается. Т.е. вы рискуете 3 неделями работы в данном случае.
Но нынче найти толкового программиста это очень дорого и сложно. Если вы такой, то вас никто не станет кидать. Это будет тупо невыгодно.
После пары месяцев работы, если оплата прилетает всегда вовремя, то можно договориться о более редкой оплате, например, раз в месяц.
Идея всей схемы в том, что вы готовы рискнуть парой недель своего времени, это гораздо лучше чем заключить подробный договор, проработать месяц-два в ожидании завтраков, а потом пытаться судиться.