ТОП - Тёма о программировани – Telegram
ТОП - Тёма о программировани
2.83K subscribers
9 photos
1 file
41 links
Канал о программировании
Реклама - @vlad_0045
Мой личный контакт - @ngArchie

Мой ютуб канал - https://www.youtube.com/@temaProg
Download Telegram
Работяги, поменял фото канала, не теряйте)

Всем хорошего рабочего дня и недели👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥69👍17😍7❤‍🔥3😁1
Введение в паттерны и архитектуру🏠

Работяги! В прошлом опросе тема архитектуры и паттернов набрала больше всех голосов, поэтому буду стараться писать о ней чаще.
Реакт на втором месте, поэтому скоро тоже будет.👨‍💻

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

🧑‍🎓Нам понадобится:

1. «Паттерны объектно-ориентированного проектирования» Эрих Гамма, Ричард Хелм, Роберт Джонсон, Джон Влиссидес — знаменитая книга банды четырех. Кто-то ее списал в утиль, но не я. Считаю ее базовой, нужно лишь адаптировать рецепты под свою область.

2. «Рефакторинг-гуру» — великолепный материал. Как книга банды четырех, но более простым языком и с большим кол-вом примеров(есть и на TS).

3. «Dive Into DESIGN PATTERNS» Oleksandr Shvets — замечательная книга для новичков в архитектуре и паттернах от создателя «Рефакторинг-гуру».

4. Сайт Эдди Османи — топ-труд по шаблонам для фронтендера. У Эдди есть еще и книги, если хотите, можете и их почитать, они хорошие.

5. «Чистая архитектура. Искусство разработки программного обеспечения» Роберт Мартин — последняя в списке, но не последняя по значению.

👨‍💻Теперь инструкция:

1. База-базовая. Читаем книгу «Dive Into DESIGN PATTERNS» Oleksandr Shvets. Читаем всё до главы «Каталог паттернов». Эта часть объяснит нам, что вообще такое эта архитектура, зачем о ней думать, какие базовые критерии есть и где в этом всем паттерны. Расскажет про солид, который станет базой для наших решений.

2. Паттерны. Далее начинаются паттерны. Читаем по одному паттерну с сайта «Рефакторинг-гуру». Смотрим на этом же сайте пример на TS. После этого читаем про него же у банды четырех(там написано максимально сухо и академично, но классический вариант знать надо). После этого смотрим на сайт Эдди Османи, если наш паттерн есть там, то читаем его. В итоге мы получаем следующую картину: понятное описание + пример на TS + классическое описание + адаптация под JS/Frontend. Таким образом у вас будет полная картина о каждом паттерне, останется шлифануть практикой.

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

4. Развиваем. После изучения базы про архитектуру, солида и базового набора паттернов можно переходить к изучению более специфичных паттернов(остальные паттерны с сайта Эдди Османи) и дальнейшему погружению в архитектуру(Чистая архитектура Мартина).

Тут ничего нет про FSD, структуру папок в вашем проекте и т. д. Да, я считаю, что нет смысла строить дворец на фундаменте от сельского туалета, поэтому предлагаю стартовать с базы. После этого вам будет проще видеть полную картину и принимать решения самостоятельно, а не следовать как зомби правилам конкретной методологии.
Please open Telegram to view this post
VIEW IN TELEGRAM
51🔥92👍179❤‍🔥1
Иллюстрация к посту выше

В основе у нас “здравый смысл” - максимально абстрактно.
Потом базовые качества хорошей архитектуры
После уже более конкретные принципы проектирования
Далее еще более конкретные принципы
Потом уже паттерны
Чем дальше от центра, тем больше конкретики, самый крайний уровень это уже кокретные решения, которые строятся на том, что находится внутри.
🔥45👍94
1x1: о фронтенд-разработке в Яндексе

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

Приятного просмотра и хорошего всем дня👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🔥1962
Обратная сторона React

Здарова, работяги!

Как я понял из опроса выше, всем очень интересен React🖼️ и очень интересна архитектура. Поэтому начинаем холиварную тему про архитектуру в приложениях со старым добрым(так ли это?) реактом.

