Если бы разработка программного обеспечения была такой же, как строительство дома ...

Эта статья написана Алексом Плетновым и изначально опубликована в блоге KeenEthics.

Выбрать компанию по разработке программного обеспечения несложно. Если вы уже сделали это несколько раз. Если вы первый или даже второй - это адский вызов. И когда вы, наконец, почти уверены, что это та компания, с которой хотите сотрудничать, вас спрашивают: «Какую модель разработки программного обеспечения вы предпочитаете, аутсорсинг или аутстаффинг,« Фиксированная цена »или« Время и материалы »?» . И вот опять, все становится головокружительным.

Чтобы облегчить вам жизнь, я здесь с кратким сравнением основных моделей разработки программного обеспечения. Итак, позвольте мне показать вам, в чем разница между аутсорсингом и аутстаффингом, а также между подходом «Фиксированная цена» и подходом «Время и материалы». Чтобы было понятно, я буду использовать пример дома.

Аутсорсинг против аутстаффинга

Этот вопрос наверняка сбивает вас с толку, если у вас практически нет опыта работы с агентствами по разработке программного обеспечения: Аутсорсинг или аутстаффинг? Эти две модели похожи, обе предназначены для офшорной разработки программного обеспечения, и обе предлагают преданных разработчиков. Как их отличить? Как сделать правильный выбор?

Аутсорсинг

Начнем с аутсорсинга разработки программного обеспечения - более сложный подход. Представьте, что у вас нет собственной команды разработчиков, нет технических специалистов в вашей компании, но вам нужно разработать программный продукт. Если это всего лишь один проект, который будет завершен и закрыт через несколько месяцев, имеет ли смысл нанимать собственных разработчиков? Скорее всего, даже если вы решите инвестировать в наем, адаптацию, обучение, а затем и увольнение, профессиональные инженеры не захотят начать работать с вами на постоянной основе в течение такого короткого периода времени. В этом случае более рациональным выбором будет передать ваш проект на аутсорсинг внешней команде разработчиков - поставщику услуг аутсорсинга.

Аутсорсинг означает передачу идеи вашего программного продукта удаленной команде разработчиков, и они дают вам конечный продукт. Состав аутсорсинговой команды разработчиков программного обеспечения зависит от требований вашего проекта - он может включать или не включать бизнес-аналитику или дизайнеров UI / UX, но он должен включать инженеров-программистов, специалистов по обеспечению качества и менеджера проекта. Если вы сотрудничаете с аутсорсинговыми компаниями, вы можете выбирать, хотите ли вы внимательно следить за проектом или полностью доверять это PM.

Пример дома

Например, вы хотите построить дом, но не хотите строить его самостоятельно. Вы нанимаете строительную бригаду, говорите им свои пожелания или показываете чертежи, если они у вас есть, и предоставляете их ей. Теперь строительство дома - их работа. Вы можете посещать строительную площадку ежедневно или еженедельно, а можете даже вернуться через год, когда она будет полностью завершена. Как только они закончат, вы встряхиваете его, завершаете все платежи и документы и прощаетесь. Теперь дом твой.

Аутстаффинг

Обстоятельства, при которых вам потребуются услуги аутстаффинга, бывают разными. Чтобы заниматься аутстаффингом, у вас должна быть собственная команда разработчиков. Представьте, что у вас есть команда разработчиков, дизайнеров, тестировщиков, менеджеров по маркетингу, которых вы наняли на постоянной основе и которые работают с вами на постоянной основе. Что, если в какой-то момент у вас возникнут какие-то срочные потребности в разработке, а у команды нет времени или ресурсов для их решения? Вы можете нанять другого специалиста на полную ставку, если увеличенный объем работы будет сохраняться. Если увеличение нагрузки - временная проблема, вам следует заняться аутстаффингом.

Аутстаффинг - это наем удаленного специалиста, работающего на полную или частичную занятость, который будет временно работать в вашей внутренней команде. Эта модель позволяет нанять практически любого специалиста по разработке программного обеспечения или пару из них - в зависимости от потребностей вашего проекта. Однако аутстаффинг требует, чтобы управление проектами было на вашей стороне.

