GetAnalyst - Старт карьеры в IT • Системный аналитик • Бизнес-аналитик
4.77K subscribers
1.96K photos
78 videos
20 files
360 links
Канал для начинающих карьеру системных аналитиков. Влюбиться в системый анализ и начать свой путь в IT можно здесь! 🚀

Для опытных аналитиков - Навыки • БД • Интеграции • API:
t.me/getanalysts

Обучение:
https://getanalyst.ru/education
Download Telegram
Помним главное: мы уже молодцы.

С началом рабочей недели, друзья ✔️😉
Please open Telegram to view this post
VIEW IN TELEGRAM
15
🤖 Как аналитики работают в Generative AI проектах: старт карьеры, ключевые навыки и задачи 🤖

Повсюду «AI, AI, AI»: Generative AI, LLM, Fine-Tuning, RAG — но что это значит для системных и бизнес-аналитиков?
Куда бежать, что изучать и с чего начать, если уже сейчас хочется новый виток в карьере в направлении AI?

В этом выпуске разбираем реальные проекты, задачи и роли в компании red_mad_robot: где место аналитика в Generative AI, какие навыки нужны на старте и как меняется работа команд по сравнению с «обычными» IT-проектами.

🔗 Сайт эпизода
🔗 Компания red_mad_robot
🔗 AI акселератор для СА и БА

Анастасия и Игорь «раскрывают кухню» Generative AI-проектов: RAG vs Fine-Tuning, Small LLMs, метрики качества, безопасность и свой реальный опыт работы. К концу эпизода вы поймёте, с чего начать переход, какие артефакты добавить в портфолио и чего ожидать на собеседованиях.

✍️ Слушайте, делайте заметки и задавайте вопросы в комментариях, чтобы мы могли дать вам максимум пользы от этого выпуска!


Эпизод доступен в:
Apple Podcast
Яндекс.Музыка
Telegram
Castbox
Звук
Spotify
RuTube
YouTube
VK Video


GetAnalyst - сообщество, где аналитики каждый день получают новый опыт и самые актуальные знания! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🔥2
Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только)

Проектирование REST API - это процесс создания дизайна методов обмена данными. Дизайн - это субъективное. У одних "так", у других "сяк". А кто прав? Иногда все, а иногда нет.

В следующих постах рассмотрим спорные вопросы с проектов и собеседований, которые связаны с созданием контрактов REST API.

Вопросы взяли по итогам общения с системными аналитиками, которые недавно проходили собеседования, с открытого вебинара GetAnalyst.

Но для начала повторим, что такое REST API и для чего.

REST API - это архитектурный стиль, который определяет, по каким правилам приложения должны обмениваться данными между собой. Он используется для создания веб-сервисов, мобильных приложений, интеграционных платформ и других IT-решений.

Впервые был определен и описан Роем Филдингом в диссертации 2000-го года. Рой Филдинг - соавтор спецификаций HTTP и URI.

Главная цель REST API - облегчить передачу и управление информацией между разными системами: создавать, читать, изменять, удалять (CRUD). REST API использует для этого стандартные HTTP-запросы: GET, POST, PUT, DELETE и другие.

🔹 REST API - это архитектурный стиль проектирования взаимодействия приложений.
🔹 HTTP - протокол, на основе которого работает REST API.
Отличие REST API от других видов API, таких как SOAP API, ftp и RPC, заключается в том, что REST API не имеет жестких правил и структур, и может быть использован с любым языком программирования - Java, Python, C++ и другие.

Из-за того, что REST API не имеет жестких правил и структур, и возникают спорные вопросы, связанные с его проектированием. #hardGetAnalyst

⬇️ Первый вопрос рассмотрим в следующем посте⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
👉 Можно ли использовать метод POST для получения данных?
Да, можно.

Метод POST изначально предназначен для отправки данных на сервер с целью их обработки и создания новых записей в БД. В то же время его можно использовать для получение данных в следующих случаях:

1️⃣ Запросы на получение данных (списки объектов) с большим количеством фильтров
Когда необходимо реализовать большое количество фильтров для получения списка, то решение отправлять их все в URL запроса как query-параметры не лучшее, т.к. это делает URL очень длинным. Это может вызвать проблемы с ограничениями на длину URL в некоторых веб-серверах или браузерах.

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

Пример:

