Игра "Назови систему"

Интегрированная среда разработки (IDE)

Это конкретный экземпляр программного продукта, который установлен на машине пользователя и/или в облачном окружении. Каждый экземпляр IDE можно наблюдать, измерить его производительность, открыть интерфейс и проверить, что он выполняет свои функции. IDE потребляет ресурсы (CPU, память, дисковое пространство), имеет состояние, взаимодействует с внешними системами. Это конкретный артефакт, который можно запустить и наблюдать.

Как эксплуатируется система

IDE эксплуатируется разработчиками в ежедневном цикле создания ПО: инженеры пишут и редактируют код, собирают и запускают приложения, отлаживают и тестируют, профилируют производительность и т.д. aka edit-build-debug cycle.
В процессе эксплуатации IDE не функционирует изолированно: она интегрируется с компиляторами, build-системами, рантаймами, системами контроля версий, CI/CD-пайплайнами, контейнерными средами, облачными сервисами и становится центральным узлом инженерной экосистемы.

Ситуаций эксплуатации сотни тысяч (в этом и проблема) и зависят от домена, например: Android-разработчик смотрит в редакторе превью Compose-компонента, C#-разработчик инспектирует декомпилированный код внешней библиотеки, data scientist запускает Jupyter-ноутбук, backend-разработчик дебажит микросервис в Docker-контейнере, новый фронтендер в проекте прыгает по цепочке React-компонентов.

Извлекаемая из эксплуатации польза

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

Пользу от эксплуатации IDE также получают компании, где работают эти инженеры (снижение TTM, повышение производительности команд и объема выпуска); создатели и контрибьюторы языков программирования и инструментов, образовательные организации, и т.д.

Кто участвует в создании и какие действия предпринимаются

Создатели (агенты):

  • платформенные команды;

  • продуктовые команды разработчиков, дизайнеров/UX, QE, релиз-инженеров;

  • инфраструктурные команды (DevOps, SRE, дата-аналитики, локализация);

  • внешние контрибьюторы и партнёры, например, разработчики плагинов.

Действия по созданию:

  • исследование, планирование и проектирование (определение user needs, дизайн архитектуры и интерфейсов, планирование работ/проектная деятельность);

  • написание и тестирование кода;

  • верификация и сборка релиза;

  • дистрибуция и маркетинг;

  • мониторинг (пользовательские метрики и фидбэк) - тут петля замыкается.


Почему это система

  • она имеет физическое воплощение (установленное приложение на машине пользователя, работающий процесс, потребляющий ресурсы);

  • её можно эксплуатировать и получать пользу, у нее есть цель (предназначение) и поведение;

  • она создаётся совокупностью действий, но не тождественна этим действиям;

  • у неё есть свойства (производительность, надёжность, удобство, безопасность, функциональная корректность), но они не подменяют саму систему, и эти свойства эмерджентны - проявляются на уровне самой системы, а не (только) ее компонент

  • у неё есть описания (документация, спецификации, код в репозитории), которые не являются самой системой.


Что если система выделена неправильно

Если вместо системы мы начнём рассуждать о:

  • свойствах (например, «производительность IDE») — мы потеряем предмет, а обсуждение сведётся к абстрактным атрибутам качества, качество неотделимо от вещи;

  • действиях («релиз IDE») — мы застрянем на процессе, не видя результата;

  • создателях («департамент разработки») — мы превратим рассуждение в оргструктурное, а не инженерное;

  • описаниях (документации, архитектурных схемах) — мы будем говорить о моделях, а не о реальном объекте, с которым взаимодействует конкретный пользователь.

Такое смещение приведёт к ошибкам в управлении качеством: обсуждение уйдёт от реального артефакта к словам и метрикам.

1 лайк