Все события и персонажи вымышленные, а любые совпадения случайны ;).
В тот момент, когда проект становится по настоящему большим, а бюджет на з.п. программистам ещё больше, компания начинает задумываться об экономии бюджетов и реорганизации. У кого-то из менеджеров возникает мысль об аутсорсинге (при этом почему-то все забывают о «заветах» Фредерика Брукса, успокаивая себя тем, что якобы на support (MOL) закон Брукса не распространяется). Менеджеры некого звена начинают лоббировать аутсорсинг как панацею. И наконец-то компания зааутсорсила часть работ.
Чем отличается аутсорсинг от самостоятельной разработки (или как иногда говорят инсорсинга)? Для того чтобы увидеть отличия нужно взглянуть на одни и те же вещи с разных сторон. Рассмотрим на примере некого long term проекта.
Инсорсинг
Набравшись мужества, менеджер сказал разработчикам:
— Топ менеджмент сообщил, что у нас будут сокращения. Будем aутсорсить проект в Россию, Китай или Индию. Окончательного решения ещё нет. Но вообще так будет дешевле для компании. Мы сможем показать прибыль в следующем квартале для наших инвесторов.
— Нас нельзя сокращать! Только мы знаем архитектуру продукта.
— Но вы же столько времени потратили на документирование… Разве у вас нет документов по дизайну, разве вы не говорили, что используете методы автогенерации документации из комментариев кода?
— Да, всё так. Но без определённого опыта документацию сложно понять. Нужно провести тренинги, не все фичи задокументированы, не все документы актуальны…
— Придётся провести тренинги, — сказал не убедительно менеджер, и задумался на тему возможного языкового барьера. — Я уверен, что нам удастся убедить менеджмент оставить часть команды — самых сильных экспертов.
— Надеюсь, вы подумаете на тему информационной безопасности. Не хотелось бы, чтобы наш «кровный труд» (код) ушёл к нашим конкурентам, — сказал один из опытных девелоперов.
— Мы уже подумали на эту тему. Дадим только частичный доступ к коду, а часть кода закроем. Также откроем не все внутренние ресурсы…
— Нам придётся организовать CM инфраструктуру для внутреннего и внешнего девелопмента, — сказал CM-инженер.
— Придётся. Я дам распоряжение письмом.
— Окей.
Заработал аутсорсинг на «полную катушку». Разработчики жалуются менеджменту:
— Они спамят нас письмами с глупыми вопросами. Мы не нанимались на них отвечать.
— Все когда-то начинали. Сейчас они «разгоняются». Конечно, мы им платим за самостоятельную работу, но с вашей небольшой помощью (в рамках разумного) они намного быстрее выйдут на нормальный уровень производительности…
Завязалась дискуссия…
Аутсорсинг
Менеджер обращается к разработчикам:
— Мы получили проект X. Нас ждёт ramp up. Наша цель: как можно быстрее разобраться в архитектуре и коде. Нам сообщили, что у них с документацией всё в порядке, и мы быстро разгонимся.
— Расскажите про проект. Чем мы будем заниматься?
— Мы будем заниматься…, — сказал менеджер помпезно. — Это очень перспективно с точки зрения опыта и развития компании. По началу вам придётся заниматься баг-фиксами ;)
— Уууу…,— в основном опытные разработчики про себя что-то «промычали».
— В будущем нам будут давать более серьёзные задания (фичи)… Всем спасибо. Пора начинать работать.
Разработчики констатируя факты менеджеру:
— В интернете про их проект и используемые технологии вообще ничего нет. То, что прислал Akers, слишком мало и обрывками, ppt-ки без видео роликов не информативны, в коде почти нет комментариев и т. п. Есть ощущение, что архитектуры вообще нет, и всё держится на «магических» знаниях девелоперов, которые начинали разрабатывать проект. Слова богу, что есть стандарт кодирования.
— Я договорился, что мы получим доступ к их внутренним ресурсам. Там есть вся документация. И код мы сможем брать прямо с транка (а не rip-ами с ftp как раньше).
Через пару дней (а может и недель) девелопер сидя у себя в кубике:
— Чёрт, как меня «задолбало» вводить эти пароли, чтобы просто найти документ. Вы прошли десятый уровень доступа,— произнеся последнею фразу как будто из какого-то фильма про шпионов, после третьего ввода одного и того же пароля даже с работающим VPN-ом. ;) — О! я нашёл линк на документ, где точно должен быть документ. Опять нет прав для доступа.
Менеджер (к девелоперам):
— Какие есть проблемы?
— VPN жутко тормозит, вчера вообще не работал. Как результат мы не смогли скачать последний код, чтобы воспроизвести багу… К некоторым докам у нас нет доступа.
— Сделайте тикет админам. Я поговорю с админами, чтобы ускорить решение этой проблемы. Кстати, говорил с их менеджерами. Вот контакты их экспертов. Вы можете им написать письмо с вопросом или попросить документацию, если у вас есть или будут вопросы по архитектуре/коду.
Девелопер отправил письмо день назад. Эксперт молчит. «Не знаю… Как оно должно работать и работало ли оно вообще когда-нибудь?» — подумал девелопер про некий код. Прошло ещё два дня. На конец-то девелопер поймал в IM-е эксперта, а тот пообещал ответить на следующий день.
Менеджер на общем собрании с девелоперами:
— Есть ли какие-нибудь проблемы?
— Да, есть. Их «эксперты» очень медленно отвечают и такое ощущение, что они сами не знают архитектуру.
— Но вы должны понимать, что нам за аутсорсили работу и рассчитывают, что мы сами во всем разберёмся. Поэтому мы не можем сильно грузить их экспертов. В конце концов, ответ через N дней лучше чем ничего. ;)
— Ага.
Девелопер после рабочего дня, идя домой думает:
— Почему у меня такое ощущение, что мы работаем медленно? Я на олимпиадах делал столько кода за четыре часа, сколько здесь я делаю за месяц. Почему здесь такая низкая производительность?… Вроде бы простая архитектура, но никто из наших её нормально понять не может… и почему-то нам не открывают весь код и все документы.
Продолжение следует…