Не буду лить воду, обойдемся без подводочек — такого большого кол-ва страшных приложений, как на React, я больше ни на одной другой технологии не видел. Кто-то пошутит, что просто на других технологиях самих приложений очень мало, особенно на моем любимом Angular💻, вот я их и не видел. В этом есть доля правды, но лишь доля. Даже если смотреть отношение страшненьких проектов к реально хорошим, React в топ не выбьется, по моему опыту. Почему так?🤔

Уже около года я много занимаюсь разработкой на чистом ts 💻 и js 💻. И знаете, что я вам скажу. Это сильно отрезвляет. Да, именно так, отрезвляет. Этот опыт помог мне взглянуть на приложения с React иначе.

У React много проблем, это факт. Но есть одна, которая стала сейчас для меня очень отчетливой. Необычность этой проблемы в том, что она одновременно и его главный плюс. React — библиотека. Да, все так просто. React не фреймворк, а лишь библиотека для построения ui слоя вашего приложения. Только лишь одного слоя — UI.

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

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

Скорее всего, у многих в проекте стоит линтер, скорее всего, у многих в правилах линта есть правило проверки зависимостей в хуках useEffect и подобных. А теперь обратите внимание на те места, где это правило замьючено. После анализа большого числа таких мест я пришел к следующему выводу — чаще всего такие мюты появляются в тех случаях, когда зависимостей слишком много(лишние срабатывания происходят и т. п.), а много их из-за того, что логика в эффекте избыточна, что именно в этом месте вы переборщили и занесли в ваш легкий ui лишнего. Конечно, есть исключения, но их, по моему мнению, сильно меньше. В большинстве же своем это именно проблемные места, которые если еще не болят, то скоро будут, т. к. такие эффекты крайне сложно поддерживать из-за обилия зависимостей, логики, большого кол-ва срабатываний и т. д., поэтому разработчики просто мьютят линтеры и замалчивают проблему.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥766👍6🌭1💯1
Здарова, работяги!

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

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

С того момента прошло уже много лет, но некоторые вещи остаются неизменными. И я сейчас не только про атмосферу, общение и т.д. Я про «узнавание» о предстоящем событии. Как и тогда, в большинстве случаев я узнаю о митапах либо от знакомых, либо уже тогда, когда они прошли. Помню, в сообществе ходили разные инициативы по созданию календаря митапов, чатов, каналов и т.д. Много всего было… До сих пор у меня нет единого инструмента/источника для решения этой проблемы.

Недавно мне закинули два вот таких канала — «Митапочная» и «Хакатоночная». Как я понимаю, основная цель ребят — закрыть этот пробел, предоставить источник, который позволит нам узнавать о событиях своевременно. Если вы как и я любите такие мероприятия - велкам!

Всем продуктивной рабочей недели!
❤‍🔥266👎2
Хо-Хо-Хо, работяги! 🎅🎄

Этот год был очень продуктивным. Рад, что наконец начал стабильно писать посты в канал. В следующем году планирую продолжать это делать и не только...)

Со времен преподавания у меня накопилось много материалов, мыслей и незакрытых идей по теме реакта и архитектуры. В ближайших планах серия материалов(видео+статьи) по реакту и его экосистеме - базовая часть и продвинутая. Работу я уже начал. Постараюсь не затягивать)

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

А уже второго января мы с ребятами из пк holyJs уже запланировали стрим. Буду рад вас видеть)

Это естественно не все, но пока не буду раскрывать, сохраню интригу.

Поздравляю всех вас! Пусть вам хватает сил и здоровья на все, что вы запланируйте. Берегите себя и своих родных. Продуктивного 2025!!!🎄
32🎄19🔥8👍6🎉4❤‍🔥1
Здарова, работяги!

Я к вам с интересным докладом, и нет, это не реклама. Стейт-менеджеры занимают достаточное важное место во фронтенде, сильно влияют на архитектуру приложений(зависит от использования, конечно, но по канону должны отвечать/организовывать отдельный слой). Интересно посмотреть, что Дима подготовил в своем докладе, как я знаю, времени он посвятил много. Давайте поддержим его)
🔥36👏54🎉1
Здарова, Работяги!

