Team is starting on their first capital-A Agile project, and the project seems like it will fall in line nicely with the methodology (i.e. we can probably just grab an agile book and follow it like a recipe), with one bit of confusion:
The project involves three things that nobody on the team has any experience with: Integrate with the Foo Payroll System, be able to handle the file type XYZ89 (where "XYZ89" = some file type you've never heard of), and convert some other files so they can be handled by the Frobnobdicator.
As I understand it, standard Agile practice would be to schedule spikes for each of these, after which we can determine how long they're going to take (I'm not sure there's much of a chance that the client will decide not to do them, as they're pretty much solid requirements of the project)
So my questions are:
Do we do all the spikes up front in the first iteration to get a better estimate of the time it's going to take to do them and/or get a "walking skeleton" up and running?
If not, wouldn't the total project schedule be at the mercy of one of these spikes coming back with data that this particular story will take way longer than we ballparked?
What is the best practice way to handle multiple spikes when they are basically non-negotiable requirements of a project?