Agreed. If you have the wrong algorithm, it doesn't matter how well you implement it: it'll still give you the wrong answer. But no matter how right your algorithm is, if your I/O doesn't work properly, you'll still get the wrong answer. And that's just for things involving a single algorithm; if you're talking about the larger piece of software as a whole (since a lot of programming is not algorithms, algorithms is just one of the harder parts), testing and prototyping and all that becomes even more important.