Не базовые навыки. Как расширить свои возможности и найти новые подходы в работе
Привет, Хабр! Меня зовут Татьяна Ошуркова, я системный аналитик, разработчик и за время опыта своей работы успела не только попробовать себя в разных ролях, но также изучить и применить на практике множество навыков из различных сфер.
В этой статье я хотела бы поделиться инструментами, которые будут полезны вне зависимости от того, над каким продуктом вы сейчас работаете, а значит, будут актуальны всегда и позволят использовать наработанные практики без привязки к конкретной задаче.
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, что крайне распространено для визуализации бизнес-процессов.
Все вышеперечисленные навыки не являются обязательным для каждого системного аналитика или разработчика, если того не требуют задачи, которые стоят перед вами. Но чем лучше вы понимаете систему, ее архитектуру и принципы работы, тем больше подходов вы сможете найти для решения задач.
Мои каналы в социальных сетях:
В завершение делюсь советами, которые помогут вам изучить навыки, упомянутые в данной статье. Желаю удачи!
C++, Python и любой язык разработки. Если вы изучили один любой язык, то изучить остальные гораздо легче. Для понимания основ вам будет достаточно просмотра уроков в открытом доступе. Далее очень важна практика. Безусловно, стоит отметить, что если вы не работали с техническими навыками ранее, то может возникнуть потребность в более глубоком погружении.
Базы данных. Для начала необходимо развернуть локально СУБД, с который вы бы хотели начать работу. Для этого есть множество пошаговых советов. Далее нужно начать создавать, изменять и удалять таблицы. После этого нужно познакомиться с базовыми командами и попробовать написать первые выборки. Как и в первом пункте, уровень погружения зависит от того, сколько у вас было практики и на сколько сложные запросы вы смогли написать.
Интеграция систем и работа с API. Для работы с REST API и SOAP я рекомендую начать с установки Postman. Далее можно воспользоваться официальной документацией Postman и практиковаться в построении и отправке различных запросов. Можно воспользоваться тестовыми серверами и не разворачивать их локально. Литература: «Проектирование веб-API» Арно Лоре.
Что касается Kafka или Rabbit MQ, то советую начать с глубокой проработки теории. Литература: «Apache Kafka. Потоковая обработка и анализ данных» Гвен Шапира, Тодд Палино, Раджини Сиварам, Крит Петти. «Потоковая обработка данных конвейер реального времени» Эндрю Дж. Пселтис.
PlantUML. Очень рекомендую официальный сайт и документацию https://plantuml.com. Немного теории есть в книге «Разработка требований к программному обеспечению» Вигерс Карл, Битти Джой.