Пример дома

Представьте, что вы решили построить дом сами, и друзья или родственники согласились вам помочь. Работа над ним ведется давно, но в какой-то момент понимаешь, что у тебя нет никого, кто умеет обращаться с деревом. Вы идете в местную строительную компанию и подписываете договор с плотником, который теперь будет работать рука об руку с вашей командой разработчиков. После того, как их работа будет сделана, вы прекращаете сотрудничество и приступаете к выполнению своих обязанностей.

Фиксированная цена против времени и материалов

В супермаркетах есть фиксированные цены на все, что есть в наличии. У банков фиксированные комиссии. Поставщики услуг, такие как парикмахерские или тренажерные залы, также предлагают цену, о которой вы знаете заранее. И это прекрасно работает. Когда вы начинаете программный проект, вы также должны заранее знать его цену. Вы хотели бы сравнить цены разных поставщиков и узнать, какой бюджет вам нужно покрыть.

Итак, вы идете к поставщику программного обеспечения и спрашиваете что-то вроде «Сколько будет стоить создание веб-сайта?». Если продавец честен с вами и уважает ваш бизнес, вы получите ответ не сразу. Для этого есть веская причина: веб-сайты могут быть совершенно разными, и слово «веб-сайт» мало что говорит о том, что у вас на уме. К сожалению, заметка о том, что «это интернет-магазин», здесь тоже не поможет. Если на этом этапе вы получите простой ответ о цене, вам определенно стоит дважды подумать, прежде чем сотрудничать с этим поставщиком.

В KeenEthics на данный момент никогда не было двух одинаковых проектов. Очевидно, что у большинства из них есть что-то общее. Например, вам понадобится функция входа в систему для большинства веб-приложений. Но даже поток входа в систему может иметь довольно много различий. Вам нужен социальный вход? Если да, то какие социальные сети следует поддерживать? Вам нужно восстановить пароль?

Есть две модели, которые помогут вам определиться с ценообразованием проекта - подход с фиксированной ценой и подход по времени и материалам.

Фиксированная цена

Подход с фиксированной ценой позволяет заранее узнать цену проекта. Вы договариваетесь и подтверждаете цену, и это то, сколько вы заплатите после получения конечного продукта. Добросовестный поставщик программного обеспечения постарается учесть все ваши требования. Здесь вам нужно будет ответить на несколько вопросов, начиная с общей бизнес-идеи и заканчивая незначительными данными для входа. UX-эксперт может попытаться подготовить мокапы конечного продукта, которые вы будете подвергать критике. Вся информация будет задокументирована, детализирована и разложена на актуальные задачи. Только после этого инженеры-программисты оценят время, необходимое для выполнения каждой задачи. На основании этой оценки будет рассчитана фактическая цена. Очевидно, это займет некоторое время. Для более крупных проектов на окончательную доработку и документирование всех требований могут уйти месяцы, что увеличивает конечную стоимость проекта.

Как бы удобно это ни звучало, такой подход довольно рискованный. В большинстве случаев такой подход не даст вам 100% точной оценки. Как правило, оценка проводится с помощью предыдущего опыта и интуиции, что все же оставляет место для отклонений. Отклонения порождают риски. И риски тоже входят в окончательную цену. Одна сторона всегда проигрывает. Либо цена слишком высока, и вы в конечном итоге переплачиваете, либо оценка цены слишком занижена, и компания-разработчик программного обеспечения остается недоплаченной. Последний случай несет в себе серьезный риск и для вас - как только компания-разработчик программного обеспечения начинает выходить за рамки бюджета, она может поставить под угрозу качество, стремясь быстрее завершить проект, чтобы сократить расходы.

Подход с фиксированной ценой иногда используется в аутсорсинге, но почти никогда в аутстаффинге.

Пример дома