Спешу к вам с интересными новостями. Завтра будет целых два стрима с моим участием!
Первый - Тяжелое утро с HolyJS. Как обычно поболтаем с ребятами из ПК Холли о технологиях, новостях в мире JS и тд.
После вместе с Димой(SiberiaCanCode) поразгоняем про инженерную культуру, базу и куда стоит смотреть, чтобы не застрять на покраске кнопок.

Подключайтесь, задавайте вопросы, буду очень рад вас видеть.
Всем хороших выходных!
2🔥31741👏1
Здарова, работяги!

В выходные было два стрима. Не часто я выхожу в таком формате, но мне понравился. Серьезно задумался о лайвкодинге в формате стримов. Выходной день, кофеек, чиловая музыка и пет-проект... Ммм... Красота! Что думаете, было бы вам интересно?

Но! Обучение других — это отлично, но оно невозможно без обучения себя. Так как рано или поздно информация, которой вы можете поделиться, закончится, и вы превратитесь в бубнящий одно и тоже проигрыватель. Чтобы пластинку не заедало, нужно учиться.

Еще перед зимними праздниками я писал о том, что решил пойти учиться тимлидству/менеджерству. Долго я выбирал, читал отзывы, сравнивал программы и спрашивал у своих знакомых, которые уже преисполнились в этой роли. После долгих выборов определился. Решил, что пойду на курс «Команда. Инструменты управления» от Стратоплана.

Уверен, что для многих тема выбора дальнейшего пути развития актуальна. Кто-то в итоге пойдет в ветку IC(individual contributor), а кто-то, как и я сейчас, попробует себя в роли тимлида. Поэтому я решил, что периодически буду делиться тем, что я узнал из курса, какими-то открытиями, тем, что мне нравится, что не нравится и т.д., и т.п.. Надеюсь, информация вам будет интересна и поможет в вашем развитии.

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

Перед стартом курса меня попросили пройти «вступительные». Состояло оно из решения кейса, эссе и теста «Управленческой зрелости». Хз, мб я еще маленький лид, но кейс оказался не самым простым. По итогам этих заданий проходило интервью, где мне задавали различные вопросы по моим решениям, и что самое главное, рассказали возможный вариант решения кейса с объяснениями. В итоге собеседующий определил мой уровень, что, как я понял, поможет лучше подобрать подходящую группу.

Процесс поступления мне понравился, но пока попридержу свои эмоции, т.к. само обучение только впереди.

Всем продуктивной недели!
🔥49👍19🫡94
ТОП - Тёма о программировани
Здарова, работяги! В выходные было два стрима. Не часто я выхожу в таком формате, но мне понравился. Серьезно задумался о лайвкодинге в формате стримов. Выходной день, кофеек, чиловая музыка и пет-проект... Ммм... Красота! Что думаете, было бы вам интересно?…
Всем привет!

Как и обещал, возвращаюсь с рассказом про обучение. Пока прошел только первый модуль, но уже есть о чем рассказать.

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

Темы:
- DISC
- Работа с ожиданиями
- Модель PAEI
- Жизненый цикл компании и его связь с PAEI
- Психологическая безопасность в команде
- Доверие и прозрачность
- BHAG
- Обратная связь

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

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

На курсе практика устроена так. Все студенты поделены на группы по 6-7 человек. В начале каждого занятия(1ч) в группе распределяются роли:
- модератор - управляет дискуссией
- гейт-кипер - следит, чтобы в обсуждении не ушли не в ту сторону
- тайм-кипер - следит за временем, чтобы группа успела выполнить задание
- писарь(я его так называю) - ведет лог встречи

Группа стабильна, люди всегда одни, а вот роли каждое занятие ротируются, что позволяет попробовать себя в разной роли.

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

Пример: вы стали тимлидом команды, где все поругались, а еще план не выполняется. Сотрудники выглядят так-то и так-то. Какие ваши первые шаги? Почему? Что нужно сделать, чтобы решить конфликты? Как успеть план?

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

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

