Dedicação, disciplina, interesse em programação e conhecimento básico em inglês são tudo que você precisa. Compreensão básica do paradigma de orientação a objeto e álgebra booleana para uma experiência de aprendizado mais tranquila se você for começar do zero.