The real skill is understanding what you're making. What are the constraints, and of those which are hard to satisfy? Which choices are binding once committed? Everything else is fill-in-gaps, or choose a sane default: "Page needs my corporate background color, can't remember the CSS for it. I need a DB, let's go with pg. I need to make sure passwords are done sanely, let's double check the django docs. For some reason I keep getting an error with the page, let's google it."
It's also a skill to recognize when you have to backtrack on your choices. Maybe you missed the bit where it says "don't use this lib multithreaded" and you have to find another. With some experience your backtracking won't take you all the way back to square zero.