Из практики сформировал такой совет. При решении подобных кейсов в реальной жизни старайтесь чаще задавать себе вопрос: "А как на эту ситуацию смотрит другой ее участник?". Это позволяет лучше понять ситуацию и принять более подходящее решение. Именно подходящее, а не верное.

Такая связка теории и практики в группах оказалась очень интересной. Сейчас проверяю отработанные идеи в реальной жизни. О каждой, как и писал выше, напишу отдельно, как будут какие-то результаты)
🔥43👍20❤‍🔥92👎1
Всем привет!

Закончился мой трехнедельный отпуск, пора возвращаться к делам. Уже совсем скоро стартует ШРИ 2025. И, конечно же, там будут лекции по реакту. И, конечно же, мы снова внесли в них много изменений. Первая, как обычно, будет базовой, а вот вторая и третья будут посвящены архитектуре приложения, в котором используется реакт.

Я в этом году сфокусирован именно на второй и третьей лекции. Хочется, чтобы лекция не была сферическим конем в вакууме, а действительно была полезной и решала боли реальных проектов. Поэтому хотел бы узнать у вас: какие вопросы в рамках темы «архитектура приложения с реактом» / «построение приложения с реактом» вас волнуют? Какие проблемы есть у вас в этой области?

Пишите в комменты к сообщению, а я постараюсь разобрать в лекции эти вопросы.

С датами самой лекции вернусь попозже)
🔥5214👍3🎉21
Итоги второго модуля.
Всем привет!

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

Модуль называется «Тимлид и бизнес». Я бы его немного переименовал, чтобы лучше раскрыть вам суть этого модуля: «Конструктивное взаимодействие с командой и рук-лем». Это упрощенная формулировка, которая позволит нам сконцентрироваться на основных идеях.

Для того чтобы лиду(да на самом деле кому угодно, для обычного разработчика это тоже очень важно) конструктивно взаимодействовать с командой, рук-лем и т.д., чтобы грамотно выполнять свою в целом, очень важно понимать, кто чем занимается. И нет, формулировка «разработчик пишет код, тимлид руководит разработчиками, рук-ль направления руководит лидами и т.д.» тут нам не подойдет. Почему? Просто знания иерархии не позволят нам как минимум доносить наши мысли на языке собеседника, не говоря уже про корректную работу. Нам очень важно понимать, на каком уровне абстракции находятся те или иные роли, чтобы мы могли понять их цели, подобрать понятные для этой роли аргументы. Уверен, что вашему СТО совершенно без разницы, какой стейт-менеджер вы выбрали, т.к. у него другой уровень абстракции, другой масштаб целей и решений. Давайте кратко опишу эти уровни:

Cовладельцы, СЕО — Стратегия

1. С помощью какой стратегии мы превратим инвестиции в прибыль?
2. Это на каком рынке и с помощью каких конкурентных преимуществ?
3. Как это позволит нам создать доходный и устойчивый в долгосроке бизнес?
4. Какие финансовые и другие показатели мы таким образом хотим достичь?

CTO, COO, CPO, СМО — С-level — Концепт. Верхнеуровнево.

1. Какой продукт/сервис мы для этого создадим и как будем доставлять
ценность-опыт клиенту? (верхнеуровнево)
2. Какая оргструктура, инфраструктура и специалисты нам для этого нужны?
3. Какие бизнес-процессы (верхнеуровнево) за какие деньги позволят нам
производить и доставлять клиенту ту ценность-опыт, которую мы хотим?

Рукли направления, рукля команд — Механика. Что именно и как мы делаем согласно концепта.

1. Как именно мы отстроим эти бизнес-процессы?
2. Как и что будут делать какие конкретно люди в какие моменты?
3. Какие планы найма сотрудников для этого?

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

Нужно ли это простому разработчику?

Если вы хотите расти, то точно да, т.к. разработчик — это не переводчик слов в код(с этим уже неплохо справляются инструменты разработки типа курсора и т.д.), а решать проблем, и чем лучше понимаете мотивы ваших «заказчиков» (обобщено), тем лучше вы сможете это сделать.

Если хотите еще глубже понять каждую роль, то советую вам почитать книгу «От разработчика до руководителя».

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