Цену дома вы оговариваете со своей строительной бригадой. Они рассматривают все запросы и чертежи, спрашивают обо всем до мельчайших подробностей и сообщают окончательную цену дома, которая включает в себя затраты на рабочую силу, затраты на материалы и стоимость оборудования. Теперь вы знаете окончательную цену и можете приступить к планированию бюджета и сбору необходимой суммы денег. Когда вам показывают готовый дом, вы должны заплатить согласованную цену, и неважно, изменились ли курсы валют, работа была закончена намного раньше, чем ожидалось, или ресурсы оказались намного дешевле, чем ожидалось. Кроме того, если вы хотите внести некоторые незначительные изменения, вы должны подписать отдельный контракт и договориться о другой цене, потому что эти изменения не были включены в предыдущий.

Подход «время и материал»

Подход с фиксированной ценой имеет простую и гибкую альтернативу - «Время и материал». Перед запуском проекта команда дает приблизительные оценки, и в случае подтверждения приступает к разработке. Каждому специалисту назначается определенная почасовая ставка. Стоимость проекта рассчитывается умножением ставки каждого специалиста на количество затраченных часов. Иногда это может также включать стоимость необходимых ресурсов, таких как Jira или какая-либо лицензия на технологию. Подход «Время и материалы» также учитывает количество часов, потраченных на сверхурочную работу или в выходные дни. Эта модель намного более справедлива, чем другая, потому что команде разработчиков платят столько же, сколько они работали. Это также позволяет запускать процесс разработки намного быстрее и дает заказчику большую гибкость в изменении требований на ходу.

Однако эта модель требует доверительных отношений между клиентом и командой разработчиков. Если вы не доверяете команде разработчиков и не уверены, что они скажут вам правду, вы рискуете потерять деньги. Бывает, что разработчики записывают больше часов, чем на самом деле потратили на работу. К сожалению, этого нельзя предотвратить. Максимум, что вы можете сделать, чтобы защитить свой бюджет от чьей-либо жадности, - это тесно общаться с разработчиками, быть открытыми с ними и поддерживать здоровую атмосферу в команде.

Модель «Время и материалы» одинаково используется как в аутсорсинге, так и в аутстаффинге.

Пример дома

Вы нанимаете строительную бригаду, чтобы построить свой дом, они смотрят чертежи и сообщают вам примерную стоимость вашего проекта. Вы соглашаетесь с тем, что они отслеживают все ресурсы, которые они используют, и количество часов, которые они проводят в работе. Еще один важный момент, который следует обсудить, - это то, как и когда вы производите платежи. Вы не знаете точно, сколько будет стоить дом, поэтому вам, вероятно, стоит начать собирать немного больше денег, чем предполагалось. Когда дом строится, вы можете свободно вносить изменения в требования. Например, вы хотите, чтобы крыльцо было деревянным, а не кирпичным. Каждый месяц или после завершения строительства дома, в зависимости от первоначальной договоренности, вы встречаетесь с командой и просматриваете их записи о расходах. Если нет вопросов, продолжайте оплату. Тем не менее, вам лучше убедиться, что команда заслуживает доверия, или у них еще есть какие-то материалы от вас.

Упаковать

В KeenEthics мы уважаем мнение наших партнеров по аутстаффингу и аутсорсингу. Если вы захотите доверить нам свой проект, мы позаботимся о том, чтобы процесс разработки был гладким и прозрачным. Если вам нужно, чтобы мы увеличили вашу внутреннюю команду, мы предоставим вам самых преданных разработчиков.

Если вас устраивают приблизительные оценки и гибкий процесс разработки, мы с радостью реализуем подход «Время и материалы». Между тем, если у вас есть подробные запросы и вы хотите сначала увидеть прототипы, мы соглашаемся пойти дальше и провести исчерпывающую документацию и оценку. Однако мы не будем говорить вам случайную цену за сотрудничество. В конце концов, это отрицательно скажется на качестве продукции и на наших отношениях. Мы ценим потребности и интересы предприятий, которые доверяют нам свою идею, и несем ответственность за наши оценки и планы проектов.

Вам нужна специальная команда разработчиков программного обеспечения?

Наши профессионалы с радостью помогут вам с вашим проектом! Узнайте больше о том, почему и как нанять специальную команду разработчиков.