Допустим, у нас есть API для получения списка книг из базы данных. Пользователь может фильтровать этот список по автору, жанру, году публикации, издательству, рейтингу и многим другим параметрам. Если пытаться передать все эти фильтры в URL, то он может выглядеть так:

Метод "Получение списка книг с применением фильтров":

GET https://test-system.com/api/books?author=Толстой&genre=роман&year=1877&publisher=Огонек&rating=5&...

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

Вместо этого, можно использовать метод POST для передачи всех этих параметров в теле запроса в формате JSON:

Метод "Создание поискового запроса на получение списка книг с применением фильтров":
POST https://test-system.com/api/books/search

{
"author": "Толстой",
"genre": "роман",
"year": 1877,
"publisher": "Огонек",
"rating": 5,
...
}

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

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

Стоит отметить, что при выборе метода POST для таких запросов, необходимо четко документировать это поведение в API-документации, чтобы избежать путаницы среди пользователей API.

2️⃣ Асинхронные запросы на получение данных: комбинирование POST и GET
Асинхронные запросы на получение данных реализуются за счет комбинации методов POST и GET.

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

Реализуются асинхронные запросы последовательным использованием методов:

🔹 POST - используется для создания задачи на сервере. При получении такого запроса, сервер помещает задачу в очередь на обработку и возвращает идентификатор задачи.

🔹 GET - с помощью этого метода можно проверить статус выполнения задачи, используя идентификатор, предоставленный на предыдущем шаге. Как только задача завершена, через этот же метод можно получить результаты его выполнения.

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

1. Пользователь отправляет POST-запрос для формирования отчета по продажам. При этом в теле запроса передаются параметры, необходимые для формирования отчета, такие как диапазон дат, тип отчета или другие фильтры.

Метод размещения запроса на формирование отчета:

POST /api/reports/sales

{
"startDate": "2023-01-01",
"endDate": "2023-12-31"
}

После обработки этого запроса сервер создает задачу на формирование отчета и помещает ее в очередь.

Cервер возвращает идентификатор задачи. Этот уникальный идентификатор позволяет пользователю отслеживать статус формирования отчета.
7
{
"taskId": "12345"
}

2. Через некоторое время пользователь может отправить GET-запрос, чтобы проверить, готов ли отчет или получить его, если он готов.

Метод получения информации по статусу формирования отчета или готового отчета:

GET /api/reports/sales/status/{taskId}
Если отчет еще формируется:

{
"status": "progress"
}

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

Пример, если в ответ на отчет готова ссылка на его загрузку:

{
"status": "completed",
"reportUrl": "/api/reports/sales/download/12345"
}

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

Представим, что вы создаете API для системы бронирования авиабилетов. Пользователь хочет найти билеты на определенную дату.

1. Пользователь отправляет POST-запрос с деталями поиска (дата, пункт назначения и т.д.).

Метод размещения запроса на поиск авиабилетов:

POST /api/tickets/search

{
"departure": "2023-10-30",
"destination": "Rome",
...
}

Сервер возвращает идентификатор задачи - идентификатор созданного запроса на поиск.

{
"searchId": "Уникальный идентификатор задачи"
}

2. Через некоторое время пользователь делает GET-запрос с этим идентификатором, чтобы узнать статус поиска.

Метод получения статуса или информации по результатам поиска, если он завершен:

GET /api/tickets/search/{searchId}
или
GET /api/tickets/search/status/{searchId}

Ответ (если поиск еще не завершен):

{
"status": "progress"
}

Как только поиск завершен, пользователь получает список доступных рейсов в ответ на GET-запрос.

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

Это лишь часть примеров, но они являются наиболее ярким подтверждением того, что POST может использоваться для получения данных.
9
Друзья, продолжаем говорить о спорных вопросах при проектировании REST API ✔️

Сегодня разберём ещё два вопроса ⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉2
👉 Можно ли в GET передавать тело запроса?
Не стоит, оно будет проигнорировано или обрезано.

HTTP-спецификация не запрещает передачу тела запроса в методе GET, но этот подход считается нестандартным и может вызвать определенные проблемы и вопросы при разработке и использовании API.

Почему передача тела запроса в GET может показаться привлекательной? В некоторых сценариях может возникнуть потребность в передаче сложных данных для фильтрации или поиска, которые сложно или невозможно передать через URL в виде query-параметров.

