Actually doing programming is a bigger help than reading about doing programming.
"paralysed by some very basic decisions" is a symptom of a deeper problem -- over-engineering. Until you build a lot of stuff, you don't really know which decisions matter and which don't matter.
The best way to get the necessary experience is to build a lot of stuff.
Code Kata is very, very important. http://slott-softwarearchitect.blogspot.com/search/label/code-kata
Also, I collected a bunch of code kata that I have used into a single, large project. http://homepage.mac.com/s_lott/books/oodesign.html