Uber-рогатка
Взято из телеги Интересный Али
Сохраняй посты, комментируй и ставь оценки
На то, чтобы победить себя в этом плане у меня ушло 2 года.
Такие расстройства возникают, как правило, на основе низкой самооценки.
На тот период своей жизни я была в полном одиночестве, мне не хватало эмоций и понимания других людей, в общем-то мне не хватало любви и развлечений.
Еда может дать все. Поэтому я и компенсировала свой стресс с помощью объеданий. Так я не чувствовала себя пустой внутри. Получался порочный круг, я себя ненавидела->ела, чтобы чувствовать себя лучше->я себя ненавидела.
На тот момент я уже устала от борьбы с собой, этих циклов диет и срывов. У меня не было сил. И я решила, что нужно полностью принять, что я вот такой вот человек с зависимостью. Я смотрела множество интервью людей с такими же проблемами, что позволяло мне чувствовать себя не одиноко.
Стало понятно, что нужно себя как-то развлечь. Я погрузилась в учебу и в компьютерные игры, которые позволили мне избегать реальности, в которой я себя ненавидела.
Каждый день через слезы я говорила перед зеркалом: я себя принимаю, я не могу поменять свое тело, свою внешность. Какой же будет моя жизнь, если я продолжу так себя ненавидеть? Это внушение заняло у меня около 4-5 месяцев. Я также не контролировала приемы пищи. Я размышляла о том, кем я хочу стать, какой я буду через 10 лет, стала учиться играть на гитаре.
Это позволило переместить фокус внимания со своей боли на внешний мир.
Потом я стала заботиться о себе в мелочах. Красиво краситься, одеваться, стала читать много о питании, о механизмах работы организма. Я стремилась понять себя, в чем причина этих обжорств.
Я пошла на эксперимент с самой собой: одна неделя, когда я ем все, что хочу, но только через 15 минут после порыва покушать.
То есть меня что-то триггерило, я ставила таймер 15 минут. В это время я слушала активную музыку и занималась своими делами. Это помогало.
Я сдала все анализы, пошла к психологу, эндокринологу. И раз в месяц улучшала пищевые привычки. Например, не есть сладкое после 12 часов ночи или по утрам съедать хотя бы немного полезных продуктов.
Также я активно закидывала в свой организм овощи, зелень. Они создавали вот это ощущение сытости, которое давало мне спокойствие.
Описать свою борьбу во всех деталях я не могу, так как это будет длиннющее полотно текста.
Поэтому вывод здесь таков:
✅прорабатывать любовь к себе;
✅переносить фокус внимания с еды;
✅понять, что вы компенсируете;
✅в идеале пойти к психологу
На моем примере вы видите, что все возможно. Главное, не сдаваться. Я начинала худеть раз 200 в моей жизни, и как видите, в итоге это сработало.
Ошибка в рейтинге у "Стальной хватки": КП 7,4 / IMDb 7,8

***
Бедные-несчастные (Poor Things, 2023)
Рейтинг: КП 8,0 / IMDb 8,3 / Skalkino 8
Жанр: арт-хаус, драма, комедия, фантастика
Режиссер: Йоргос Лантимос
В ролях: Эмма Стоун, Уиллем Дефо, Марк Руффало, Маргарет Куэлли и др.
Что будет если поместить сознание маленькой девочки в тело взрослой женщины, со всеми вытекающими последствиями и конфузами? Она изучает свое тело и открывает свою сексуальность, а затем отправляется познавать мир. Артовая комедия от Йоргоса Лантимоса с замечательной Эммой Стоун в эстетике Викторианской эпохи. Смешной Марк Руффало, неузнаваемый Уиллем Дефо, криповые танцы и общая атмосфера безумия прилагаются.

***
Стальная хватка (The Iron Claw, 2023)
Рейтинг: КП 8,0 / IMDb 8,3 / Skalkino 7,5
Жанр: биография, спорт, драма
Режиссер: Шон Дуркин
В ролях: Зак Эфрон, Джереми Аллен Уайт, Харрис Дикинсон, Мора Тирни, Лили Джеймс и др.
Даже если вам не интересен рэслинг, все равно стоит посмотреть эту необычную спортивную драму. Вдохновляющая история с гигачадом набравшим нереальную форму Заком Эфроном, в которой вместо клише о борьбе и успехах главный герой сталкивается с жизнью - основано на реальной трагической истории семьи атлетов.

***
Зона интересов (The Zone of Interest, 2023)
Рейтинг: КП 7,0 / IMDb 7,6 / Skalkino 7
Жанр: драма, биография, история, арт-хаус
Режиссер: Джонатан Глейзер ("Побудь в моей шкуре")
В главных ролях: Кристиан Фридель и Сандра Хюллер
Практически безсюжетный фильм, который очень эстетично показывает будничные дни семьи фашиста – главный герой комендант концлагеря Освенцим. Весь ужас тут где-то между строк и в контексте – мы не видим зверств, все происходит на заднем плане и за забором, но отстраненность и безучастность семьи пугает. Тот случай, когда степень вовлеченности в фильм зависит от вашего воображения и эмпатии.

***
Американское чтиво (American Fiction, 2023)
Рейтинг: КП 7,3 / IMDb 7,6 / Skalkino 7
Жанр: драма, комедия
Режиссер: Корд Джефферсон
В ролях: Джеффри Райт, Стерлинг К. Браун, Джон Ортис, Адам Броди, Кит Дэвид и др.
Еще один оскаровский номинант. По сюжету интеллигентный чернокожий писатель в качестве шутки пишет роман о тяжелой жизни афроамериканцев, совершенно чуждой ему – но вдруг книга становится успешной, и ему приходится решить, подыгрывать или нет. Хорошая сатира с тонким юмором и Джеффри Райтом, которому давно уже надо было дать главную роль.

***
Следующий гол – победный (Next Goal Wins, 2023)
Рейтинг: КП 6,5 / IMDb 6,5 / Skalkino 6,5
Жанр: спорт, комедия, драма
Режиссер: Тайка Вайтити
В ролях: Майкл Фассбендер, Рэйчел Хаус, Тайка Вайтити, Уилл Арнетт, Элизабет Мосс и др.
Спортивная комедия о неудачливых футболистах из Новой Зеландии Американского Самоа, которые прославились самым разгромным счетом 32-0 в официальных отборочных к чемпионату мира. Пытается их обучить неуравновешенный тренер в исполнении Майкла Фассбендера (кажется, впервые в комедийном жанре). Но оказывается, что ему самому есть чему у них поучиться. Добрый фильм с фирменным глупо-милым юмором Тайки Вайтити на раз.

***
А какие фильмы за последнее время понравились вам? Делитесь в комментариях.
Наш канал о кино: Все о кино
Мой авторский канал: Skalkin Советует

