Разработка на заказ
Не каждую задачу решает сайт. Когда нужен инструмент, интеграция или автоматизация процесса, который больше не должен делаться руками, мы создаём именно это.
Маленькая опытная команда, честная в вопросах объёма работ. Если вашу задачу уже решает готовый продукт, мы так и скажем, вместо того чтобы выставлять счёт за его повторное изобретение.
Реестр
Какие задачи мы берём в работу
Заказное ПО удобно описывать через задачу, которую оно снимает. Вот самые частые ситуации и то, что мы обычно в итоге строим.
| Задача | Что мы строим |
|---|---|
| Одна и та же ручная задача каждый день, которую делает слишком опытный для неё человек | Внутренний инструмент, где шаги закреплены один раз: форма, очередь, понятный журнал действий и права доступа, которые соответствуют реальной работе команды. |
| Две системы, которые не хотят общаться друг с другом | Интеграция, которая берёт на себя сопоставление данных между ними, безопасно повторяет попытки, когда одна сторона недоступна, и сообщает, когда нужен человек. |
| Бизнес держится на таблице, которую никто не решается тронуть | Небольшое веб-приложение с настоящей моделью данных внутри, где два человека могут работать одновременно, а цифры прошлого квартала нельзя случайно перезаписать. |
| Отчёт, который кто-то каждую неделю собирает вручную | Задача по расписанию, которая собирает данные, проверяет их и доставляет отчёт нужным людям, сохраняя запись о каждом запуске. |
| Клиентский процесс, прикрученный к маркетинговому сайту, пока тот не сломался | Полноценное приложение по своему адресу, использующее дизайн-систему сайта, чтобы всё выглядело одной компанией. |
| Задача, которую никто не может оценить, потому что её никто не описал | Короткий этап обследования: минимальная рабочая версия описана письменно, а то, что мы не будем строить, указано так же прямо. |
Подход
Как мы решаем, что строить
- Сначала минимально рабочее решение. Узкий инструмент в проде за две недели учит больше, чем полная спецификация за квартал, а расширять его можно, когда станет ясно, что действительно важно.
- Намеренно скучные технологии. Мы выбираем проверенное решение, а не интересное. Заказное ПО оценивают в день, когда его нужно изменить, а не в день запуска.
- Модель данных решается в первую очередь. Интерфейс перерисовать дёшево, а данные перестроить дорого, поэтому структура данных фиксируется раньше экранов.
- Сначала купить, потом строить. Если готовый продукт закрывает вашу задачу, мы честно порекомендуем использовать его. Мы лучше построим небольшой кусок, который его подключит, чем возьмём деньги за повторное изобретение.
- Проектируем для второго разработчика. Читаемый код, задокументированная настройка, тесты, объясняющие замысел. Мера качества работы в том, может ли кто-то другой безопасно её изменить.
Стандарты
Что входит в каждый проект
Та же инженерная база, что и у сайтов, потому что внутренним инструментом годами пользуются люди, у которых нет выбора другого.
Репозиторий, который принадлежит вам
Полная история, в вашем аккаунте, с настройкой, описанной настолько подробно, что новый компьютер запускает проект в тот же день.
Автоматические проверки
Тесты и проверка типов запускаются при каждом изменении, до того как оно доходит до людей, которые от него зависят. Красный прогон останавливает деплой.
Деплой одной командой
Публикация занимает один воспроизводимый шаг, а предыдущая версия восстанавливается одним откатом. Никакой сборки релиза вручную, никакого недокументированного сервера.
Доступные интерфейсы
Внутреннее ПО получает ту же поддержку клавиатуры, контраст и семантику, что и публичный сайт. Сотрудники заслуживают того же стандарта, что и клиенты.
Секреты вне кода
Учётные данные хранятся в отдельном хранилище секретов и попадают в работающий сервис как переменные окружения, а не как файл в репозитории.
Путь к передаче
Аккаунты, домены и репозитории можно передать в вашу собственную организацию в любой момент, ничего не удерживая заложником.
Границы
Где мы останавливаемся
Ясность в вопросах границ работы формирует доверие к нам. Мы маленькая опытная команда, поэтому берёмся за то, что можем сделать хорошо, и отказываемся от того, что не можем.
Мы не перепродаём лицензированные платформы, не выделяем людей на проект, который не строим сами, и не называем цену для задачи, которая ещё не описана. Если часть работы относится к области другого специалиста, мы скажем об этом прямо, а не дадим вам узнать это за свой счёт.
Для начала не нужна спецификация. Напишите через форму на сайте или на sales@wwi.dev и опишите задачу простыми словами.