▫️ API
Задача на бэкенд - это про разработку метода API - программный интерфейс, который защищает доступ к базе данных.
▫️ Логика работы сервер-приложения связана с чтением и записью данных в БД
Задача на бэкенд - это преимущественно получение или запись данных из БД. Поэтому она достаточно техническая. И мы должны фокусироваться на разработке алгоритмов обработки данных и альтернативных сценариях.
▫️ Интеграции
Если нам нужно разработать интеграционный метод, то наш алгоритм работы метода должен содержать точные названия методов внешней системы, с которой предстоит взаимодействовать. И стоит дополнительно перепроверить нашу БД. Возможно ее придется еще немного дорабоать.
▫️ Маппинг
Может быть необходим для: API + БД + Внешняя система.
▫️ Требования к безопасности
Определите роли пользователей, которые будут работать с API-методом, и укажите требования к авторизации. Если метод открытый и защиты быть не должно, то это тоже стоит явно прописать.
Задача
Регистрация личного кабинета пользователя (ЛК)
Готовы разбираться на практике? 👍
Задача на бэкенд - это про разработку метода API - программный интерфейс, который защищает доступ к базе данных.
▫️ Логика работы сервер-приложения связана с чтением и записью данных в БД
Задача на бэкенд - это преимущественно получение или запись данных из БД. Поэтому она достаточно техническая. И мы должны фокусироваться на разработке алгоритмов обработки данных и альтернативных сценариях.
▫️ Интеграции
Если нам нужно разработать интеграционный метод, то наш алгоритм работы метода должен содержать точные названия методов внешней системы, с которой предстоит взаимодействовать. И стоит дополнительно перепроверить нашу БД. Возможно ее придется еще немного дорабоать.
▫️ Маппинг
Может быть необходим для: API + БД + Внешняя система.
▫️ Требования к безопасности
Определите роли пользователей, которые будут работать с API-методом, и укажите требования к авторизации. Если метод открытый и защиты быть не должно, то это тоже стоит явно прописать.
Задача
Регистрация личного кабинета пользователя (ЛК)
Готовы разбираться на практике? 👍
👍32
Коллеги на вебинаре справшивали про архитектуру - одно из направлений, куда могут расти системные аналитики.
Рекомендовала посмотреть видео Доставить и не потерять: синхронизация данных в распределенных системах.
Будет что посмотреть в выходные 😉 Отдыхаем и набираемся сил! Прекрасного отдыха ❤️
Рекомендовала посмотреть видео Доставить и не потерять: синхронизация данных в распределенных системах.
Будет что посмотреть в выходные 😉 Отдыхаем и набираемся сил! Прекрасного отдыха ❤️
YouTube
Доставить и не потерять: синхронизация данных в распределенных системах
Доклад Екатерины Ананьевой на конференции Analyst Days #15
4-5 ноября 2022. Санкт-Петербург. Россия
www.analystdays.com
4-5 ноября 2022. Санкт-Петербург. Россия
www.analystdays.com
👍9❤3👎1
Время бэкенда! ⚡️
Задача:
Регистрация личного кабинета пользователя (ЛК)
Ход мыслей:
Сначала я разбираюсь с данными, затем с методами.
1. Проверяю, достаточно ли в существующей базе данных для реализации метода.
2. Анализирую требования и пытаюсь понять какое количество методов мне будет необходимо.
Если вы думали, что здесь только одна задача, то... Нет! Хотя все зависит от того, как принято делить задачи в компании. Вижу минимум две: доработка БД + метод регистрации. Делю таким образом, так как протестировать их можно отдельно и бывает, что БД необходимо релизить в несколько этапов.
База Данных
Мы создаем систему с нуля. И пользователей с учетными записями ранее не было. Просто посетители, без регистрации и СМС 😄 Поэтому нужно их добавить.
Сразу же думаю о том, что можно давать им какие-нибудь гибкие права, роли и так далее, но на старте это не нужно.
Важны:
1. Логин (почта) и пароль для входа.
2. На почту отправлять код подтверждения, чтобы исключить фейковые аккаунты. А значи будет статус пользователя: активен, заблокирован, не подтвержден.
3. Персональные данные: имя, телефон и почта.
Больше ничего не надо для регистрации. Сразу же думаю про дальнейшие способы авторизации по протоколу OAuth 2.0 или по токенам. Но это можно вынести в отдельную задачу 😉
Итого, надо таблицы:
✔️Пользователь
✔️ Коды активации аккаунта - история
Т.к. может быть, что для одного пользователя было запрошено несколько кодов последовательно или пользователь регистрировался в разное время. А еще через эту таблицу будем отслеживать кодичество отправленных писем с кодами для статистики.
Методы определяю через сценарий Frontend. Напоминаю:
🔗 POST /user - метод регистрации пользователя, реализованный на стороне бэкенда приложения сообщества (нажатие на кнопку "Зарегистрироваться")
🔗 POST /user/{Id}/confirmEmail - метод подтверждения учетной записи пользователя по коду из email (нажатие на кнопку "Продолжить" на форме для ввода кода из email)
Продолжение завтра... 😉
Задача:
Регистрация личного кабинета пользователя (ЛК)
Ход мыслей:
Сначала я разбираюсь с данными, затем с методами.
1. Проверяю, достаточно ли в существующей базе данных для реализации метода.
2. Анализирую требования и пытаюсь понять какое количество методов мне будет необходимо.
Если вы думали, что здесь только одна задача, то... Нет! Хотя все зависит от того, как принято делить задачи в компании. Вижу минимум две: доработка БД + метод регистрации. Делю таким образом, так как протестировать их можно отдельно и бывает, что БД необходимо релизить в несколько этапов.
База Данных
Мы создаем систему с нуля. И пользователей с учетными записями ранее не было. Просто посетители, без регистрации и СМС 😄 Поэтому нужно их добавить.
Сразу же думаю о том, что можно давать им какие-нибудь гибкие права, роли и так далее, но на старте это не нужно.
Важны:
1. Логин (почта) и пароль для входа.
2. На почту отправлять код подтверждения, чтобы исключить фейковые аккаунты. А значи будет статус пользователя: активен, заблокирован, не подтвержден.
3. Персональные данные: имя, телефон и почта.
Больше ничего не надо для регистрации. Сразу же думаю про дальнейшие способы авторизации по протоколу OAuth 2.0 или по токенам. Но это можно вынести в отдельную задачу 😉
Итого, надо таблицы:
✔️Пользователь
✔️ Коды активации аккаунта - история
Т.к. может быть, что для одного пользователя было запрошено несколько кодов последовательно или пользователь регистрировался в разное время. А еще через эту таблицу будем отслеживать кодичество отправленных писем с кодами для статистики.
Методы определяю через сценарий Frontend. Напоминаю:
🔗 POST /user - метод регистрации пользователя, реализованный на стороне бэкенда приложения сообщества (нажатие на кнопку "Зарегистрироваться")
🔗 POST /user/{Id}/confirmEmail - метод подтверждения учетной записи пользователя по коду из email (нажатие на кнопку "Продолжить" на форме для ввода кода из email)
Продолжение завтра... 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17👀2
Еще не придумали планы на воскресенье? Предлагаю посвятить этот день обучению 😉
Повтор вебинара
📹 Системные аналитики: про опыт работы в IT-проектах
⏰ 12:00 - 15:00 Мск ➕
⏰ 18:00 - 21:00 Мск
Подключиться можно будет по этой ссылке 🔗
Повтор вебинара
📹 Системные аналитики: про опыт работы в IT-проектах
⏰ 12:00 - 15:00 Мск ➕
⏰ 18:00 - 21:00 Мск
Подключиться можно будет по этой ссылке 🔗
👍5
GCMA_user_пользователь_учетная_запись_GetAnalyst.pdf
159.9 KB
🌟 Постановка задачи на бэкенд - требования к БД 🌟
Прежде чем программисты начнут разрабатывать методы Backend, им нужно подготовить базу данных.
Варианты:
- создать новые таблицы,
- добавить поля в существующие таблицы,
- сделать миграции данных (перенос и автозаполнение),
- иногда поменять типы данных, удалить лишние поля и так далее.
В Telegram таблицу БД описать можно. Решила, что все равно делаю вам постановки задач с определенной структурой и содержанием для Confluence(Notion). Поэтому подготовила постановку задачи на разработку новой таблицы в БД user в документе.
Вторую связанную таблицу "История отправки сообщений на email" опишу здесь кратко.
Таблица:
confirmation_email_log
Поля:
+ id. - системный параметр, уникальный
идентификатор записи в БД.
+ user_id - пользователь, для которого направляется код подтверждения.
+ email - фактическое значение почты, на которую необходимо отправить письмо, дублируется сюда из user_id на случай замены почты у пользователя.
+ code - сгенерированный к отправке код, по которому подтверждают аккаунт.
+ status - ожидает отправки, отправлено.
Сохраняйте себе в избранное пример заполненного шаблона задачи на разработку БД.
Постановку задачи в таком формате можно использовать как проетную документацию - артефакт от разработки 🌟
Прежде чем программисты начнут разрабатывать методы Backend, им нужно подготовить базу данных.
Варианты:
- создать новые таблицы,
- добавить поля в существующие таблицы,
- сделать миграции данных (перенос и автозаполнение),
- иногда поменять типы данных, удалить лишние поля и так далее.
В Telegram таблицу БД описать можно. Решила, что все равно делаю вам постановки задач с определенной структурой и содержанием для Confluence(Notion). Поэтому подготовила постановку задачи на разработку новой таблицы в БД user в документе.
Вторую связанную таблицу "История отправки сообщений на email" опишу здесь кратко.
Таблица:
confirmation_email_log
Поля:
+ id. - системный параметр, уникальный
идентификатор записи в БД.
+ user_id - пользователь, для которого направляется код подтверждения.
+ email - фактическое значение почты, на которую необходимо отправить письмо, дублируется сюда из user_id на случай замены почты у пользователя.
+ code - сгенерированный к отправке код, по которому подтверждают аккаунт.
+ status - ожидает отправки, отправлено.
Сохраняйте себе в избранное пример заполненного шаблона задачи на разработку БД.
Постановку задачи в таком формате можно использовать как проетную документацию - артефакт от разработки 🌟
🔥20👍12
GetAnalyst-Шаблон задачи Backend - Confluence.pdf
103.4 KB
🌟Шаблон постановки задачи на разработку метода Backend🌟
А теперь самое главное: когда БД готова, то можем делать требования на разработку метода API для Backend-разработчика.
Что это и зачем?
Хочу напомнить. В системах мы имеем дело с UI и API.
▫️ UI - пользовательский интерфейс (Frontend). Это кнопки, поля ввода, картинки - все, что видит пользователь на экране.
▫️API - программный интерфейс (Backend). То, что не видит пользователь. Но именно Backend скрывается за нажатием на кнопку, и не только. Именно благодаря ему приложения работают онлайн. И вообще работают. В Backend программисты реализуют ключевые алгоритмы обработки данных, там же хранятся все-все-все данные.
API бывают разные - REST API, SOAP API, FTP, GraphQL, и другие. Мой шаблон идеален для REST API. Он может быть упрощен или наоборот расширен в зависимости от проекта. Это каркас - идеальный баланс того, что должно быть в постановке задачи на Backend-разработчика.
🌟 Сохраняйте в избранное, чтобы не потерять: долгое нажатие на сообщение -> Переслать себе 🌟
Готовы применить шаблон? Пробовать описывать методы Backend для нашего проекта - мобильное приложение для сообществ? ❤️
А теперь самое главное: когда БД готова, то можем делать требования на разработку метода API для Backend-разработчика.
Что это и зачем?
Хочу напомнить. В системах мы имеем дело с UI и API.
▫️ UI - пользовательский интерфейс (Frontend). Это кнопки, поля ввода, картинки - все, что видит пользователь на экране.
▫️API - программный интерфейс (Backend). То, что не видит пользователь. Но именно Backend скрывается за нажатием на кнопку, и не только. Именно благодаря ему приложения работают онлайн. И вообще работают. В Backend программисты реализуют ключевые алгоритмы обработки данных, там же хранятся все-все-все данные.
API бывают разные - REST API, SOAP API, FTP, GraphQL, и другие. Мой шаблон идеален для REST API. Он может быть упрощен или наоборот расширен в зависимости от проекта. Это каркас - идеальный баланс того, что должно быть в постановке задачи на Backend-разработчика.
🌟 Сохраняйте в избранное, чтобы не потерять: долгое нажатие на сообщение -> Переслать себе 🌟
Готовы применить шаблон? Пробовать описывать методы Backend для нашего проекта - мобильное приложение для сообществ? ❤️
❤23🔥9👍7
Системный анализ - это по любви ❤️ На эфире в прошедший четверг опытные и начинающие коллеги поддержали меня в этом!
Во время эфира:
🚀 Открыла запись на программу "Системный аналитик: с 0 до опыта работы на проекте", которая стартует 28 июня
На ней я помогаю начинающим в IT, переходящим в системный анализ и действующим младшим аналитикам получить навыки, структурировать знания и получить проектный опыт, чтобы дорасти на практике до middle-специалиста.
🎁 Я сделала необычный подарок - интенсив "СТАЖИРОВКА СИСТЕМНОГО АНАЛИТИКА"
На этой и следующей неделе мы проводим интенсив, чтобы перед началом обучения было понимание о профиссии Системный аналитик. Это возможность попробовать себя в новой должности!
Начинающие и интересующиеся профессией посмотрят на процесс работы и попробуют свои силы. А действующие специалисты попрактикуются в решении задач 👀
Продуктивной недели и до встречи на наших мероприятиях!
Во время эфира:
🚀 Открыла запись на программу "Системный аналитик: с 0 до опыта работы на проекте", которая стартует 28 июня
На ней я помогаю начинающим в IT, переходящим в системный анализ и действующим младшим аналитикам получить навыки, структурировать знания и получить проектный опыт, чтобы дорасти на практике до middle-специалиста.
🎁 Я сделала необычный подарок - интенсив "СТАЖИРОВКА СИСТЕМНОГО АНАЛИТИКА"
На этой и следующей неделе мы проводим интенсив, чтобы перед началом обучения было понимание о профиссии Системный аналитик. Это возможность попробовать себя в новой должности!
Начинающие и интересующиеся профессией посмотрят на процесс работы и попробуют свои силы. А действующие специалисты попрактикуются в решении задач 👀
Продуктивной недели и до встречи на наших мероприятиях!
❤8🔥4👍3
Внимательно посмотрите на картинку, которая уже была вчера. В ней правда о том, почему я люблю и ненавижу бэкенд.
80% кропотливой работы от всего проекта: над алгоритмами, БД и архитектурой системы, которую не видят пользователи 😟 Но я то знаю, что без бэкенда ничего не заработает.
Про нашу регистрацию, с которой сейчас работаем: iOS, Android и сайт будут использовать один и тот же метод Backend.
То есть три разных UI будут вызывать один и тот же API-метод, который переиспользуется.
Ответственность, лежащая на Backend-разработчиках и аналитиках, которые делают постановки задач, велика. Нужны требования к логике, БД, безопасности, нагрузке, потенциальным изменениям. Важно знание всех клиентов (Frontend). которые будут использовать этот метод.
И именно за возможность простроить все эти логические связи и кропотливую техническую работу я люблю Backend 🥰
80% кропотливой работы от всего проекта: над алгоритмами, БД и архитектурой системы, которую не видят пользователи 😟 Но я то знаю, что без бэкенда ничего не заработает.
Про нашу регистрацию, с которой сейчас работаем: iOS, Android и сайт будут использовать один и тот же метод Backend.
То есть три разных UI будут вызывать один и тот же API-метод, который переиспользуется.
Ответственность, лежащая на Backend-разработчиках и аналитиках, которые делают постановки задач, велика. Нужны требования к логике, БД, безопасности, нагрузке, потенциальным изменениям. Важно знание всех клиентов (Frontend). которые будут использовать этот метод.
И именно за возможность простроить все эти логические связи и кропотливую техническую работу я люблю Backend 🥰
😍10
Пример_задачи_на_Bakend_POST_user_регистрация_пользователей.pdf
320.9 KB
🟢 Я люблю то, что реально нужно на практике 🟢
🌟 Пример заполненного шаблона постановки задачи на Backend 🌟
Ключевое по задаче на регистрацию пользователей в приложении сообщества GetAnalyst:
1️⃣ Нужно сделать требования на методы:
- Зарегистрировать пользователя.
- Подтвердить учетную запись.
В заполненном шаблоне только один метод. Это две разных постановки задачи. Поэтому два разных Confluence-документа.
+ очередь...)
2️⃣ Я показала направление, дала подсказки что, как и куда писать.
Далее надо продолжать собирать и структурировать всю информацию, по итогам анализа описать все сценарии в постановке задачи.
3️⃣ Не усложняйте формулировки. Чем проще, тем лучше.
Не надо длинных предложений, соблюдайте удобное форматирование. Пишите как для себя. Никто не любит тонуть в море текста.
Backend, БД и интеграции - три важных составляющих систем, которые должны понимать системные аналитики! Сохраняйте шаблон, он обязательно приходится! 🙂
🌟 Пример заполненного шаблона постановки задачи на Backend 🌟
Ключевое по задаче на регистрацию пользователей в приложении сообщества GetAnalyst:
1️⃣ Нужно сделать требования на методы:
- Зарегистрировать пользователя.
- Подтвердить учетную запись.
В заполненном шаблоне только один метод. Это две разных постановки задачи. Поэтому два разных Confluence-документа.
+ очередь...)
2️⃣ Я показала направление, дала подсказки что, как и куда писать.
Далее надо продолжать собирать и структурировать всю информацию, по итогам анализа описать все сценарии в постановке задачи.
3️⃣ Не усложняйте формулировки. Чем проще, тем лучше.
Не надо длинных предложений, соблюдайте удобное форматирование. Пишите как для себя. Никто не любит тонуть в море текста.
Backend, БД и интеграции - три важных составляющих систем, которые должны понимать системные аналитики! Сохраняйте шаблон, он обязательно приходится! 🙂
🔥14👍9❤4
Знакомый круговорот? 👀 Как выйти из из него?
Это проблема не только тех, кто начинает карьеру. Аналитики, кто пока работал только в одной компании тоже с этим встречаются.
Как получить работу или опыт Системному аналитику, если нет опыта?
▫️ Проходить стажировки.
▫️ Учиться там, где сразу дают опыт.
▫️ Общаться с экспертами-аналитиками.
Технические постановки задач на разработчиков: сценарии, БД, API, интеграции и много других требований к приложениям.
Чтобы запомнить все магические слова, недостаточно посмотреть лекцию. Важно сразу пробовать.
Со следующей недели на практической программе обучения для системных аналитиков мы начнем встречаться онлайн, каждую неделю, чтобы сделать проект: теория + работа с задачами по ней сразу. Это проект для вашего портфолио 📚
Есть случаи "Я пришел с улицы, без опыта, меня взяли и я быстро доучился" - у нас будет не этот случай. Вы неизбежно получите опыт работы системным аналитиком 🚀
Это проблема не только тех, кто начинает карьеру. Аналитики, кто пока работал только в одной компании тоже с этим встречаются.
Как получить работу или опыт Системному аналитику, если нет опыта?
▫️ Проходить стажировки.
▫️ Учиться там, где сразу дают опыт.
▫️ Общаться с экспертами-аналитиками.
Технические постановки задач на разработчиков: сценарии, БД, API, интеграции и много других требований к приложениям.
Чтобы запомнить все магические слова, недостаточно посмотреть лекцию. Важно сразу пробовать.
Со следующей недели на практической программе обучения для системных аналитиков мы начнем встречаться онлайн, каждую неделю, чтобы сделать проект: теория + работа с задачами по ней сразу. Это проект для вашего портфолио 📚
Есть случаи "Я пришел с улицы, без опыта, меня взяли и я быстро доучился" - у нас будет не этот случай. Вы неизбежно получите опыт работы системным аналитиком 🚀
🔥3👍2
Полезный совет: нейминг решает
🟢 Если назвать бокал стаканом, то назначение "пить" вроде бы не меняется, но что-то все-таки не то.
Имя объекта должно характеризовать его достаточно емко, не вызывать двусмысленности.
Метод должен реализовывать ровно то, о чем говорит его название. Название должно быть таким, чтобы другому разработчику не нужно было залезать внутрь и раскапывать, что еще здесь можно неожиданно встретить в реализации. Лучше, когда название метода описывает результат его работы, но не его реализацию.
Имена объектов и методов в конечном счете становится языком команды разработки, заказчика ПО и даже пользователей.
Больше полезных советов в моей статье Маленькими шагами к красивым решениям 🔗
🟢 Если назвать бокал стаканом, то назначение "пить" вроде бы не меняется, но что-то все-таки не то.
Имя объекта должно характеризовать его достаточно емко, не вызывать двусмысленности.
Метод должен реализовывать ровно то, о чем говорит его название. Название должно быть таким, чтобы другому разработчику не нужно было залезать внутрь и раскапывать, что еще здесь можно неожиданно встретить в реализации. Лучше, когда название метода описывает результат его работы, но не его реализацию.
Имена объектов и методов в конечном счете становится языком команды разработки, заказчика ПО и даже пользователей.
Больше полезных советов в моей статье Маленькими шагами к красивым решениям 🔗
❤7👍2
Открываем новую рубрику #историиGetAnalyst 🚀
За 2 года работы школы платные программы прошли уже 500+ студентов.
Результаты многих восхищают и вдохновляют команду GetAnalyst делать и дальше крутые продукты, которые помогают реализовываться и развиваться в IT-карьере.
Сегодня расскажем об успехах одной из студенток второго потока программы «Системный аналитик: с нуля до опыта работы».
Гульшат пришла на курс уже специалистом: в системном анализе она проработала 1,5 года.
Была цель «подтянуть» и упорядочить знания, заполнить пробелы🎯
До этого девушка участвовала в бесплатных вебинарах GetAnalyst и проходила курс по БД и SQL.
Как поделилась с нами Гульшат «было опасение, что не получу новых знаний и опыта, больше того, что уже имею, что не получу того, что хочу, и потрачу деньги зря. Но курс понравился.»
Благодаря обучению:
▫️структурировались знания в проектировании БД
▫️освоила проектирование UI/UX
▫️поняла, как грамотно формировать задачи на разработку
▫️освоила Notion
▫️разобралась в программе Figma.
«В целом стала себя более уверенно чувствовать в работе, на собеседованиях. На текущей работе начала проявлять активность, благодаря этому мне стали давать задачи посложнее».
🔥 После курса Гульшат нам рассказала, что её уже приглашали на работу в другую компанию, но на прежней работе предложили повышение в должности и по ЗП 🔥
Для нас это самый крутой результат.
Мы понимаем, ученики не просто послушали лекции, а пошли с уверенностью применять знания на практике 🚀
Давайте поддержим Гульшат ❤️❤️❤️ и пожелаем ей еще более крутых результатов в самое ближайшее время!
За 2 года работы школы платные программы прошли уже 500+ студентов.
Результаты многих восхищают и вдохновляют команду GetAnalyst делать и дальше крутые продукты, которые помогают реализовываться и развиваться в IT-карьере.
Сегодня расскажем об успехах одной из студенток второго потока программы «Системный аналитик: с нуля до опыта работы».
Гульшат пришла на курс уже специалистом: в системном анализе она проработала 1,5 года.
Была цель «подтянуть» и упорядочить знания, заполнить пробелы🎯
До этого девушка участвовала в бесплатных вебинарах GetAnalyst и проходила курс по БД и SQL.
Как поделилась с нами Гульшат «было опасение, что не получу новых знаний и опыта, больше того, что уже имею, что не получу того, что хочу, и потрачу деньги зря. Но курс понравился.»
Благодаря обучению:
▫️структурировались знания в проектировании БД
▫️освоила проектирование UI/UX
▫️поняла, как грамотно формировать задачи на разработку
▫️освоила Notion
▫️разобралась в программе Figma.
«В целом стала себя более уверенно чувствовать в работе, на собеседованиях. На текущей работе начала проявлять активность, благодаря этому мне стали давать задачи посложнее».
🔥 После курса Гульшат нам рассказала, что её уже приглашали на работу в другую компанию, но на прежней работе предложили повышение в должности и по ЗП 🔥
Для нас это самый крутой результат.
Мы понимаем, ученики не просто послушали лекции, а пошли с уверенностью применять знания на практике 🚀
Давайте поддержим Гульшат ❤️❤️❤️ и пожелаем ей еще более крутых результатов в самое ближайшее время!
🔥17❤3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Привет!
Воскресная загадка. Угадайте, где баг? 🤔
Воскресная загадка. Угадайте, где баг? 🤔
👍3
Выходные для учёбы и мемасов – так считает наша команда GetAnalyst 🕺🏻💯
Поэтому свежая порция шуток на тему работы в IT от нашего стола к вашему, как говорится 😅
Всем отличного настроения 😘
Поэтому свежая порция шуток на тему работы в IT от нашего стола к вашему, как говорится 😅
Всем отличного настроения 😘
👍11🤣5