Google объявила о ребрендинге своего ИИ-бота Bard, который теперь официально называется Gemini. На основе этого бота создали Android-приложение с аналогичным названием- Gemini, позволяющие ознакомится с функционалом ии. После установки на устройство с OS Android ИИ-бот Gemini заменяет голосового ассистента Google.
Но придется расстроить яблоководов, ведь приложение не доступно для iOS. Вероятно, из-за того, что пользователи iPhone всё равно не могли бы задействовать бота Google в качестве помощника по умолчанию. Однако владельцы устройств Apple могут получить доступ ко всем ИИ-функциям в приложении Google.
Стоит напомнить, что ранние концепты Gemini представили еще в декабре 2023. Уже тогда заявлялось, что Gemini передовой мультимодальный искусственный интеллект Google, созданый в результате совместных усилий объединенных лабораторий DeepMind и Brain AI, который стоит на плечах своих предшественников, обещая предоставить более взаимосвязанный и интеллектуальный набор приложений.
Сама же модель Gemini способна обрабатывать различные типы данных, такие как текст, изображения, аудио и видео. Он поставляется в трех версиях : Ultra превосходно справляется с многогранными задачами и будет доступен в Bard Advanced Pro предлагает баланс производительности и эффективности использования ресурсов, уже интегрированный в Bard для текстовых подсказок. Nano, оптимизированный для развертывания на устройстве, доступен в двух размерах и оснащен аппаратной оптимизацией, такой как 4-битное квантование, для автономного использования на таких устройствах, как Pixel 8 Pro.
В основе бесплатной общедоступной версии ИИ-бота лежит большая языковая модель Gemini Pro. Чтобы получить доступ к самой мощной языковой модели Google Gemini Ultra, придётся оформить подписку Gemini Advanced, которая входит в пакет Google One AI Premium стоимостью $20 в месяц. Подписка также включает в себя 2 Тбайт облачного хранилища и другие возможности
Всем привет, меня зовут Сергей, я ведущий системный аналитик в IT с опытом более 7 лет, в основном, в различных крупных ФинТех проектах и в заказной разработке. Хочу поделиться своим опытом тут, на Пикабу (видимо, наступила пора не только читать, но и писать и постараться принести этим пользу сообществу).
Сегодня расскажу в целом про профессию системного аналитика (СА), чем мы занимаемся, какую пользу приносим и насколько это сейчас востребовано на рынке.
Системный аналитик - это связующее звено между заказчиком, каким бы он не был, и технической частью команды разработки. Если очень коротко - то его главная цель преобразовать обширный, и порой такой непонятный язык бизнес-заказчика в конкретные, выверенные требования. Т.е. уйти от "Я хочу получить свой сайт с функционалом маркетплейса.. ну как вон там, у ОЗОН" и прийти к "Требуется разработать систему.." и тут ТЗ на *дцать страниц.
Т.е. результатом работы СА становятся формализованные требования в формате ТЗ или любом другом принятом на проекте виде (это могут быть просто набросанные в Jira или Confluence предложения, являющиеся требованиями. Т.е. не нужно пугаться, что это прям всегда огромные, сложные и зубодробительные документы по ГОСТу, как дипломная работа - как раз этого почти и нет, разве что на каких-то госпредприятиях).
Кроме этого отвечаем за улучшение работы системы, обеспечиваем её эффективную работу для успешного выполнения целей заказчика и пользователей. Обязаны понимать тонкости и нюансы работы своих систем и возможные ограничения реализации вызванный ими, чтобы подсвечивать это заказчикам, корректировать их пожелания и требования с учетом особенности системы.
И что самое интересное и важное лично для меня в этой профессии, что тут можно (и нужно) реализовать как свои творческие, так и свои технические способности, потому что она находится на стыке этих двух сфер. И hard skills очень важны, но и без soft skills совсем никуда (кстати, если вы вдруг собираетесь сменить профессию и\или войти в IT с нуля, если у вас есть хорошие soft skills, то даже при минимальных хардах - вам будет проще. Потому что последним научиться можно и не так уж сложно, а вот взрастить в себе "мягкие" заметно тяжелее, хотя тоже возможно).
И что больше всего меня радует в последние 2-3 года - с нами, как с аналитиками в частности и с командой разработки в целом, наконец научились работать заказчики. Они уже знают, чего хотят, знают как эти хотелки формализовать таким образом, чтобы нам было проще понять и реализовать (некоторые заказчики настолько крутые, что в целом могут и сами ТЗ на раз-два написать). Плюс почти на всех проектах собрались полностью укомплектованные команды со всеми закрытыми позициями. Т.е. теперь системному аналитику не приходится выполнять функцию и бизнес-аналитика и проектировщика, и тестировщика и еще специалиста второй линии поддержки для полного счастья. Есть возможность полностью сконцентрироваться на том, что тебе нравится - для меня это, например, описание технической части, интеграции между системами. Можно даже не общаться с заказчиками, если нет такого желания, так как для этого есть бизнес-аналитик и PO от которых тебе и поступают требования, прошедшие первую стадию формализации.
Всё вышесказанное применимо, опять-таки, к сфере ФинТех (банки, страховые, прочие крупные финансовые организации). Про другие сферы мало что могу сказать, знаю, что и там подвижки есть в этом направлении.
По поводу востребованности - на данный момент ощущается сильная нехватка квалифицированных специалистов, уровня хотя бы middle\middle+ даже среди известных мне проектов. Если говорить по поводу джуниорских или стажерских позиций, то тут ситуация заметно хуже, не буду скрывать, и войти сейчас в разы тяжелее, чем пару лет назад.
Солидную часть в это положение внесли бесконечные (и не всегда очень полезные) курсы, да простят меня geekBrains'ы и иже с ними, которые за последний только год подготовили несколько тысяч начинающих специалистов, а суммарно по всем образовательным площадкам вырисовывается очень большое число людей, которым пообещали работу после курсов и теперь они в поиске. Поэтому на позиции начального уровня конкуренция большая, действительно. Однако! Если хорошо подготовиться, изучить те темы, которые почти нигде не освещаются (в основном это как раз техническая часть, различные виды интеграции), составить качественное резюме и написать сопроводительное письмо - шансы сильно повышаются, доказано на моей практике в том числе.
Вводный пост получился заметно больше, чем я хотел (еще и без картинок) - простите, увлекся. Если кто-то осилил до этого момент - крайне признателен. Еще более признателен буду вопросам по карьере\профессии\чему угодно связанному со сферой IT - постараюсь ответить на всё.
В следующей части расскажу в целом про команду - какие есть позиции, кто чем занимается и как устроен процесс разработки любой системы или продукта.
P.S. Если заинтересовались - переходите в мой телеграмм-канал , там также делюсь разным про профессию. Если кто-то хочет более хардовой инфы, про интеграцию и прочие сложные штуки - читайте последние посты)
P.P.S: Ну и как принято на пикабу - первый пост, кидайте тапками, подписывайтесь, все дела.
Всем привет.
Настала пора наконец закончить с прелюдиями и перейти к рассказу про один из самых важных навыков системного аналитика - REST. Больше важны навыки практического применения\проектирования, но и теория тоже важна. Как минимум для прохождения собеседования, потому что значительная часть вопросов приходится как раз на интеграцию и знание REST в том числе.
В следующем посте разбавлю серию только теоретических - практикой. Приведу шаблон того, как можно описывать API.
REST
Representational State Transfer (REST) в переводе — это передача состояния представления.
Сам по себе REST – это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Архитектурный стиль – это набор согласованных ограничений и принципов проектирования, позволяющий добиться определённых свойств системы.
И у него есть определенные принципы, которые важно понимать и применять при проектировании системы.
В рамках данного принципа самое важное - это отделение клиента и сервера. Клиент - это интерфейсная часть (уровень представления), сервер - это центральное звено системы, на котором реализованы все основные функции системы (наш backend). Более подробно рассмотрено в части 6 этой серии.
Это понятие означает, что сервер не должен хранить информацию о состоянии клиента, в том числе информацию о предыдущих запросах клиента, а клиент не должен знать ничего о текущем состоянии сервера.
Это не значит, что у них вообще нет состояния, но они не отслеживают состояние друг друга (что очень удобно, т.к. избавляет нас от необходимости держать постоянное неразрывное соединение между двумя системами).
Поэтому каждый запрос рассматривается индивидуально, как будто бы не было ничего до, и не будет после. Соответственно клиент в этом случае, обязан предоставить все необходимые данные для успешного выполнения запроса. Это, пожалуй, почти единственная логика, которая должна быть на клиенте.
Принцип гарантирует, что между клиентом и сервером существует общий язык (интерфейс), с помощью которого они будут понимать друг друга. Т.е. клиент посылает понятные серверу запросы, использую конкретные HTTP-методы, сервер посылает ответ в понятном клиенту формате.
Это достигается через несколько субограничений:
Идентификация ресурсов
В терминологии REST что угодно может быть ресурсом — HTML-документ, изображение, информация о конкретном пользователе - то, чему можно дать имя. Каждый ресурс должен быть уникально обозначен постоянным идентификатором. «Постоянный» означает, что идентификатор не изменится за время обмена данными, и даже когда изменится состояние ресурса. Если ресурсу присваивается другой идентификатор, сервер должен сообщить клиенту, что запрос был неудачным и дать ссылку на новый адрес.
Тут важно понимать, что в REST (в идеале, по крайней мере), ресурс может быть только существительным, а не глаголом. Потому что за "глагол", т.е. действие - отвечает конкретный метод.
2. Управление ресурсами через представления
Второе субограничение «унифицированного интерфейса» говорит, что клиент управляет ресурсами, направляя серверу представления, обычно в виде JSON-объекта, содержащего контент, который он хотел бы добавить, удалить или изменить. В REST у сервера полный контроль над ресурсами, и он отвечает за любые изменения.
Когда клиент хочет внести изменения в ресурсы, он посылает серверу представление того, каким он видит итоговый ресурс (а для этого, сервер сначала должен предоставить эту информацию клиенту). Сервер принимает запрос как предложение, но за ним всё так же остаётся полный контроль.
3. Самодостаточные сообщения
Самодостаточные сообщения — это ещё одно ограничение, которое гарантирует унифицированность интерфейса у клиентов и серверов. Только самодостаточное сообщение содержит всю информацию, которая необходима для понимания его получателем. В отдельной документации или другом сообщении не должно быть дополнительной информации.
В данных запроса должно быть указано, нужно ли кэшировать данные (сохранять в специальном буфере для частых запросов). Если такое указание есть, клиент получит право обращаться к этому буферу при необходимости.
Это нужно для того, что максимально ускорить обработку запроса от клиента. Для примера, если нам нужно часто получать информацию о пользователе (а сама информация о пользователе меняется достаточно редко, что важно), то мы можем закэшировать эту информацию.
Т.е. стандартный запрос выглядит условно так: Фронт -> микросервис адаптер к фронту -> какой-нибудь микросервис MDM системы пользователей -> база где лежат пользователи и потом обратный путь. Это не прям мгновенно всё происходит. Что мы делаем - например, наш фронт прислал запрос GET /user/121, мы проделали этот путь, описанный выше, но еще и сохранили эти данные в кэше на уровне микросервиса-адаптера. В следующий раз, когда фронт вызовет метод GET /user/121, наш путь будет намного короче и быстрее - всего лишь от фронта к нашему же микросервису в кэш и сразу обратно.
Тут есть множество нюансов, которые нужно учесть - но в целом полезный инструмент.
Система слоев предполагает наличие большего количества компонентов, чем клиент и сервер. В системе может быть больше одного слоя. Тем не менее, каждый компонент ограничен способностью видеть только соседний слой и взаимодействовать только с ним.
Но что самое замечательное, при добавлении новых слоев между клиентом и сервером - их не нужно дорабатывать. Т.е. не важно, если у нас архитектура выглядит как просто "Клиент" -> "Сервер", или "Клиент" -> "Прокси" -> "Балансировщик" -> "Несколько серверов" - их логика не меняется (тут разработчики могут меня поправить или дополнить, буду благодарен).
Что-то вроде того:

