A lot of time and financial costs are associated with how the communication between the customer and the contractor is built, on which devices your product should be launched, as well as accounting for different versions of the operating system and screen sizes of gadgets. A lot of time is spent on testing and debugging an application - it is not so easy to immediately find the very error in the code that caused everything to go wrong.