Главная проблема такого подхода: не все клиенты и серверы поддерживают передачу тела запроса в методе GET. Некоторые из них могут игнорировать тело запроса или возвращать ошибку. Проще говоря, тело запроса будет проигнорировано или "обрезано".

👉 Как правильно именовать эндпоинты - ед. число или мн. число (/user или /users)?
Можно и так, и так. Но нужно ориентироваться на то, как названы остальные эндпоинты в проекте. В новом API предложили бы делать в ед. числе, т.к. было больше опыта в этом.

В именовании ресурсов в REST API есть разные подходы, и, честно говоря, нет строгого стандарта.

Однако на практике чаще всего предпочитают использовать единственное число для ресурсов. Но и множественное число также активно используется!

Согласно множественному подходу, даже если хотите получить информацию о конкретной задаче, вы все равно обращаетесь к "коллекции" задач и выбираете одну из них.

Примеры:

Единственное число:
GET /task/123 - получить информацию о задаче с ID 123.
POST /task - создать новую задачу.

Множественное число:
GET /tasks - получить список всех задач
GET /tasks/123 - получить информацию о задаче с ID 123.
POST /tasks - создать новую задачу.

Множественное число представляет собой коллекцию элементов, что соответствует идеологии REST для метода добавления нового элемента в коллекцию и чтения списка - /tasks читается легче, где у вас есть коллекция ресурсов и конкретные ресурсы внутри этой коллекции.

Рекомендации по множественному числу есть в гайдлайнах:

1) Microsoft API Guidelines: 7.4.1. POST ---> POST http://api.contoso.com/account1/servers

2) Google Cloud API Design Guide: Resource names ---> Example 1: A storage service has a collection of buckets, where each bucket has a collection of objects

При этом, если мы взглянем на Яндекс:

Пример с ед. числом:
https://yandex.ru/dev/rasp/doc/ru/reference/nearest-settlement

Пример с мн. числом:
https://yandex.ru/dev/market/partner-api/doc/ru/overview/express

📌 Наглядный пример как в рамках одной огромной компании работали разные команды.

От чего зависит выбор? От опыта команды, и как комфортнее воспринимать методы при чтении.

Помимо этих источников, хорошей практикой также является изучение и анализ популярных публичных API, чтобы увидеть общепринятые стандарты в сообществе. А лучшая практика - посмотрите как у вас уже реализован API в компании!

Важно помнить: вне зависимости от выбранного подхода, ключевым является его последовательное использование на протяжении всего проекта API.

Хотя я предпочитаю единственное число, для меня важнее договоренность с командой и поддержка единого подхода на протяжении всего проекта.
9
GetAnalyst_Ответы_на_задания_по_REST_API_для_подготовки_к_собеседованию.pdf
551.9 KB
📚🤖 Вопросы по REST API к собеседованию на СА + AI-помощник для подготовки к собеседованиям 📚🤖

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

Прикрепили к посту два файла:


1. Только вопросы
2. Эти же вопросы, но с краткими ответами



🤖 Рекомендации по самопроверке и подготовке к интервью с помощью AI:

1. Скачайте pdf-файл с ответами из этого поста (второй по порядку).

2. Откройте ChatGPT и войдите в бесплатный аккаунт, используя учётную запись Google.
https://chatgpt.com/

3. Откройте новый диалог (New Chat в левом меню).

4.1. Загрузите файл в ChatGPT.
В зоне ввода текста есть иконка "+".
Нажмите на неё и появится иконка скрепки с надписью "Добавить файл" (Add photos & files").

4.2. Вставьте промпт:
Представь, что ты системный аналитик с опытом более 10 лет в IT. Ты хочешь нанять senior системного аналитика к себе в команду и я пришёл к тебе на техническое собеседование.
Ты строгий и занудный, требуешь четких ответов с примерами.
Используй файл, который я добавил, и на его основе задавай мне по одному случайному вопросу.
После того, как я отвечу, давай оценку моим ответами по 10-бальной шкале по критериям: точность ответа, понимание вопроса. Поясняй каждый балл и предлагай как можно было бы улучшить мой ответ.
Каждый раз, когда я буду писать "следующий вопрос", ты можешь задавать мне следующий вопрос из моего документа или придумывать аналогичные, с подобными задачами.
Сразу после этого сообщения можешь задать мне первый вопрос.


5. Ваше интервью началось.
Отвечайте на вопросы.
❗️ Не печатайте текст на теоретические вопросы, а говорите ответы голосом, где возможно!
Используйте иконку "микрофон", чтобы записывать свои ответы и отдавать их на проверку Искусственному Интеллекту.
Получайте обратную связь от ИИ и улучшайтесь 😌


+ В помощь на собеседования:
JSON Editor Online


Сохраняйте и пользуйтесь.
Сейчас или в будущем 🤝


🔥 и 🩷 приветствуются))
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2313
🗓💥 [30.10 в 19:00 Мск] Postman, Insomnia и AI для REST API — на практике 💥🗓

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


