ещё пример на тему "не надо усложнять". я сделаю это завтра - как переведем? I сan do it tomorrow. - I can have done it tomorrow. Я позвоню тебе - I'll call you - I'll have called you. вопрос риторический.
голос из зала: если не нужно усложнять, то почему не просто "DOING"?
просто "DOING" - показывает параллельное действие: He was singing looking in the directory. в то время, как "BY doing" - достижение результата: