Too scared to write a line of code
medium.com
medium.com
I agree with the comments below that state code the simplest solution to make your tests pass but learn the best approach to tackle given problems so they are second nature.
My experience has shown me that learning various principles and pattens results in smaller code bases that make maintenance and refactoring easy. In turn you are able to deliver quicker.
That being said, its not always so easy to achieve with established code bases.
It doesn't have to be a polished, detailed, or even good design, but it does need to be something that you can at LEAST loosely stick to initially and have faith in. If the design is flawed enough that coding progress is halted, stop coding and revisit your design.
Throw some paint on the canvas. Make it do something, good, bad, or ugly. Then, pay attention to what works under the covers. What's hard to change, what's risky, what your team loves to work with.
But, remember and apply those things -- they are some of the best whetstones for a developer's skill.
So I completely agree on the underlying principle: Dont to _anything_ prematurely, and that first and foremost includes actually writing any code at all.
I could write this new product... but the market is already saturated with products that kind of already do this... they probably don't need mine.
The exception to that opinion is social networks. If you think you need to build a new social network, stop yourself and erase any traces of that thought from your mind.
Of course, this all assumes you've got the right architecture for the job.
What you are forgetting here is the essential refactoring step in the loop.
This is where it starts for me - http://www.faqs.org/docs/artu/ch01s06.html
I worry about optimization and all of the other details later.
And I just start writing code.
Step 2) Assess whether this is good enough, if so, move on to the next problem. If not, think hard and do something smarter.