Еще есть отдельный принцип "Код по требованию", который подразумевает то, что клиент может получить с сервера прям "кусок кода" (условно), который ему необходимо выполнить у себя.
Звучит интересно, но честно, ни разу не сталкивался, поэтому не могу что-то детальное рассказать.
P.S.: В следующих постах расскажу про best practices, связанных с именованием эндпоинтов и прочими полезными штуками для проектирования своих апишек.
По традиции - буду признателен за вопросы про карьеру\профессию\чему угодно связанному со сферой IT - постараюсь ответить на всё.
P.P.S.: Также веду телеграмм-канал, в котором делюсь разным про профессию и про свой путь в ней. Есть и хардовая информация (асинхронные, синхронные интеграции, примеры ТЗ\шаблонов написания микросервисов), так и более софтовая - см. закрепленный дайджест.
Продолжаем список тем и вопросов, ответы на которые нужно знать, чтобы пройти собеседование на позицию джуниора.
Еще небольшое предисловие - судя по комментариям к предыдущему посту, не все понимают, что не обязательно, что ВСЕ эти вопросы попадутся вам одновременно. Это наиболее вероятные вопросы, которые вам зададут ( по крайней мере актуально для ФинТех сферы). Ну и опять же, всё очень зависит от интервьюера, его опыта и тех целей, которые ему поставило руководство компании\проекта, на интервью.
Есть еще очень хороший подход к интервью, когда ты задаешь вопросы по каждой теме, и чем больше правильных ответов дает соискатель - тем глубже ты копаешь в эту тему, пока его знания по вопросу не иссякнут. Это позволяет не просто прогнать человека по заданным темам, которые нужны компании, но и в целом представить его уровень более детально (плюс так куда интересней для всех участников собеса).
Более техническая часть собеса:
Архитектурно-интеграционные вопросы:
Что такое клиент-серверная архитектура? Что такое тонкий и толстый клиент, чем они отличаются? (Тут никто не ждет прям уверенных технических знаний и деталей реализации того или иного подхода, но в общих чертах знать нужно).
Что такое HTTP? Какие основные методы HTTP вы знаете? Какие функции они выполняют? Расскажите про структуру HTTP-сообщений. (Если вы перечислите основные методы и скажете, что у сообщения есть заголовок, строка и тело - это уже, в целом, неплохо. Если знаете больше этого, вообще замечательно).
Что такое REST? Какие основные принципы у него есть? Какие методы есть в REST? В чем разница между GET и POST запросом?
В каких местах (четырех) мы можем передать атрибуты в запросе? (Path, Body, Query, Header).
Что вы знаете про концепцию CRUD?
Что такое идемпотентность? Какие методы являются идемпотентными?
Что такое синхронные и асинхронные интеграции? В чем между ними разницы? С помощью чего можно их реализовать?
Можно ли реализовать асинхронную интеграцию через REST? (Вряд ли этот вопрос будут задавать, если вы не ответите на предыдущие. Это скорее со звездочкой и не обязательный)
Что такое очередь сообщений? Как передаются сообщения через очередь? Какие очереди сообщений есть и в чем между ними разница? (Если расскажете про PUSH/PULL-стратегии - плюсик в карму обеспечен)
Что такое гарантированная доставка сообщений и какими механизмами ее можно обеспечить?
Какие вообще способы интеграции существуют? С какими из них приходилось работать? В чем их преимущества и недостатки? (Интеграция через обмен файлами, через общую БД, через веб-сервисы и обмен сообщениями)
Базы данных:
Что такое базы данных? Какими они бывают? С каким БД приходилось работать?
Что такое ER-диаграммы? Приходилось ли их проектировать?
На какой уровень оцениваете свой уровень владения SQL? С какими инструментами по работе с БД знакомы?
Ну тут могут конечно и про формы нормализации спросить, но уже лишнее, как по мне. Я обычно спрашиваю больше про опыт проектирования БД в целом. Приходилось ли проектировать базу в целом и под конкретные задачи в частности, каким образом это было сделано.
Различные задачки:
Тут вообще кто во что горазд в плане придумывания задач. В среднем, вам дадут умозрительное задание на проектирование какой-либо системы и попросят выделить основные классы этой системы (возможно, предварительно нужно будет собрать требования с интервьюера), спроектировать интеграцию между частями этой системы/интеграцию с внешними системами (плюс объяснить выбор технологии интеграции). Основной упор на ваши размышления, в основном именно в подобных вопросах можно понять уровень соискателя, потому что все остальные можно заучить. А тут проверяется именно понимание того, о чем вы рассказывали предыдущую часть собеседования.
Небольшие оффтопные вопросы:
Расскажите, что такое авторизация, аутентификация и идентификация? Чем они отличаются друг от друга? (почему-то один из самых любимых вопросов некоторых людей)
Чем верификация отличается от валидации?
Приходилось ли работать с JIRA\Confluence?
Конечно, так получается, что если вы знаете ответы на все эти вопросы, или больше 80-90%, то как будто бы вы уже не джун. Но чем лучше вы отвечаете, чем лучше вы соответственно подготовились - тем больше вам зададут вопросов (в нормальном интервью, а не шаблонном). Что очень сильно повысит ваши шансы получить оффер и выделиться среди других кандидатов.
Поэтому, конечно, можно, и зачастую нужно, пробовать собеседоваться, при наличии знаний, которые позволят ответить вам на половину из этих вопросов - шансы всё еще будут, плюс вы получите опыт прохождения собеседований (что само по себе очень важно) и определите те темы, про которые часто спрашивают, но в которых вы пока еще не сильны.
P.S.: По традиции - буду признателен за вопросы про карьеру\профессию\чему угодно связанному со сферой IT - постараюсь ответить на всё.
P.P.S.: Также веду телеграмм-канал, в котором делюсь разным про профессию и про свой путь в ней. Есть огромное количество постов на тему софт-,хард-скиллов и про карьеру в целом - см. закрепленный дайджест.
❕Сегодня хочу поговорить на очень спорную тему, я бы даже сказал философскую. Отчасти из-за нее, возникает очень много непонимания между коллегами, работающими в одном и том же (казалось бы) "АйТи", но почему-то имеющих очень разное представление о процессах разработки и о том, что каждая роль команды должна выполнять. Особенно это часто всплывает в моих постах на этом ресурсе, в комментариях - это такой хороший срез из разных уголков нашего отечественного IT.
И это большая тема для постов и для рассуждений. Но сегодня сосредоточимся на небольшой части этой темы, касающейся непосредственно системных аналитиков.
Давайте поговорим о том, какие есть подходы к написанию ТЗ и степени его проработки на примере описания тех же микросервисов\их методов.
❕Представим, что мы является системным аналитиком в команде и нам поставили задачу - реализовать личный кабинет пользователя.
Т.е. когда пользователь нажимает на какую-нибудь иконку профиля в приложении или там на кнопку "Профиль" - ему должна открываться экранная форма, в которой ему отрисовывается определенный набор полей и эти поля заполняются информацией. Также допустим, что у нас сам объект "Пользователь" уже есть в системе, атрибутивный состав понятен и нужно только реализовать процесс получения данных о пользователе на фронт по его идентификатору (ТЗ на фронт, на экранную форму и на интеграцию его с бэком опустим).
Какие есть варианты написания ТЗ для данной задачи?
1️⃣Самый минимальный уровень детализации. Это когда системный аналитик просто ставит задачу на разработку Джире (ну или в рамках небольшой страничке в конфлю\ворде, в зависимости от того, как принято) и в постановке этой задачи пишет что-то вроде "Требуется реализовать процесс получения данных о пользователе и передачу ее с бэка на фронт по REST-запросу. Со стороны фронта требуется создать новую экранную форму приложения - "Личный кабинет" или "Профиль пользователя". Со стороны бэка требуется реализовать новый метод, который будет использовать фронт для запроса информацию по пользователю (и, скорее всего, перечисляет набор полей, которые должны передаваться на фронт в формате "Фамилия", "Имя" и т.д.)". Усё
Я не утрирую - это один из вариантов реального "ТЗ" на эту задачу. Плюсом к этому может быть описан пользовательский сценарий в вольном формате или в формате UC (и то это будет в лучшем случае). Т.е. по сути в рамках такого процесса разработчик получает из полезной информации - только состав полей, передачу которых ему нужно реализовать по запросу с фронта, и то только их наименования.
2️⃣Вариант с немного лучшей детализацией. В этом формате системный аналитик уже пишет ТЗ в каком-либо формате, в рамках которого указывает, что: "Требуется реализовать новый метод GET /users/, указывает полноценно параметры, которые данный метод должен потреблять на вход и параметры, которые он должен отдавать на выходе." Плюс может описать, также как в предыдущем пункте, верхнеуровневый сценарий взаимодействия с этим методом.
Уже чуть лучше и чуть больше полезной информации для разработчика, правда?
3️⃣Вариант с достойной реализацией. Этот вариант обычно используется на большинстве проектов ФинТеховских и я считаю его достаточным для того, чтобы написать хорошее, качественное ТЗ и разгрузить разработчика так, чтобы он не думал о деталях реализации, хотя бы алгоритмических и системных (то, к чему нужно стремиться со стороны СА, имхо).
В рамках этого варианта будет всё из предыдущих + будет полностью описана логика работы данного метода, как бизнесовая, так и техническая. Будут описаны все корнер-кейсы, правила обработки ошибок, варианты того, что может вернуться в ответе (кроме успешного ответа, еще и все варианты негативных). Логика может быть описана или на уровне псевдокода или просто словами - конкретно это уже не имеет значимой роли, главное то - что эта логика пошагово и подробно описана.
Пример подобного описания я приводил ранее в своих постах. Я топлю всегда как минимум за этот вариант описания любых задач - что бэковых, что фронтовых, любых. Избавить разработчиков от лишней работы с точки зрения проработки алгоритмов и логики, если мы вполне это можем сделать сами - у них хватает работы и так, можете поверить.
4️⃣Более полноценный вариант придумать не могу =)
Плюсом к 3 пункту дополнительно описывается еще и swagger-спецификация микросервиса в целом и конкретных эндпоинтов в частности. Кроме того, что это просто удобно, наглядно и очень детально - эту спецификацию разработчики могут использовать, чтобы сконвертировать ее напрямую в готовый код с расписанными классами и эндпоинтами, останется "только" докрутить бизнес-логику и метод готов (Тут просьба поправить меня коллегам, которые более глубоко погружены в разработку - так ли это или есть еще какие-то бенефиты для разработчиков. Могу в этом предложении быть не прав, пишу исходя из того, как мне это объясняли).
Кроме этого, такой подход хорошо использовать в парадигме swagger-first, особенно когда у вас есть насыщенный и активный процесс кросс-командной разработки. Отдать другой команде сваггер аналитику куда проще и быстрее, чем отдать полноценное ТЗ на сервис - хотя бы просто по времени. А большего им и не нужно (потому что им пофиг на то, как работает ваш сервис внутри, главное понять, как вас вызывать и что вы вернете в ответе).
А если это все еще и использовать в связке с asciidoc-документацией, выкладывании ее в git- ммм, сказка просто. Как вспоминаю об этих процессах, наворачивается скупая слеза ностальгии - как же это было здорово! Жаль, что я встретил это ровно в одном проекте, а во всех последующих так и не смог продавить внедрение чего-то похожего.
И я вполне понимаю почему (например, очень удобно когда ты почти не тратишь время и ресурсы на написание глубокого ТЗ - достаточно пары фраз, а дальше нехай разработчик разбирается. И чем дольше пишешь в таком режиме, тем больше он тебя поглощает). Но кроме этого есть и множество других, о чем поговорим в следующий раз.
А с какими процессами и подходами работаете вы?
P.S.: По традиции - буду признателен за вопросы про карьеру\профессию\чему угодно связанному со сферой IT - постараюсь ответить на всё.
P.P.S.: Также веду телеграмм-канал, в котором делюсь разным про профессию и про свой путь в ней. Есть огромное количество постов на тему софт-, хард-скиллов и про карьеру в целом - см. закрепленный дайджест.


