Integration, always last
It’s likely that your application doesn’t live in a vacuum by itself. At a minimum, it either sends or receives data to or from another application. More likely, it sends and receives information from multiple sources. You’re app is just a cog in a larger series of cogs, that makes up some grand vision of some master stakeholder or CIO somewhere. You aren’t the most important cog, but without you, or any one cog, none of it works.
Why is it then, that the development team waits until the end of the project to actually interface with these outside systems? The one thing you can’t control are the things that are outside your control. Yet, system after system, app after app, integration is an afterthought, a lower priority. And time after time, the team barely squeaks by or is burned by an external system that can’t move at the speed of your crunch time.
(As an aside, external payment vendors as notoriously slow. It’s as-if going as inhumanely slow as possible on their part of the integration safeguards financial transactions.)
One of the first questions you should ask yourself on a project is “who do we have to interface with?” If your team-lead, project manager, business user, or CIO tells you that “we can figure that part out later,” you’ve likely already failed. Pushing your risk to the end guarantees — at best — you’ll barely finish on-time. And you know your client wants this project done “on time, and on budget”.
Do yourself a favor. Don’t wait until the end of the project. The second-half of your first question (“what should this proposed system do”) should be “and with whom does it interface with?”