Lavorare con l'anticipo iniziale direi che è d'obbligo perché ti permette di definire i clienti paganti e seri da quelli che hanno il fine di non pagarti per il servizio. Seconda cosa, il contratto, serve per tutelare il progetto ed entrambe le parti (professionista-cliente). Se il cliente non pagherà con i termini indicati nel contratto potrai chiedere addirittura interessi ed eventuali azioni legali. Se tu, invece, non farai il lavoro in maniera professionale (come indicato nel contratto) o non rispetterai i tempi, il cliente sarà sempre tutelato e potrà chiedere i danni in termini economici.
Questo, dal mio punto di vista, è il miglior modo di lavorare perché permette di avere una totale trasparenza con il cliente e quindi garantisce una reciproca fiducia, cosa molto importante visto che in questo lavoro spesso si affrontano grandi cifre di denaro.
Ovviamente grazie al contratto puoi mettere un limite di modifiche eseguibili al progetto.