Конструктивная конфронтация. Штука полезная, для старта есть прям готовый алгоритм, который позволит вам начать практиковаться.

Принцип позитивного намерения. Супер принцип, понимание и применение которого позволяет вам не просто «собачиться» и «холиварить», а действительно конструктивно двигаться в разговоре. Ну и этот принцип отлично помогает экономить нервы. Я часто применяю его за рулем — а вдруг тот, кто вас подрезал, не злостный нарушитель, который хочет разбить вашу машину, а спешит в больницу? Может, не стоит на него злиться, а просто пропустить его, пусть спешит дальше.(без перегибов, конечно)

Принцип безоценочности. Это, пожалуй, самое сложное. Но стоит практиковаться.

Принцип аргументации через выгоды собеседника. Принцип до безумия прост, все про это знают, но в момент спора забывают.

Правило формирования устойчивой договоренности. В идеале по SMART.

Это не все принципы, их куда больше, но я бы начал именно с этих. Но, как говорят, знать — это одно, а делать — совсем другое. Действительно, внедрить их в работу куда сложнее, чем просто понять.
2👍30🔥11
ТОП - Тёма о программировани
Итоги второго модуля. Всем привет! Пока я был в отпуске, закончился второй модуль обучения, о котором я подробнее говорил тут. Модуль называется «Тимлид и бизнес». Я бы его немного переименовал, чтобы лучше раскрыть вам суть этого модуля: «Конструктивное…
(продолжение поста выше)
Как тренировать эти принципы?

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

Мне очень сильно помогли занятия в группах, где мы разыгрывали по ролям определенные ситуации. У каждой роли есть свои вводные(цели, мотивы, контекст, черты личности), которые скрыты от других участников. Да, это не реальная ситуация, но очень крутой тренажер, который позволяет вам пройти большое кол-во базовых ошибок в безопасных условиях. Как в тренажерном зале, вы сначала ставите технику с маленьким весом, отрабатываете ее, а уже после повышаете нагрузку. Так и тут.

Надеюсь, пост был для вас полезен. Если у вас есть какие-то вопросы по этим темам — не стесняйтесь и пишите, с радостью отвечу, посоветую книги, материалы.
👍159🔥5
Слои в клиентском приложении

‼️Идеального решения не существует. Руководствуйтесь здравым смыслом.

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

Начнем с вопроса «Зачем?»

🔹 1. Легче поддерживать код
Попробуйте сделать простое упражнение на вашем проекте — посчитайте количество задач на полностью новую функциональность и на доработки/развитие/"любое-другое-взаимодействие" с уже написанным кодом.
Предположу, что у большинства вторая группа будет больше. Деление на слои позволяет сделать поддержку сильно проще и сэкономит вам много нервных клеток.
- Если каждый слой отвечает только за свою задачу, менять что-то в бизнес-правилах, API или в UI можно независимо друг от друга.
- Меньше шансов «сломать что-то другое», когда вносятся доработки.

🔹 2. Проще тестировать
Тестируемость вашего кода — крайне важный критерий.
Чаще всего, если вам сложно тестировать код, то, скорее всего, вы где-то свернули не туда.
- Бизнес-логику можно тестировать отдельными юнит-тестами без запуска браузера и без реальных API.
- API-функции легко мокать, не мешая бизнес-функциям.
- UI можно тестировать отдельно, не беспокоясь о внутренней кухне данных.

🔹 3. Повышается переиспользуемость
Переиспользуемость кода — один из ключевых критериев хорошей архитектуры.
При верном разделении на слои вам будет проще переиспользовать ваши решения.
- Бизнес-логику можно легко переиспользовать: десктопный-веб, мобильный-веб, да даже другой проект.
- Более чистая логика проще адаптируется к изменениям, например, при смене API: в слое API меняются адреса/структуры, а бизнес-логика не трогается.

🔹 4. Уменьшается связанность компонентов
Тот самый coupling, о котором вы, скорее всего, услышите из любого рассказа про архитектуру.
Чем меньше связанность, тем проще поддерживать и изменять код, переиспользовать решения и т. д.
- Компоненты не знают, как именно приходят/сохраняются данные, они просто «получают props».
- Если меняется источник данных (например, из REST на GraphQL), UI не нужно переписывать вовсе.

