Lots of late night programming, then lots of late night paid programming. It all boils down to putting the time into learning. The difference from self-taught coder and professional developer is the paycheck. Though the self-taught coder might have experience writing code, it will not have experience developing software. Two different things altogether. That is why you need to put in the time in both scenarios.