Закрыть
Меню Закрыть

Сделать меньше, успеть больше: оптимизация Java-разработки

Укладываться в дедлайны, работая без “срочняков”, давать качественный продукт, получая удовольствие от работы – под силу ли такое Java-девелоперу?

Тимлид Java-разработки Евгения Губарева знает, как эффективно выстроить работу отдела. Сегодня мы уговорили её поделиться секретами продуктивной работы своей команды. Женя скромная – просит воспринимать их не как руководство к действию, а в формате дружеских рекомендаций “Мы делаем так и у нас всё хорошо”.

Внимание! Чтение лонгрида строго противопоказано людям, непричастным к миру Java. :)

Что делает разработчика счастливым?

По мнению Жени, именно с этого вопроса нужно начинать строить свой идеальный рабочий день. Её команда ориентируется на:

  • решение сложных задач
  • изучение новых технологий
  • хороший код
  • удобные инструменты
  • выполнение задач в срок
  • “нашел баг, починил и все заработало”.

1. Развертывание проекта локально

На этом этапе бороться со сложностями помогут:

  • заглушки для сторонних сервисов
  • изолированные базы данных
  • каталог настроек для различного окружения
  • запуск одной командой
  • возможность запуска без IDE

Что получаем? Удобную песочницу и скрипты автоматизации для развертывания приложений. А еще теперь любой сможет развернуть приложение локально или на новом стенде.

2. Работа над задачей

Начнём с того, что помогает сэкономить время при работе с системой контроля версий:

  • политика ветвления
  • развитие кода в master ветке
  • актуализация активных веток
  • короткий жизненный цикл ветки (не более одного релиза)
  • исполняемый код, конфигурации, настройки хостов и окружения, данные - в VCS

Организационные фишки, которые облегчат работу с кодом и ускорят процесс:

  • стандарт написания кода (code convention)
  • IDE + расширения
  • статический анализ кода
  • организация кода по модулям

Так, а что у нас с базами данных?

  • все изменения базы - через скрипты, миграции
  • скрипты обновления лежат в VCS
  • обновление БД является частью развертывания
  • ролевое управление доступом к БД
  • аудит изменений

Источник: komikaki.ru


Отлично, дошли до тестирования! У эффективного контроля качества тоже есть свои нюансы. У нас они такие:

  • покрывать каждый сценарий — как позитивный, так и негативный — автотестами
  • тесты:

— сами готовят себе данные

— могут быть запущены параллельно

— «прибирают» за собой

— могут быть запущены локально

Ингредиенты check-stand’а

  1. Скрипт развертывания
  2. Автоматическое тестирование
  3. Анализ кода
  4. Пороги качества:

— все тесты успешно проходят

— время прохождения тестов не превышает заданного порога

— в логах нет ошибок

— quality gate.

Рецепт check-stand’а:

  • запуск не требует ручного вмешательства
  • фейлить билд, как только нарушен порог качества
  • фейлить билд как можно быстрее
  • своевременный и понятный фидбек о состоянии сборки
  • быстрая сборка (~10 мин)
  • причины падения сборок исправлять как можно быстрее
  • настроено логирование и мониторинг

Что получили? Минимизировали ручной труд, и качество кода теперь под контролем. Число ошибок снизилось, а стресса стало гораздо меньше. Уверенность в проекте подросла!

3. Ревью: сокращаем времязатраты

Чтобы быстрее докатить в продакшн и доставить фичу заказчику:

  • делим задачи на мелкие правки (Branch by Abstraction)
  • обсуждаем крупные изменения с ревьюверами до начала реализации
  • включаем статический анализ и форматирование кода
  • code convention
  • нотифицируем участников о состоянии задачи
  • поддерживаем стабильно работающие check-stand’ы
  • интегрируем процесс с трекером задач.

Готово! Всем идеального рабочего дня! ;)