но там всё на Java
C# от Java недалеко ушел. Вообще от языка надо уметь абстрагироваться
Ключ успеха - практика, практика и еще раз практика. С первого раза чистый код у вас не получится, не нужно бояться переписывать его и рефакторить.
В какой то мере может помочь проектирование "на бумажке".