For those starting from scratch, here are my two cents

Writing code is not that hard, but being good at it certainly is

IME, folks starting on the wrong foot struggle for a very long time

Having the aptitude of problem solving and thinking like a machine

Coupled with the right attitude towards the problem solving process makes all the difference

More on that here: