It's a story as old as time (or at least computers): a programmer has an idea for a hobby project, perhaps something that he thinks will make him a little extra money on the side. The idea flows from his mind straight to his notepad and he is feeling on top of the world with a brand new project bursting with potential. Everything is perfect... until it comes time to choose a programming language or framework. Suddenly the blossoming project comes to a halt, possibly never to be resumed.
"...faced with a couple of different technical directions regarding design she freezes"
Another familiar tale: a software engineer is tasked with a new feature on an application at her place of employment. Since this is a completely new feature in a new domain it is completely greenfield development. The excited engineer begins daydreaming about how great her feature will be, and how free it will be of all the legacy issues the rest of the application contains. Soon, it is time to design the new feature, and faced with a couple of different technical directions regarding design she freezes; her daydream quickly becoming a nightmare.
As software engineers we face situations like this frequently, and what we are often left with is decision paralysis causing delays or possibly death to entire features and projects. We clearly need a solution to this problem that allows us to maintain momentum and complete the project in a timely fashion while still ending up with a quality end product.
"make a decision."
The solution, as it turns out, is very simple: make a decision. Thats it, just make one. Maybe the decision you make turns out to be the correct one, and the project is finished in plenty of time with a great technical design. Perhaps your decision is not the correct one, and you hit a road block that cannot be passed.
"The only thing you can't do is come to a grinding halt when faced with a difficult technical decision."
If you made the wrong decision you will be able to go back and make another choice. Not only will you have had more input into the decision making process at this point, but you will also have more domain knowledge in all the other issues that could come up with your project. As long as you continually evaluate your decisions and aren't afraid to iterate on your technical designs you will end up with a correct implementation and a project or feature that you can be proud of. The only thing you can't do is come to a grinding halt when faced with a difficult technical decision.