Сегодня мы разберем жаркую тему для дебатов в различных сообществах: должен ли ИТ-аналитик-проектировщик уметь программировать?
Противники теории о необходимости иметь знания о программировании считают, что если аналитик должен обладать таким навыком, то он должен владеть навыками всех смежных профессий. Найти и обучить такого специалиста невозможно.
Сторонники считают, что владение языком программирования позволяет делать более качественные ТЗ для коллег. Кроме того, неясно, а какой именно язык программирования подразумевается.
Давайте проясним ситуацию и взглянем на споры и аргументы более системно.
Ценность системного аналитика
Важность аналитика сложно переоценить — он уменьшает неопределенность в задаче достижения результата, создавая оптимальные модели будущего решения. Работа аналитика заканчивается, когда риск «не попасть» в ожидания приемлем, когда разработчик получает полную информацию о том, как это должно работать, и понимает, как ему это сделать.
Как создается модель решения?
- Он выявляет контекст и требования, а затем взаимосвязывает разные требования, возможности, ограничения и способы решения задач — в одно целое.
- Определяет предпочтительный вариант.
- Для отсева ненужных вариантов аналитик задает вопросы к использующим системам и выявляет дополнительные требования, которые порождает модель системы.
- Отсеивает ненужные варианты. Желательно выбрать один предпочтительный вариант решения, но если остается несколько вариантов, то приходится представлять их заказчику с оценкой атрибутов качества, по которым и происходит выбор в сторону одной из моделей.
- Уменьшив вариативность реализации, аналитик достигает своей цели — уменьшения неопределенности.
Если аналитик не создает модели, то он не уменьшает вариативность. Когда разработчик начинает писать код, то:
- Он пишет его так, как ему кажется логичным (и часто ошибается, так как логика программиста <> логика бизнеса).
- Он начинает задавать вопросы, которые позволят ему понять, как конкретно писать код, продолжая выполнять роль аналитика. Поскольку в голове у него меньше знаний про использующие системы, он задает больше вопросов и медленнее формирует модель решения. Время ожидания увеличивает time2market, заказчик недоволен.
Умение для ИТ аналитика
Когда мы говорим про ИТ аналитика, то он создает, в том числе, модели создаваемой/изменяемой ИТ-системы и модели ее использования.
При проектировании в общем случае создаются:
- Модели использования ИТ системы со стороны пользователей и интегрируемых ИТ систем. При этом создается последовательность (алгоритм) взаимодействия и сопоставление взаимодействующих данных между потребителем и ИТ системой.
- Модели пользовательских и интеграционных интерфейсов, которые соответствуют моделям использования. Важно понимать, как поля/таблицы и другие элементы форм соответствуют друг другу и моделям данных и какие алгоритмы преобразования возникают.
- Модели внутреннего хранения данных, при этом важно понять структуру данных и связи объектов друг с другом.
- Модели внутренних преобразований данных (в виде какого-то алгоритма).
Для создания этих моделей требуется алгоритмическое и структурное мышление.
Должен ли ИТ-аналитик создавать все эти модели IT системы? Да, если эти модели уменьшают неопределенность.
Как развивать умение проектировать алгоритмы и структуры данных? Ответ очевиден — необходимо развивать алгоритмическое и структурное мышление.
Два основных варианта.
- Аналитик создает модели алгоритма на UML / верхнеуровневом BPMN, после чего преподаватель сообщает, где и почему он допустил ошибку.
- Аналитик пишет код на каком-то языке программирования (включая BPMN для BPMS). Компьютер компилирует/интерпретирует и исполняет код.
Во втором случае, аналитик сразу видит некоторые ошибки компиляции/интерпретации, а применяя практики тестирования, он сам проводит валидацию и верификацию решения и понимает, как лучше проектировать алгоритм.
Второй случай позволяет получать более быструю обратную связь (компьютер быстрее преподавателя), что сокращает цикл обучения и дает возможность решить больше учебных задач и отработать навык.
Какие конкретно умения проектировать структуры данных и алгоритмов нужны? Зависит от предметной области. Универсальных ИТ аналитиков не существует, чтобы это понять, достаточно посмотреть на карту всех компетенций ИТ-аналитика.
Например, учетные программы
- Не содержат сложных алгоритмов взаимодействия с пользователями/ системами, поэтому нет смысла их проектировать или учиться их создавать с помощью процедурных языков программирования.
- Содержат непростую логику преобразования данных (как правило, реляционную), поэтому имеет смысл проектировать модели их преобразования. Например, с помощью изучения SQL.
Дополнительная польза от знаний языков программирования
- Развивая ПО, аналитик плотно работает с разработчиками. Для эффективного взаимодействия нужно выработать общий язык, глоссарий. Если аналитик хорошо понимает термины языка разработки, то объясняться проще.
- Владение инструментами обработки и анализа данных (Excel, Phyton, SQL, ..) позволяет аналитику изучать проблематику задачи, опираясь не на мнения, а на факты.
- Знание языка программирования конкретного ПО позволяет самостоятельно проводить reverse engineering.
Итог
- ИТ аналитику нужно уметь создавать детальные модели данных и алгоритмов, чтобы уменьшать неопределенность и уменьшать time2market.
- Знания языков программирования позволяют проектировать детальные модели данных и алгоритмов быстрее.
- На каком языке программирования учиться (BASIC, Phyton, SQL, MDX) зависит от того, какое ПО создается; разные типы решаемых задач требуют разных моделей алгоритмов.
Источник: https://habr.com/ru/post/692524/