Привет, Хабр! Меня зовут Татьяна Ошуркова, я системный аналитик, разработчик и за время опыта своей работы успела не только попробовать себя в разных ролях, но также изучить и применить на практике множество навыков из различных сфер.

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

C-подобные языки.

Речь не идет о том, что необходимо уметь писать код на C++, C# или Java. Но в работе будет крайне полезным, если вы будете понимать синтаксис и основы разработки хотя бы одного из C-подобных языков. Данные языки достаточно сложные, и для того, чтобы стать разработчиком, уровень навыков должен быть очень глубоким. Но если не идти в разработку, достаточно познакомиться с данными языками даже на уровне «новичка» для того, чтобы понимать, как строится часть бэкенд или иногда смотреть в код для понимания системы. Для тех, кто не знаком с данными языками, могу сказать, что они действительно многим похожи. Если вам удалось изучить один из них, то понимать, что происходит в коде, написанном на остальных языках, будет достаточно несложно.

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

Базы данных.

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

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

Достаточно знать хотя бы один язык из расширений SQL: PL/SQL, PL/pgSQL и так далее. Подход к работе с базами данных, особенно если речь идет о системном анализе, базируется на общих правилах и схожем синтаксисе. Несмотря на различия в архитектуре баз данных, если вы работали с БД ранее, то сделать это в новой СУБД будет гораздо легче.

Интеграция систем и работа с API

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

Нужно владеть несколькими обязательными навыками. Для начала нужно освоить протокол SOAP и REST API. Нужно понимать различия, принципы и архитектуру взаимодействия. Здесь очень важна практика. Важно уметь составить, описать запрос и ответ. Также нужно владеть необходимыми инструментами, например, Postman или SoapUI.

Следующий обязательный навык - это понимание принципов работы очередей сообщений и брокеров. Для начала можно обойтись без практики, но нужно тщательно изучить такие инструменты, как Kafka и Rabbit MQ. На мой взгляд, системному аналитику нужно иметь представление о том, что происходит «внутри», а также что может потребоваться от вас, если речь пойдет об интеграционных задачах в этой части. Со стороны разработчика погружение, безусловно, должен быть иного уровня, который зависит от того, на сколько глубоко вам предстоит с этим взаимодействовать.

Python

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

Также добавлю, что данный язык крайне простой в освоении, даже если ранее вы не сталкивались с разработкой. Если сравнивать его с Java или C++, то можно отметить, что простота в его написании видна сразу.

PlantUML

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

PlantUML дает множество возможностей. Можно применять версионирование, также PlantUML популярен для подхода «Документация как код». Кроме построения непосредственно UML-диаграмм, PlantUML можно применять для построения иных схем. Это может быть mindmap или графическое отображение json.

Данный список можно дополнить и другими навыками. Например, HTML. Язык текстовой разметки используется для решения различных задач практически в каждом продукте. Также может пригодиться знание нотации BPMN, что крайне распространено для визуализации бизнес-процессов.

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

Мои каналы в социальных сетях:

В завершение делюсь советами, которые помогут вам изучить навыки, упомянутые в данной статье. Желаю удачи!

  1. C++, Python и любой язык разработки. Если вы изучили один любой язык, то изучить остальные гораздо легче. Для понимания основ вам будет достаточно просмотра уроков в открытом доступе. Далее очень важна практика. Безусловно, стоит отметить, что если вы не работали с техническими навыками ранее, то может возникнуть потребность в более глубоком погружении.

  2. Базы данных. Для начала необходимо развернуть локально СУБД, с который вы бы хотели начать работу. Для этого есть множество пошаговых советов. Далее нужно начать создавать, изменять и удалять таблицы. После этого нужно познакомиться с базовыми командами и попробовать написать первые выборки. Как и в первом пункте, уровень погружения зависит от того, сколько у вас было практики и на сколько сложные запросы вы смогли написать.

  3. Интеграция систем и работа с API. Для работы с REST API и SOAP я рекомендую начать с установки Postman. Далее можно воспользоваться официальной документацией Postman и практиковаться в построении и отправке различных запросов. Можно воспользоваться тестовыми серверами и не разворачивать их локально. Литература: «Проектирование веб-API» Арно Лоре.

    Что касается Kafka или Rabbit MQ, то советую начать с глубокой проработки теории. Литература: «Apache Kafka. Потоковая обработка и анализ данных» Гвен Шапира, Тодд Палино, Раджини Сиварам, Крит Петти. «Потоковая обработка данных конвейер реального времени» Эндрю Дж. Пселтис.

  4. PlantUML. Очень рекомендую официальный сайт и документацию https://plantuml.com. Немного теории есть в книге «Разработка требований к программному обеспечению» Вигерс Карл, Битти Джой.

Комментарии (6)


  1. Imaginarium
    22.08.2024 11:08
    +1

    Следующий обязательный навык - это понимание принципов работы очередей сообщений и брокеров. Для начала можно обойтись без практики, но нужно тщательно изучить такие инструменты, как Kafka и Rabbit MQ. На мой взгляд, системному аналитику нужно иметь представление о том, что происходит «внутри»

    Обязательный? А что, системные аналитики работают только в тех областях, где применяются брокеры и очереди сообщений? А если космос/инженерный анализ/научные расчёты -- то там системному аналитику делать нечего, или нужно обязательно натянуть Kafka на что угодно любой ценой? Представление о том, что происходит "внутри" -- где? Непонятно, какая-то параллельная вселенная малоинтересных задач.


    1. oshurkovata Автор
      22.08.2024 11:08

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


      1. Imaginarium
        22.08.2024 11:08

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


  1. say_mokc_no
    22.08.2024 11:08
    +2

    И где здесь программирование? Хоть что-то одно из перечисленного в тегах? О чем статья то вообще?


    1. oshurkovata Автор
      22.08.2024 11:08

      В статье описаны навыки, которые касаются в том числе разработки.


  1. Proscrito
    22.08.2024 11:08

    А что, есть какое-то формальное определение системного аналитика? Это что вообще такое, профессия, статус, должность, звание? У нас системные аналитики занимались только требованиями, им ничего из перечисленного никогда даже в теории не пригодилось бы.