Almost all grave software problems can be traced to conceptual mistakes made before programming started.You can say that about most things in life, 'sfar as I've been able to tell.
'Tip to 3QuarksDaily on a cool story about the reasons projects blow up or fizzle out. It's the design stage that software, in this particular article, gains or loses the possibility of successfully meeting the ends of it's programmers.
And it is unquestionably the little things that count. They're what the big things are made of.