I did spot a few problems with the article though. Firstly, you should never outsource in order to save money. The author kind of assumes that is why you're outsourcing. That doesn't work.
The main reason to outsource should be to buy in expertise. Many companies do not really know how to document software requirements, or what a non-functional requirement is, or how to design user interfaces, or what makes good UX, or what a good test plan looks like, or how to run user acceptance testing.
Some companies don't even realise that those things are important. They just think that if they just hire a few Ukrainian Java Devs, they will get good software out the other end.
Some dev shops don't even realise that those things are important either. They just act as a middle man. Connecting you to the Ukrainian Java Devs.
Even if the customer does understand what's involved in running a software project successfully, sometimes it just has no desire to employ developers. Maybe they are not the kind of company that can attract and retain good technical talent, maybe they just prefer to stick to what they do best. Either way, using a dev shop offers an attractive alternative to contractors because the team doesn't disappear the moment you stop using them. The team sticks around and retains a certain amount of knowledge ready for next time you need some changes.