Ask HN: When you are programming, do you build the hardest bits first?
What do you do?
What do you do?
For more on this approach, see: http://www.c2.com/cgi/wiki?SpikeSolution
I'd also like to add that given a choice I've learned to do the portions believed to be "easy" first, that way you'll find out sooner if they actually turn out to be harder than anticipated.
This helps reduce the risk of ending up screwed as well as the severity of screwage when the unexpected arises; If you save the "easy" parts until the end, your project will be even further behind schedule.
So step one is to prove all unknowns around the technology assumptions. One these are proven out then I build the hard bits then the easy bits, in the knowledge that it will all hold together.
It annoys me to have a working system implemented "thinly" because I have to go back and context switch into the mindset of each component and then deal with the massive technical debt of properly implementing each component.
Don't get me wrong - I really like the idea of the SpikeSolution - makes a great deal of sense.