Среды, код и релизы
Лучшие практики по именованию и разграничению сред в соответствии с их предназначением, взаимному соответствию сред и ветвей кода, и процессу выпуска.
Именование сред
Разработки [dev] — та среда (база данных, сайт, ВМ и т.д.), где развёртываем свежий код и смотрим, что получается.
Демо [demo] — тут промежуточный результат показывается заказчику. Пока развёрнутый здесь полуготовый функционал ждёт внимания заказчика, на [dev] можно всё сломать, работая дальше.
Тестовая [test] — тут тестируется функциональность. Среда наполнена тестовыми данными, которые могут отражать редко возникающие (в рабочей среде) случаи или быть удобными для тестирования. Пока тут идёт тестирование того, что готовится в продакшен, на [dev] уже появляется код следующего релиза.
Промежуточная [stage], она же предпродакшен — тут тестируется развёртывание. Сюда развёртывается последний бэкап системы из продакшена, чтобы проверить обновление на версию.
Продакшен [prod] — тут работают пользователи.
Связь с кодом
В зависимости от системы бывает, что код идёт в развёртывание вместе с конфигурацией (набором переносимых настроек). При этом, сам код ведётся в репозитории, а конфигурация в среде.
Изначально, код, попадающий в ветвь /dev, выкатывается в среду [dev], где настраивается конфигурация к нему. Затем, код и конфигурация (иногда по частям) переносятся в другие среды.
Путь кода
То, что исправляется в /main при тестировании, естественно → /dev.
Путь конфигурации
[dev] → экспорт в репозиторий отдельно от кода.
Ошибки проектирования систем
Рассмотрим, что в архитектуре системы может сделать невозможным гладкий выпуск.
Двусторонняя зависимость
Бывает, что часть конфигурации зависит от кода (нельзя настроить, пока не выкатится какая-либо сборка), но часть кода зависит от конфигурации (это код, который опирается на структуры в базе данных, которые создаются конфигуратором, либо на сборки, которые собираются конфигуратором).
То, что делает путь релиза таким трудным или уникальным — ошибка архитектуры. Её совершают из побуждений «сделать что-то автоматическим», закладывая возможность в единый конфигуратор системы, вместо того, чтобы закладывать в более низко-уровневые инструменты, или «получить быстрый результат», используя такую возможность.
Бывает, что в покупной системе есть несколько путей создания вещей, таких как структуры данных или объекты. Например, в ELMA-BPM есть создание объектов через конфигуратор, а есть через плагин к Visual Studio. Выбирайте более низко-уровневый способ, иначе попадёте на описанную двустороннюю зависимость.
Логика в базе данных
Переразвернуть базу данных гораздо сложнее чем пересобрать код.
Из-за этого, в системах, где много логики в базе, разработчики работают на одном общем экземпляре БД. Обычно они говорят, что им нужна общая БД для разработки, так как: а) там всегда развёрнут последний код от каждого из них и б) там готовы тестовые данные.
Из-за постоянной работы в общей базе (читай «среде»), в свою очередь, теряется смысл ветвления кода в репозитории.
В итоге, от /dev бессмысленно отделять ветви фич, что, в свою очередь, не позволяет выделять длинные работы и делать релизы независящими от них.
Кроме того, поскольку перенос из среды в среду (ибо это из базы в базу) сложнее, количество сред в процессе пытаются сократить, не выходя за [dev] → [stage] → [prod] (а то и [dev] → [prod]). Тестируют и демонстрируют функционал прямо на [dev].
Логика в БД сегодня, это ошибка архитектуры (по многим причинам), которую, наверное, мало кто будет отрицать (хотя случается и такое). В данном случае, это ограничение для повышения качества и сокращения цикла выпуска.
Словарь IT-сленга
Термины разработки, Scrum, неформального общения, организационных процессов.


