Graham makes the point that the plan-and-implement approach don't work so well, at least in its classic form.
I finally made the connection with a couple of military quotes relating to planning:
"Plan, plan and plan some more. Plan for every last contingency, every last possibility. Then, when you engage in battle, throw all the plans away."
"Plans are useless, but planning is indispensible."
"No battle plan ever survived first contact with the enemy."
This may be obvious to those who actually code for a living, but it finally dawned on me that there's a natural conclusion to be drawn: that it could be a good idea to plan away and produce a nice, detailed technical spec for whatever software you're trying to write; to start off with that plan, but to use it as scaffolding instead of blueprints, and reshape it or abandon it altogether as the programme takes shape. But in the process of planning, you've gotten a big head-start on the details and considerations that need thinking through. The trick lies in not remaining attached to your plans.
Am I on the right track here? Or have I managed (once again) to prophetically divine the bleeding obvious?
(Oh, and lisp seems, of course, to be a language naturally suited to such an evolutionary approach)