en ru

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

Работая над Вашим проектом мы пройдем следующие этапы:

scheme

1. Что хотят Ваши клиенты
Пользовательские истории

У Вас есть идея - и это самое главное! Но как описать её для разработчиков и сделать так, что бы они Вас поняли?

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

И мы хотим предложить Вам наш первый секретный игридиент: пользовательские истории (хочу, вижу, могу).

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

Далее мы привидем Вам пример создания простой системы для поиска и найма врачей.

История врача
  1. Как врач, я хочу найти работу.
  2. Я могу перейти по адресу www.physicians-jobs.com или загрузить мобильное приложение с именем "Physicians Jobs" из AppStore или Google Play.
  3. Я вижу список всех доступных предложений работодателей в моей регионе.
  4. Я могу применить фильтр по минимальной и масимальной предлагаемой зарплате, должности, требуемому опыту и т.д.
  5. Я могу просмотреть подробную информацию о вакансии, в.ч. контактные данные работодателя для связи с ним.
  6. Так же, я хочу разместить свое резюме, что бы работодатели могли найти мое предложение в будущем.
  7. Я могу заполнить свой профиль: электронный адрес, ФИО, данные о своем образовании, опыте работы, ожидаемой должности и уровне заработной платы.
  8. Так же я могу загрузить свою фотографию и рекомендации от других компаний.
  9. Так же я могу указать контактные данные для связи со мной.
  10. После этого мое резуюме будет опубликовано, работодали смогут найти его и связаться со мной.
История HR менеджера
  1. Как HR менеджер, я хочу найти работников.
  2. Я могу перейти по адресу www.physicians-jobs.com или загрузить мобильное приложение с именем "Physicians Jobs" из AppStore или Google Play.
  3. Я вижу список всех доступных резюме докторов в моей регионе.
  4. Я могу применить фильтр по минимальной и масимальной ожидаемой зарплате, должности, текущему опыту и т.д.
  5. Я могу просмотреть подробную информацию в резюме, в.ч. контактные данные врача для связи с ним.
  6. Так же, я хочу разместить вакансию о работе, что бы врачи могли найти предложение нашей компании в будущем.
  7. Я могу заполнить профиль компании: электронный адрес, наименование, краткое описание, ссылку на сайт.
  8. Я могу добавить новую вакансию: данные о требуемом образовании, опыте работы, должности и уровне заработной платы врача.
  9. Так же я могу указать контактные данные для связи со мной.
  10. После этого вакансия будет опубликована, врачи смогут найти ее и связаться со мной.

Наши менеджеры проектов с удовольствием в режиме коротких вопросов и ответов помогут сформилировать пользовательские истории за Вас. И да, это просто за спасибо. А если у нас получится удивить Вас своим подходом Вы скорее всего останетесь работать с нами.

2. Как это будет реализовано
Технические предложения

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

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

3. Спецификация на систему

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

4. Каркас интерфейса

На основании рабочего процесса системы дизайнер понимает как Ваши пользователи будут "играть" в продукт. Он прототипирует экраны, содержащие поля ввода, кнопки, списки и т.д., а так же проектирует навигацию. Это минимальное приближение будущего пользовательсткого интерфейса который не включает конкретный дизайн (шрифты, стили, цвета и т.д.). Главная задача на данном этапе увидеть будущую систему на концептуальном уровне.

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

5. База данных и управление

Только на этом этапе начинается производство кода.

Используя GitLab мы создаем чистый проект, который будет включать: репозитарий исходного кода (git), учет этапов разработки (версий) и задач, средства развертывания и тестировани выпусков продукта. Все это позволит Вам как заказчику полностью отслеживать и контролировать процесс разработки, изменение кода и выпуск новых версий.

На основании описания модели данных из спецификации backend разработчик производит реализацию классов системы в Django ORM, а так же генерацию и настройку будущей системы администрирования Django Admin.

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

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

6. Отрисовка дизайна

После согласования каркаса интерфейса с Вами мы рисуем дизайн который в действительности увидит пользователь. Мы определяем константы: главный, вторичный цвет, отступы, основной фон и т.д. Дизайн элементов: полей ввода, кнопок, списков и т.д. За основу мы может взять брендбук Вашей компании.

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

7. Разработка Backend API

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

Backend разработчик переходит к реализации API на базе Django REST API. Используя ORM он выполяет запросы к базе данных, производит их обработку и серилизацию в DTO.

Backend разработчик пишет тесты! Да мы пишем тесты и пишем много. Наш опыт показывает, код который не протестрован - не рабочий. Тесты спосают продукт от ошибок, нашу репутацию, а Вас от претензий клиентов.

8. Разработка Frontend

Получив от дизайнера экраны, frontend программист проектирует, состав модулей, IU компонентов и навигацию. Он реализует состав сервисов, а так же модель данных поступающих с backend. Для независимой разработки с backend, frontend разработчик создает сервисы-заглушки, которые эмулируют запросы на сервер. Далее, шаг за шагом, реализуется каждый экран и UI компоненты.

Frontend разработчик пишет тесты! Его задача, что бы пользовательский интерфейс работал как часы, поэтому мы создаем отдельно unit тесты на каждый компонент и e2e тесты на отдельные случаи использования системы.

Мы получаем в итоге

  1. Готовую спецификацию на продукт.
  2. Прототип интерфейса и дизайн который легко поддерживать и обновлять.
  3. Систему администрирования базы данных.
  4. Чистый и протестированный исходный код с лучшими практиками и архитектурой.
  5. Контроль версий продукта и историю выпусков.