Оборудование:
-телескоп Sky-Watcher BKP150750
-монтировка Celestron CG-4
-корректор комы SharpStar 0.95x
-фильтр ZWO IR-cut
-астрономическая камера ASI ZWO 183MC
Место съемки: Анапа, двор.
Моя астротелега: t.me/ruslan_ilnitsky

Оборудование:
-объектив Samyang 16\2.0 ED Canon EF
-камера Canon 550Da
-фотоштатив
Выдержка 10 секунд, ISO 3200.
Место съемки: село Териберка, Мурманская область.
Моя астротелега: t.me/ruslan_ilnitsky


Оборудование:
-телескоп Sky-Watcher BKP150750
-монтировка Celestron CG-4
-корректор комы SharpStar 0.95x
-фильтр ZWO IR-cut
-астрономическая камера ASI ZWO 183MC
Место съемки: Анапа, двор.
Моя астротелега: t.me/ruslan_ilnitsky

Оборудование:
-телескоп Celestron NexStar 8 SE (оптическая труба)
-монтировка Celestron CG-4
-линзоблок Барлоу 2х НПЗ
-корректор атмосферной дисперсии ZWO ADC
-светофильтр ZWO IR-cut
-астрономическая камера ASI ZWO 183MC.
Сложение 5000 кадров из 60054.
Место съемки: Анапа, двор.
Моя астротелега: t.me/ruslan_ilnitsky

