I don't know if this is a problem that applies to you but for quite some time I started getting bogged down in problems. I guess I was reaching the Journey Man stage of becoming a programmer and I wanted to start by creating the full architecture of each program before actually doing anything, a kind of top down approach to programming. Recently, I’ve realised that I’m not super human; I start by putting down code and shaping the architecture as the problem evolves. Not that I put up with ‘code smells’, I don’t move on to the next sub-problem until I’m comfortable that the current one is in a reasonable condition. I fund this allows me to actually get started, rather than staring at the problem as a whole and wondering where to start.