We'll see 3 phases that I just made up while looking back and recalling his journey. They are intertwined, but the time investment usually crucially shifts in one direction once a new phase really starts.
Most coding challenges exercise more your coding/syntax and problem-solving skills and less your analytical and anticipation skills, not to mention your ability to do Test-Driven Development as a discipline. Let's see how to change that!