👉 Приглашаем вас на бесплатный онлайн-практикум, чтобы разобраться с темой и освоить три инструмента, которые реально ускоряют работу аналитика и дают лучшее понимание REST API:

💥 Postman, Insomnia и AI — на практике:
проверим чужие API и спроектируем свои REST API-методы с нуля


🗓 30 октября (чт), в 19:00 МСК
🟢 Онлайн

🔗
Зарегистрироваться

План:
1. Теория по REST API - только то, что пригодится в практике.
2. Postman & Insomnia: создаём коллекции и проверяем внешние API.
3. Настройка AI-ассистента для работы с проектированием REST API.
4. Проектирование и документация собственного REST API-метода в Insomnia + AI.


Это полноценное обучение, которое даст вам реальный опыт работы с REST API и тремя самыми актуальными инструментами 🚀

--------
Занятие проводится в качестве вводного урока к практической программе Дизайн REST API.
--------

Регистрируйтесь и подключайтесь онлайн в следующий четверг! 😉
6
Понедельник может быть поводом к началу изменений🙌

С началом новой рабочей недели!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18
Из тестирования в системный анализ

Дарья в IT уже 4 года. Работает тестировщиком, но уже год совмещает тестирование с аналитикой и планирует полный переход в системный анализ.

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

#студентыGetAnalyst
7🔥1
Что должен уметь системный аналитик, чтобы гарантированно найти работу и получать хорошие офферы? 🤔

Вакансий много. Требования и ожидания у всех разные: от сбора требований до проектирования архитектуры. А еще иногда просят писать код (это про аналитиков вообще?!).

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

Ниже представлен ожидаемый ТОП-навыков для Middle Системного Аналитика с опытом работы от 1 до 3-х лет:


Работа с требованиями
Умение быстро погружаться в предметную область и обследовать предприятия
Бизнес-требования
Разработка ТЗ
Ведение проектной документации
Умение ставить задачи на разработчиков

Базы данных
Понимание реляционных БД
Умение писать простые SQL-запросы

Интеграции
Понимание принципов взаимодействия систем
Умение проектировать сценарии взаимодействия

API
REST API (JSON)
SOAP (XML, XSD)

Инструменты
Jira, Confluence и аналоги
Postman
Swagger
DBeaver или аналог для работы с БД

Софт-скилы
Умение работать в команде и понимать её: разработчики, тестировщики, архитекторы и другие технические специалисты
Ведение переговоров с заказчиками

Проектирование архитектуры (продвинутый навык, который также могут требовать от мидлов некоторые компании)
Понимание принципов SOA и MSA (сервисная и микросервисная архитектуры)
Понимание принципов работы очередей
Умение представить схему компонентов системы


Сохраняйте, чтобы поставить напротив каждого свою

Если задумываетесь о том, чтобы составить свой план карьерного роста или перехода в профессию системного аналитика, то рекомендую ознакомиться с подробной картой навыков системного аналитика.
🔥6
Гайд по основным диаграммам и нотациям для СА ✔️

При работе аналитики использует семь самых популярных диаграмм:
1. UML Sequence для Интеграций
2. ER-диаграмма для Баз Данных
3. C4 для Архитектуры
4. UML Диаграмма состояний для Жизненного Цикла сущностей, Алгоритмов
5. BPMN для Бизнес-процессов
6. UML Activity для Алгоритмов, Интеграций
7. Data Flow Diagram (DFD) для Алгоритмов и анализа данных

Мы подготовили документ в котором рассказали, с помощью каких распространённых инструментов создавать эти диаграммы.

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

Пользуйтесь и делитесь информацией с коллегами 🤩
Please open Telegram to view this post
VIEW IN TELEGRAM
👌7😍4👍2🔥1