Разработчики разговаривают на незнакомом языке, а новички их не понимают. Привычные слова означают совсем другое, смешиваются с английскими и коверкаются до неузнавания.
Чтобы помочь вам влиться в новую среду, мы собрали слова и выражения, которыми пользуются айтишники.
1. Должности, роли, специфичные названия
Что это означает
От какого слова произошло
IT (Information Technology) — информационные технологии
Уважаемый, знающий человек
Guru — учитель, наставник
Девопс, DevOps
Инженер, который собирает воедино все части проекта
Developer Operations — интеграция разработки и эксплуатации
Джуниор, джун
Младший специалист. Новичок с минимальными знаниями и опытом работы
Начинающий специалист, который считает себя продвинутым экспертом, хотя это не так
Лид, тимлид, Team Lead
Руководит командой и процессами, решает спорные вопросы
Мидл
Специалист. Следующий уровень после джуниора — более самостоятельный и опытный
Пио, PO
Владелец продукта. Организует процессы в команде разработки, не отвлекается на маркетинг и продажи. Стыкует пожелания заказчика с возможностями разработки
Product Owner — владелец продукта
Пиэм, PM
Взаимодействует с заказчиком, выясняет его потребности и желания, доносит их до команды
Product Manager — менеджер продукта
Проджект
Руководит командой, следит за бюджетом, отвечает за реализацию проекта в срок и его соответствие требованиям заказчика
Project Manager — менеджер проекта
Секопс, SecOps
Cистемный администратор по информационной безопасности. Отвечает за безопасность и защиту сетевых систем, приложений и данных
Security Operations — операции по обеспечению безопасности
Сеньор
Cистемный администратор по информационной безопасности. Отвечает за безопасность и защиту сетевых систем, приложений и данных
Фасилитатор
Помогает команде общаться. Руководит групповыми дискуссиями, руководит на мероприятиях
Хацкер, кулхацкер
Ироничное название неопытного, но амбициозного программиста
Hacker, cool hacker — крутой хакер
Хейтер, хейтерство
Злобный комментатор, необоснованное агрессивное общение
Юзер, юзать, юзаный
Пользователь, использовать, использованный
2. Разработка
Слова и фразы
Что это означает
От какого слова произошло
Ветка, тред, бранч
Полная копия проекта, в которой ведется разработка параллельно основному коду. Веток может быть много для работы с разными частями кода
Branch — ветка, thread — нить
Мок, мокап
1. Объект в тестировании, который имитирует поведение реального объекта.
2. Графический шаблон объекта, на который можно примерить разработанный дизайн, чтобы увидеть, как он будет смотреться. Например: обложка книги, вывеска, рекламный щит, тюбик крема
Прод, продакшен
Production — промышленная среда
Реф, референс
Образец, ориентир для вдохновения
Документ, в котором прописаны технические требования для разработки и тестирования программного обеспечения
Адаптивный дизайн сайта, в котором интерфейс автоматически подстраивается под экран компьютера, ноутбука или смартфона
Айдишник
Уникальный признак объекта, по которому его можно отличить от другого. Последовательность букв, цифр и символов. Аналоги ID в реальной жизни — документы с номером: паспорт, водительское удостоверение, страховой полис
ID — идентификатор, код
Учетная запись на сайте или в программе. В ней хранятся персональные данные, которые защищает пароль
Апдейт
Обновление, улучшение программного обеспечения
Update — повышение версии
Апишка
Программный посредник, с помощью которого можно использовать данные сторонних источников или делиться своими, даже если они написаны на разных языках программирования. Например, API яндекса и гугла позволяют добавить карты к сервисам бронирования или к сайту услуг, чтобы показать местоположение офиса
API (Application Programming Interface) — интерфейс программирования приложений
Ассайнить
Файл, документ, который приложили к сообщению, посту
Bug Report — сообщение или отчет об ошибке, которая привела к сбою в работе программы
Бигбар
Графическое изображение, которое описывает чувства, черты характера, эмоции пользователя на веб-форумах
Big — большой, bar — полоса на экране, линейка
Скорость передачи данных: бит в секунду. Важный показатель для аудио- и видеофайлов
Bitrate — битовая скорость
Ускорение, повышение производительности
Бэкенд
Внутренняя часть сайта или приложения, которая хранится на сервере
Backend — задний край
Варез
Программа, которую распространяют незаконным путем, нарушают интеллектуальные права владельца
Warez — сокращение от software
Widget — штучка, безделушка
Техническое устройство с ограниченными функциями. Облегчает жизнь и не занимает много места. То же и в программном обеспечении — небольшое приложение с удобными функциями
Gadget — забавная игрушка, выдумка
Guide — вести, руководить
Глоссарий
Сборник профессиональных слов и устойчивых выражений в отдельной сфере
Переход одного цвета в другой или вектор, который показывает изменение величины
Грумить
Приводить в порядок, проверять, всё ли в порядке со сроками
Даташит
Datasheet — таблица данных
Перевод кода из разработки в продуктовую ветку, чтобы можно было запустить его на компьютере, сделать доступным пользователям
Часть адреса сайта. Домены обозначают принадлежность стране, тематику, разделы сайта
Domain — область, единица структуры
Драй, DRY
Принцип, который призывает не повторяться, когда пишете код
Don’t Repeat Yourself — не повторяйся
Ребус при регистрации или авторизации, который помогает отличить человека от робота
CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart) — полностью автоматизированный публичный тест Тьюринга, позволяющий отличать компьютеры от людей
Кейген
Программа для взлома паролей, пиратского запуска
Key — ключ, generator — производитель
Коммит, коммитить
1. об измененных файлах.
2. Обещание сделать, выполнить работу
Компилить
Собрать код воедино
Комплитить
Установить связь между устройствами или подключиться
Консистентность
Конте́нт
Текстовое, визуальное, мультимедийное содержимое ресурса
Плагиат, скопированная информация
Copy — копировать, paste — вставить
Лаг, лагать
Медленная работа программы, задержка по времени, отставание
Морально устаревший, но всё еще работающий код
Линк
Link — ссылка, связь
Лист
Мануал
Мэтчиться
Сопоставить между собой разные источники данных, части программ и определить их идентичность. Например, два разных объявления могут продавать одну и ту же квартиру. Мы это выяснили — значит, смэтчили. Аналогично разный код может описывать одни и те же процессы
Мерджить, мёржить
Объединять изменения, которые сделали разные программисты, в один проект
1. Нативная разработка — разработка кода с нуля под каждую платформу: Android или iOS.
2. Первоначальный, родной вид элемента
Небольшой фрагмент, временное дополнение к коду
Плагин
Дополнение к готовой программе, которое улучшает ее работу
Plug in — подключить
Агрессивная реклама, которая выглядит как открывающееся окно или плавающий баннер. Перекрывает пользователю обзор на странице сайта или в приложении
Pop under — выскакивать под что-либо
Промежуточный сервер, посредник между пользователем и интернет-ресурсом. Помогает скрыть IP-адрес, обойти запрет на доступ к соцсетям на рабочем месте, подключиться к недоступным в вашей стране сайтам
Proxy — полномочия, права
1. Загружать код на сервер GIT.
2. Публиковать что-то.
3. Напоминать другому
Push — толкать, продвигать;
GitHub — система для отслеживания историй изменения файлов
Ребут
Переадресация на другую страницу
Готовая версия продукта
Ручка
Сообщение от сервера в ответ на какое-то событие, бэкенд-термин
Свитч, свитчнуть
Секвентальный, секвенция
Скин
Интерфейс, который переключается по выбору пользователя. Графическая оболочка. Например, внешний вид персонажа в игре. Скин — это небольшое дополнение, в отличие от темы, которая глобально преображает интерфейс
Skin — кожа, оболочка
Скоуп
Объем задач, которые закреплены за отдельной командой
Скриншот
Screen — экран, shot — снимок
Software — программное обеспечение
Темплейт
Транслит
Замена букв одного алфавита похожими знаками другого
Trans — изменение, littera — буква
Объем входящих, исходящих данных, посещаемость сайта
Traffic — уличное движение
Фавикон
Значок интернет-ресурса. Показывается во вкладке браузера рядом с названием сайта
FAVorites ICON — значок для избранного
Факап
Серьезная неудача, ошибка, крах проекта. Не просто оплошность, а позорный провал