A great many client projects I have worked on could have saved significant development time, effort and cost had they better managed inter-dependencies. In fact, this isn’t mobile specific and applies to any type of development.
In mobile, dependencies tends to be the server side, embedded data, UI graphical assets and sometimes localised text. The problem is that these are often not ready when the app is developed causing placeholders to be used. When the actual items become available there are often problems to be resolved that might have been more efficiently been resolved when the code was actually designed/written. In extreme cases I have even seen things like the server side completely re-designed and implemented causing extensive app revision.
However, syncing dependencies isn’t easy. It’s often difficult to know what should come first especially when there are mutual dependencies. For example, in the case of the items I previously mentioned…
- The server side might need to depend on particular optimised ways the client app needs data that might only be clear once the app is being developed. Meanwhile, the app is always clearly dependent on the server interface.
- Imposing strict graphical layout on a client app can cause it to take much longer to develop. However, if you aren’t strict with the layout then it’s not possible to pre-create UI assets.
- It’s great to be able to test localised text (to see if it fits/is appropriate) as the app is being developed. However, the source text often isn’t fully known until the app has been written.
Agile/iterative development solves some of these problems but my experience is that development can still be over-protracted. Problems such as these are usually best dealt with by having a experienced developer/architect who has already seen the various ways of doing things. They can specify the best way forward such that work can be done in parallel and dependencies are more likely to be ‘right first time’.