You need the staff augmentation model where the team members are working directly for you. It doesn't matter if it's software development, it's everything. The closer the team member is to the problem, and you can manage them and have influence about how they do their work, you're going to have more success. That was the first key to what we were doing. For developers to be good at their job they have to be as close to the problem as possible. They have to be able to ask questions and iterate quickly. We're in this world now where it's all about context. It's like the speed of context. If I know what needs to be done and I can ask all the questions and I can figure it all out, the code almost writes itself.