🔹 5. Управляем сложностью
Многие концентрируются только на технической стороне вопроса, но объем когнитивной нагрузки на разработчика тоже очень важен.
Когда-то давно читал, что по когнитивной нагрузке разработчик ближе всего к нейрохирургу, так как оба работают с очень сложными системами.
А чем больше когнитивная нагрузка, тем быстрее вы устаете, повышается порог входа и т. д.
- Чем больше приложение, тем легче «потеряться» в взаимосвязях.
- Слои разбивают проект на удобные, изолированные части. Держать отдельную часть в голове проще, чем целый проект.
- Проще объяснить проект новичку: «здесь правила бизнеса, здесь — работа с API, здесь — хранилище, а вот UI». Следовать уменьшается проблема Bus Factor`а.

🔹 6. Облегчается командная разработка
Уверен, что все вы сталкивались с конфликтами при мердже, и у каждого был какой-то очень заковыристый конфликт, после которого, скорее всего, были багули и т. д.
Один, может быть, и воин, но не в разработке точно, поэтому крайне важно, чтобы над проектом УДОБНО И БЕЗОПАСНО МОГЛИ работать сразу несколько разработчиков.
Разделение на слои позволяет чаще взаимодействовать на уровне интерфейсов, а не реализаций, что позволяет реже конфликтовать с другими изменениями.
- Чёткое разделение зон ответственности.
- Комфортнее параллельная работа.
- Легче делать code review.
- Безопасность и независимость изменений.

🔹 7. Легче менять технологии
Никогда не говори никогда. Скорее всего, вы не часто меняете React на Vue и что-то подобное, но вот более маленькие библиотеки меняются чаще.
Уверен, что многие точно сталкивались с переходом с одного стейта-менеджера на другой и т. д. Деление на слои позволяет вам не переписывать весь проект при такой замене, а ограничиться только одним слоем (чаще всего).
- Хочется переписать UI на другую библиотеку — все бизнес-правила и API-клиенты уже вынесены и остаются прежними.

Конечно, это не все. Дальше обсудим подробнее.
🔥33👍43🐳1
Манипуляция vs. Вдохновение
#тимлидство

👋 Здарова, работяги!

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

Как и большинство вопросов в менеджменте, этот тоже многогранен и не имеет точного ответа 🤷‍♂️. И я бы мог ответить на него коротко:
«Руководствуйтесь здравым смыслом и ориентируйтесь по ситуации, а в идеале еще и не будьте мудаком» 😉

Но давайте все же постараемся добавить конкретики.

Когда я думаю над этим вопросом, вижу два пути, две дороги. И тут как в сказке — налево пойдёшь... Что же это за дороги?

1️⃣ Манипуляция
Уверен, что у большинства это слово ассоциируется с негативом. И вряд ли вы хотели бы, чтобы вами манипулировали. Но ведь нами манипулируют постоянно 💡

Яркий тому пример — реклама:
«Если вы не купите нашу пасту, то у вас будет кариес» 🦷

Да, это именно манипуляция. Если быть точнее, то манипуляция через страх 😨. И страх не единственный инструмент:

📌 Инструменты манипуляции:
- Страх
- Выгода - скидки, акции, бонусы и т.д.
- Давление времени - искусственная срочность. Скорее всего вы видели эти "ограниченные" предложения
- Манипуляция рейтингами и сравнениями - так делают все и даже тот супер крутой специалист в этом деле, поэтому вы тоже должны

Самое главное, что стоит знать про манипуляцию — работает на короткой дистанции, но убивает лояльность 💔. Поэтому для «игры в долгую» — не лучший выбор..

2️⃣ Вдохновение
Тут всё уже не так просто, как с манипуляцией. Здесь не получится просто напугать сотрудника дедлайнами, штрафами и увольнениями 🚫.

Тут нужно действовать иначе. Самое главное и самое основное, с чего вам стоит начать — вопрос «Зачем?»

Тут уже нельзя просто сказать, ЧТО делать, придется объяснять. Скорее всего, это займет больше времени, больше сил. Зато именно так и рождается команда, которая готова следовать за лидом осознанно:

Отвечая на вопрос «Зачем?», вы:
Собираете вокруг себя людей, которые разделяют ваше «Зачем?»
Они следуют за вами добровольно 🤝
Они чувствуют смысл, а не обязанность

Да и вам самим тоже будет полезно отвечать на этот вопрос, т.к. это позволит не просто «разгребать таски», а видеть суть решаемой задачи и предлагать лучшие решения 💡.

На первый взгляд кажется, что:
- Манипуляция = зло 👿
- Вдохновение = добро 😇

Я с этим не согласен.

Иногда манипуляция уместна: например, если у вас форс-мажор, срочная таска или что-то подобное требующее максимальной мобилизации команды и выдачи быстрого результата. В таких случаях можно — и нужно — честно озвучить критичность, ограниченность сроков и сделать акцент на реальные последствия, если не успеем. Это манипуляция? Да. Можно ли “жить” на таком подходе всё время? По моему мнению, нет. Страх действительно мобилизует, но в долгую это плохой инструмент.

Это просто инструменты 🔧. Выбор инструмента зависит от многих факторов, как минимум от задачи, которую вы решаете.

Ну и давайте закончим тем, с чего начал:
«Руководствуйтесь здравым смыслом и ориентируйтесь по ситуации, а в идеале еще и не будьте мудаком» 😉

А как у вас — вы (или ваш лид) чаще используете манипуляцию или вдохновение? Делитесь в комментах 👇

🔥 Всем хорошего дня!
🔥232🐳1
Интересны ли вам обзоры книг/статей?
Anonymous Poll
88%
Да 👍
12%
Нет 👎
ТОП - Тёма о программировани
Здарова, работяги! В выходные было два стрима. Не часто я выхожу в таком формате, но мне понравился. Серьезно задумался о лайвкодинге в формате стримов. Выходной день, кофеек, чиловая музыка и пет-проект... Ммм... Красота! Что думаете, было бы вам интересно?…
Здарова, работяги!

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

Темы месяца:

1. Что такое команда? Чем отличается команда от просто коллектива.
2. Этапы развития команды (по Такману) и роль лидера на каждом этапе — что/где/как может делать руководитель, чтобы не тормозить прогресс, а сли нужно и ускорять его.
3. Пороки команды по Ленсиони — как их замечать и устранять.
4. Аудит команды: разобрали чёткий алгоритм, как оценивать состояние своей команды и находить точки роста.
5. Найм и увольнение: обсуждали, как нанимать имено тех, кто нужен команде/проекту и прощаться с сотрудниками бережно, честно и максимально корректно.
6. Конструктивная конфронтация «вниз»: как говорить с подчинёнными о сложных проблемах, чтобы не испортить отношения и при этом добиться результата.

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

Некоторые интересные идеи:

- Групповая динамика по Такману. Оказалось, мало знать про этапы развития команды — важно понимать, КАК вести себя лидеру во время каждого этапа. Например, в самом конфликтном этапе ("шторминг") нельзя затягивать конфликты или замалчивать их: задача лидера вскрыть все противоречия, найти решения и чётко зафиксировать договорённости. И очень важно — именно лидер должен стать гарантом выполнения этих договорённостей, контролировать процесс самому, не делегировать.

- Увольнение сотрудника. Для многих руководителей (и для меня в том числе) — это один из самых стрессовых моментов. На курсе подсветили важную мысль, которую многие забывают: увольнение — это не про плохих сотрудников, это про несовпадение с командой, компанией или проектом. Такое бывает! И, возможно, в другом месте человек засияет как суперзвезда. Поэтому важно доносить эту мысль и держать ее в фокусе при разговоре.

Что дальше?

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

Был ли у вас опыт увольнения сотрудника? Что для вас оказалось самым трудным и как вы справлялись со стрессом если испытывали его? Пишите в комменты 👇
1🔥23👍1413
Общаемся про прошедшие лекции, подключайтесь)