People seem to think that the most time consuming and tedious part of developing a software is the coding of the software. This is wrong.
The most tedious process is to get the right requirements for the project. Good business requirements without loopholes give good boundary of how the software will evolve. Screenshots and user journeys are really important. People seem to underestimate the importance of this beginning step, leading to scope creep while developing the software.
You can outsource coding but you cannot outsource requirements gathering. You cannot outsource the relationship with your client.
People say “we are agile now”, why are we still taking so long to develop a bug free software? You have the answer yourself.