O sistema de sincronização e o sistema de controle de revisão são duas coisas diferentes que abordam diferentes necessidades.
Como programador, você quer ter controle de versão sobre seu código. Se você não precisar sincronizar mais nada, não se preocupe com a sincronização, pois obviamente não fornecerá controle de versão (que pode ser usado para sincronização). Nesse caso, você pode simplesmente ir para o controle de versão. E se você precisar sincronizar outras coisas também, você vai querer o controle de versão de qualquer maneira. Por isso, sugiro veementemente que você configure primeiro alguns códigos de versão e depois pense na sincronização. Código sem controle de versão é ... completamente errado.
Agora, se você usar o controle de versão centralizado, terá que escolher um servidor. Então, você terá que fazer backup desse servidor, porque você só terá a versão atual do código no outro computador. É por isso que eu sugiro que você procure por um controle de versão distribuído. Git ou Hg (Mercurial) serve. Dessa forma, você tem o histórico completo da versão do código em ambos computadores. Se um morre, você não perde nada (pelo menos do código!).
MAS, se você quiser sincronizar ANYWAY, usar um sistema de controle de versão centralizado não é tão ruim, já que você pode simplesmente sincronizar seus arquivos com o outro computador. Dessa forma, você tem um backup centralizado + automático. Ainda distribuído terá mais flexibilidade quando você mudar de idéia.
É a sua chamada. Minha sugestão é um sistema distribuído (Git ou Hg ... eles são bem parecidos, e eles têm sistemas de hashing que tornam suas bases de código mais difíceis de serem corrompidos), e então ver o que você faz com a sincronização se você realmente precisar dela.