Разработка на заказ

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

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

Реестр

Какие задачи мы берём в работу

Заказное ПО удобно описывать через задачу, которую оно снимает. Вот самые частые ситуации и то, что мы обычно в итоге строим.

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

Подход

Как мы решаем, что строить

  • Сначала минимально рабочее решение. Узкий инструмент в проде за две недели учит больше, чем полная спецификация за квартал, а расширять его можно, когда станет ясно, что действительно важно.
  • Намеренно скучные технологии. Мы выбираем проверенное решение, а не интересное. Заказное ПО оценивают в день, когда его нужно изменить, а не в день запуска.
  • Модель данных решается в первую очередь. Интерфейс перерисовать дёшево, а данные перестроить дорого, поэтому структура данных фиксируется раньше экранов.
  • Сначала купить, потом строить. Если готовый продукт закрывает вашу задачу, мы честно порекомендуем использовать его. Мы лучше построим небольшой кусок, который его подключит, чем возьмём деньги за повторное изобретение.
  • Проектируем для второго разработчика. Читаемый код, задокументированная настройка, тесты, объясняющие замысел. Мера качества работы в том, может ли кто-то другой безопасно её изменить.
Рис. 1. Интерфейс, сервис, расписание и хранилище, начерченные до того, как написана хоть одна строка кода.

Стандарты

Что входит в каждый проект

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

Репозиторий, который принадлежит вам

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

Автоматические проверки

Тесты и проверка типов запускаются при каждом изменении, до того как оно доходит до людей, которые от него зависят. Красный прогон останавливает деплой.

Деплой одной командой

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

Доступные интерфейсы

Внутреннее ПО получает ту же поддержку клавиатуры, контраст и семантику, что и публичный сайт. Сотрудники заслуживают того же стандарта, что и клиенты.

Секреты вне кода

Учётные данные хранятся в отдельном хранилище секретов и попадают в работающий сервис как переменные окружения, а не как файл в репозитории.

Путь к передаче

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

Границы

Где мы останавливаемся

Ясность в вопросах границ работы формирует доверие к нам. Мы маленькая опытная команда, поэтому берёмся за то, что можем сделать хорошо, и отказываемся от того, что не можем.

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

Опишите задачу sales@wwi.dev

Для начала не нужна спецификация. Напишите через форму на сайте или на sales@wwi.dev и опишите задачу простыми словами.