Оборудование:
-фотообъектив Sigma AF 4.5mm f/2.8 EX DC HSM Circular Fisheye
-камера Canon 550Da
Место съемки: Кавказская горная обсерватория ГАИШ МГУ, Карачаево-Черкесская Республика.
По ссылке также доступна сферическая панорама 360°.
Моя астротелега: t.me/ruslan_ilnitsky

Оборудование:
-объектив Samyang 135mm f/2 ED UMC Canon EF
-камера Canon 550Da
-монтировка Sky-Watcher AZ-GTi (EQ-режим).
Место съемки: Кавказская горная обсерватория ГАИШ МГУ, Карачаево-Черкесская Республика.
Моя астротелега: t.me/ruslan_ilnitsky


Оборудование:
-объектив Samyang 16/2.0 ED Canon EF
-камера Canon 550Da
-фотоштатив.
Место съемки: Кавказская горная обсерватория ГАИШ МГУ, Карачаево-Черкесская Республика.
Моя астротелега: t.me/ruslan_ilnitsky

Оборудование:
-объектив Samyang 135mm f/2 ED UMC Canon EF
-камера Canon 550Da
-монтировка Sky-Watcher AZ-GTi (EQ-режим).
Место съемки: Кавказская горная обсерватория ГАИШ МГУ, Карачаево-Черкесская Республика.
Моя астротелега: t.me/ruslan_ilnitsky

Оборудование:
-объектив Samyang 16/2.0 ED Canon EF
-камера Canon 550Da (15с, ISO 1600).
-фотоштатив.
Место съемки: Кавказская горная обсерватория ГАИШ МГУ, Карачаево-Черкесская Республика.
Моя астротелега: t.me/ruslan_ilnitsky

Оборудование:
-объектив Samyang 16/2.0 ED Canon EF
-камера Canon 550Da (20с, ISO 3200).
-фотоштатив.
Место съемки: Кавказская горная обсерватория ГАИШ МГУ, Карачаево-Черкесская Республика.
Моя астротелега: t.me/ruslan_ilnitsky