For me succeeding with a project is to reach high quality and stay within budget. To be able to take responsibility for any time schedules and to be able to reasonably well give a good guesstimate on how long time a project will take you need to know what you are calculating on.
You can never calculate time for external projects. Still most software systems don't live on their own, they have dependencies to external systems, systems that can be unstable, changing or not even constructed yet.
It is a problem. A problem that can be yours if you don't handle it.
If you isolate your software and never make demands of any other functionality than that contained in your system it shouldn't be a problem. But in real life system borders can be unclear and vague and if you don't code for isolation it can be hopeless to see where a problem spurs from.
- Keep your own data carriers. Loosely coupled code are tenfold more important when working with external components.
- Build for robustness. Treat all external services as unreliable and always code with that in mind.
- External frameworks and components can be nice, but they also makes your system more depending on external systems. Think twice.