Счастливый тимлид | ♥ Frontend
@frontend_lead_mentor·Преподаватель
AI-саммари
За выходные закрывает гештальты из Obsidian: гейм-бот для комментов канала, реферальная страница с фильтрами и OG-разметкой — всё за пару вечеров. Но тут же предупреждает: 90% генераций его учеников идут в мусор, потому что никто не думает перед промптом. Раздражает не только это — видит, как айтишники массово строят тысячные трекеры привычек и анализаторы созвонов, и говорит прямо: вопрос не в том, куда приткнуть нейросеть, а за какой результат люди готовы платить. Недавно признал поражение в тесте «человек или нейросеть» (2 из 4) и опубликовал манифест: в его канале только живые тексты — потому что насмотревшись нейрослопа, сам начинаешь писать как нейросеть. Реклама в ChatGPT тоже в его списке угроз: делает AI-ресёрч ненадёжным, как поисковики с платной выдачей. В рабочем контуре — DeepSeek и Qwen через плагины для VS Code и WebStorm, в сайд-проектах — Antigravity с Gemini Flash; Obsidian-заметки закидывает в LLM целой папкой для поиска нужного. На хакатонах раздражается от команд, которые видят в AI только угрозу и строят системы запретов вместо продуктовых решений.
Уязвимость в React!
Любой может исполнить код на вашем сервере, а на моём не может, хе-хе. Потому что я не использую ни next.js, ни серверные компоненты. И зря, думал я до этого момента, а теперь, кажется, что не больно то и хотелось.
Подробнее об уязвимости и как обновиться тут.
Для любителей поковыряться в кишочках есть большой разбор: https://github.com/ejpir/CVE-2025-55182-poc/blob/main/TECHNICAL-ANALYSIS.md
Отправляй пост своим друзьям-коллегам фронтендерам и держи свой сервер в безопасности!
Всегда ваш, Счастливый тимлид 🫡 Подпишись, если не
Я отработал три дня на хакатоне и я просто в шоке.
🔥 Финал хакатона был очень жёстким. Не припомню такого накала страстей среди судей ни на одном другом мероприятии. Эксперты сражались за команды буквально на ножах, ведь призы были немалые. За победу команда получала 300 тысяч рублей, за второе и третье места по 200 и 100 тысяч соответственно. Четвертое и пятые места получили почет, уважение и мерч.
Я люблю глазами, поэтому мои фавориты те, кто сделал продуманные и удобные для пользователя продукты, а так же очень классные по визуалу и подаче выступления. Другие же эксперты топили за команды с более качественным бэкендом и глубокой проработкой архитектуры и интеграций с LLM. Поэтому наши мнения разделились, у каждого эксперта был свой топ.
В итоге вся пятёрка финалистов шла буквально нос к носу, и разница между первым и пятым местом была в рамках десятых долей процента.
Очень жаль, что нельзя было наградить четвёртое и пятое места — у них были достойные победы решения.
🥲 Если говорить не о финале, а в целом о хакатоне, то я разочарован трендом в мышлении команд.
Заданием было сделать интервью будущего с использованием llm. Удивило, что почти у всех акцент делался на алгоритмических задачах, а в рамках античита некоторые команды не просто снижали баллы за использование Ctrl+C и Ctrl+V, но и прекращали интервью целиком или даже заносили кандидата в чёрный список. Я ожидал более интеллектуальных и продуманных решений анализа поведения кандидата, а получил какой-то «цирк безопасности».
Что касается задач на алгоритмы, то и тут фокус был не на том. Нет бы позволить кандидату использовать LLM для решения задач, у большинства фокус был на максимальном запрете использования LLM. Интересно, как бороться со вторым ноутом рядом? Правильно, через камеру трекать поворот головы кандидата! Это буквально какой-то синдром вахтёра.
Откуда это желание всё запрещать, контролировать и наказывать?
Я считаю, что собеседование будущего должно фокусироваться на продуктовой составляющей, на ревью сгенерированного кода и принятии решений. Нужно искать эффективных кандидатов, кто может понять и исправить ошибки в сгенеренном коде, выбрать лучший вариант, получить ровно тот результат, что нужен. Вот что я хотел бы видеть в решениях! А совсем не цифрового конвоира, который за каждый альт-таб бьёт плетью по рукам.
Я бы не хотел такого будущего и уж точно не пошёл бы устраиваться в компанию с таким типом отбора.
🙂 В общем, хакатон оказался непростым и очень эмоциональным — и для меня, как эксперта, и для участников.
Но главное, он оказался очень запоминающимся. Мне понравилось. Спасибо всем за участие и организацию!
BiTech, я с вами 🤝
© Счастливый эксперт
Советы от эксперта на хакатоне
Второй день работаю экспертом на хакатоне VibeCode Jam от конференции Импульс Т1. Это уже не первый хакатон в этой роли, уже есть опыт и понимание, как бывает. И пока хакатон в самом разгаре, спешу подсветить ТОП-5 ошибок команд, которые мешают придти к победе. Надеюсь поможет сильнейшим победить!
1. Невнимательно прочитали задачу.
❗️ В прошлом году пара команд точно отлетели на последних чекпоинтах просто потому что сделали не то, проигнорировали основные критерии. В этом году у нас есть четкое ограничение по LLM моделям, но чувствуется, что опять будет кто-нибудь, кто захочет в последний момент сделать всё на OpenAI. Не надо так.
✅ Прочитайте еще раз критерии приемки, убедитесь, что ваше решение закрывает каждый хотя бы частично.
2. Не успели загрузить решение.
❗️ В этому году на каждой встрече с командами повторяем — загружайте решения заранее. Ровно в час Х платформа блокируется и никакие «простите, мы не успели буквально на секундочку» не сработают. Лучше залить не самую последнюю версию, чем не залить ничего.
✅ Заливайте промежуточные версии в систему, обновлять решение можно неограниченное количество раз. Поставьте будильник за 15 минут до дедлайна.
3. Не обуздали амбиции.
❗️ Решили всех удивить и сделать больше чем требуется? Похвально, это может сработать. Но часто бывает так, что в погоне за киллер-фичей теряется время на реализацию базы. В итоге ни киллер-фичи, ни хотя бы MVP. Увы.
✅ Спланируйте своё время и оцените реальные возможности, вы еще успеваете порезать скоуп проекта, чтобы успеть.
4. Забили на оформление.
❗️ Люди любят глазами, и эксперты тоже люди, а хакатон — это шоу. Ваш продукт может быть супер сложным внутри, но если на ваш фронтенд без слез не взглянешь, то и оценка будет так себе. Если ваше видео снято на тапок, вместо звука сплошное шипение, то шансов на победу практически нет. Если ваш проект не запускается одной командой на ноуте эксперта, то это тоже может стать досадной причиной для поражения.
✅ Делайте классное оформление, простые инструкции и четкие красивые демо.
5. Проспали награждение.
❗️ Да, такое тоже бывает, это не шутка. Кодинг круглые сутки напролет настолько сильно выматывает, что потом никаким будильником не разбудишь.
✅ Рассчитывайте свои силы и отправьте спать хотя бы парочку человек из команды. Хорошо работает когда кодят одни, а выступают другие.
Хакатон, это не только сложно и интересно, но очень эмоционально и непредсказуемо. Как думаете, какие ошибки команды не совершат в этом году?
Я совсем скоро уже сажусь в поезд, чтобы завтра быть на Импульсе Т1. Увидимся! Успехов!
© Счастливый эксперт
ChatGPT стал писать тексты… адекватно.
Раньше это были сплошные космические галактики слов, где каждое предложение прыгало, как попугай на стероидах. Сейчас формально ошибок меньше, структура есть, логика вроде налицо.
Но вот странность: все равно чувствуется, что текст написан не человеком. Иногда выскакивают идиотские сравнения, метафоры, которые будто кто-то натянул на себя костюм поэта, не умея ходить в нём. Эпитеты, словно салюты в полночь — громко, но не к месту.
И вот что поразило меня сильнее: люди начали подражать этому стилю. Они смотрят на тексты нейросети и думают: «Вот так надо писать». Ирония в том, что теперь уже не ChatGPT учится у людей писать живо, а люди учатся у GPT писать… странно. Плохо. Как будто мы с каждым новым текстом учим себя говорить красивыми, но чужими словами.
*да, я специально закинул первые три абзаца в чатГПТ и попросил его «улучшить», добавить сравнений, метафор, чтобы вы на 100% почувствовали как это мерзко читается, хотя и мысль в тексте моя, 100% настоящая. Дальше текст будет без нейрообработки, выдыхаем.
Вчера читал про продукт, который помогает генерить тексты на сайт под поисковые запросы. Вы понимаете, что вопроса генерить или не генерить уже не стоит? Стоит лишь вопрос как генерить быстрее, больше, эффективнее и качественнее. Мертвый интернет залетает в комнату со всех ног.
Не скажу, что это прямо ужасно. Всяко лучше иметь релевантный нейротекст в рецепте гречки, чем полчаса скроллить историю её открытия, написанную неграмотным школьником за три копейки, чтобы узнать что варить её 10 минут. Интернет и так уже давно сломан СЕОшниками.
Но не были сломаны авторские блоги.
Всё больше каналов, которые я читаю, позволяют себе публиковать нейротексты и я иногда даже теряюсь в понимании что происходит. Либо автор сошел с ума и начал писать как ллмка, либо он просто решил, что сгенерил же пост «в моем стиле», читатель дурак и не поймет. Как ни крути быть на месте такого читателя неприятно.
Я боюсь, что эта зараза перекинется и на меня. Раньше я мог легко отличать нейротексты от человеческих, но теперь я всё чаще в сомнениях. И более того, я иногда в сомнениях в себе — не пишу ли я как нейросеть? Ведь я тоже обожаю длинные тире, странные сравнения и антитезы.
Чтобы хоть как-то себя сохранить, я снова вернулся к старому проверенному способу — к книгам. Сейчас читаю «12 стульев» Ильфа и Петрова. Давно хотел, а тут как раз отличный повод отдохнуть от нейросетей и впитать живой язык. Живой, с тонкими шутками, едким сарказмом, но с устойчивым запахом прошлого.
Непрошеный для авторов совет. Не используйте нейросети для генерации текстов, это чувствуется за километр. Лучше читайте классиков и пишите сами.
Индия — жизнь по-другому
Когда я планировал отпуск в страну антисанитарии и специй, я смутно представлял что меня там ждет. В голове был набор базовых стереотипов и понимание, что скорее всего там всё иначе — как минимум Индия страна с самым большим количеством АйТишников и этот факт никак не укладывался в голове с рекомендациями сделать кучу прививок и ни в коем случае не пить там воду кроме как из запечатанной бутылки.
Я провел день в столице и теперь отчетливо понимаю как выглядят несколько миллиардов человек. Час-пик в Московском метро — ничто по сравнению с обычным будним днем на рынке в Дели. Смешались в кучу кони коровы, люди — это словами классика про это место. Ни пройти, ни проехать, ни вдохнуть полной грудью. Сотни снующих индусов с мешками на голове, пробки из рикш и ездовых коров, лужи мочи и навоза прямо под ногами. Глаза слезятся не только от ужаса, но и от запаха. Никакой шафран не может перебить запах стихийного общественного туалета.
ЧатГПТ оптимистично отмечает, что Дели — лучший город, который выбирают для жизни более 20 миллионов индусов.
К слову, буквально в нескольких станциях метро от рынка был найден оазис спокойствия и умиротворения. Выставка современного искусства, капуч за 400 рублей и крок мадам как в лучших ресторанах Европы дали возможность взглянуть иначе на этот город.
В Дели очень классное метро — современнные составы, удобная навигация, низкая цена на проезд (порядка 20-30 рублей). Питеру есть чему поучиться.
Дели очень контрастный город, который вопреки желанию расширяет сознание. Я до сих пор одновременно восхищен этим местом и нахожусь в ужасе. День в Дели помогает понять ценность того привычного и простого, на что давно уже не обращал внимания — чистота и отсутствие запахов на улицах, тишина, комфорт. И при этом дает понимание, что нормы просто не существует. То привычное, что есть у нас — совсем не нормально для Индусов, а что привычно для них — не нормально для нас. Разные люди, разные культуры, разные ценности и приоритеты.
Путешествуйте, это того стоит!
Рассказать вам про Бир, Дарамсалу или Баку?
*20 секунд из жизни Дели — столицы Индии
Cannot find module
Ужасно правдивая сага про одержимость, искуственный интеллект и победу человеческого разума
В комнате царил полумрак. Евгений пялился в монитор широко раскрытыми глазами. Желтый текст на черном фоне был подчеркнут ярко красным зигзагом. Круглые часы на столе с такими же ярко красными цифрами показывали нули. Полночь.
Это не было серьезной проблемой. Проект собирался и работал. И работал так всё время, с момента получения доступов. Но вот это ужасное чувство, знакомое каждому перфекционисту, разрушало его изнутри, не давало ему спокойно жить. Это желание сделать идеально, так чтобы всё было четко и правильно, заставляло его сидеть ночами и искать решение. Он не мог позволить себе закрыть глаза на ошибки или прикрыть их позорным, в его глазах, ts-ignore.
Картинки. Простые картинки стали ночным кошмаром, превратились в неразрешимую задачу. Он сделал всё, что делает опытный фронтентер: читал документацию, бесконечно гуглил, обновлял библиотеки. Но IDE словно издевалась, снова и снова подчеркивая проклятый импорт.
StackOverflow, Gemini, ChatGpt, Perplexity — все инструменты, и с искуственным, и с человеческим интеллектом, говорили одно. Добавь declare module и всё заработает. Но оно не работало. Не работало. Не работало!
Тогда Евгений пошел на крайние меры. Он купил Cursor и открыл проект в нем. Давай, братишка, почини этот баг. Как же он меня достал! Но курсор не справился ни с первой попытки, ни со второй, ни с десятой. Каждая генерация лишь предлагала известные решения, которые не работали. Даже сам курсор удивлялся «Проверяю. Не работает. Значит дело в другом.» И так по кругу. Идеальная машина по сжиганию токенов.
Чтобы спасти планету от лишних выбросов CO2 и разорвать проклятый цикл, Евгению пришлось принести в жертву и удалить tsconfig.json из проекта. ИИ должен был создать его заново, словно феникса из пепла. Обновленного, без изъянов! Но ИИ, напичканный токенами, будто в пьяном угаре вошел в кураж и изрыгнул из себя франкенштейна на четыреста безумно отвратительных строк. Хоть может работает?
> Restart Ts Server Cannot find module './src/logo.png' or its corresponding type declarations.
Дааа, не так я себе это представлял. Евгений сбросил все изменения дурачка ии и выглянул в окно. Огромная кроваво красная луна зашла за шпиль Лахта-центра. Разделилась на две половинки. А это идея!
Он подошел к компу, создал новый файл files.d.ts и перенес в него только декларации для картинок. Ошибка мгновенно исчезла. Как будто ее никогда и не было.
И никто никогда не узнает, что она тут была. Никто не узнает подробностей этой страшной битвы на пороге дней. Никто не похвалит Евгения, и тем более не даст награды. Всё встало на свои места, а в масштабах вселеной, так и вовсе не изменилось.
И только Евгений впервые за долгое время уснет спокойно.
© Счастливый тимлид
Репост и подписка крайне приветствуются <3
Никто не любит писать тесты
Я тоже не люблю.
Хотя я однажды устроил себе челлендж «30 дней по TDD», и тогда мне было прикольно. Мне даже кажется, что именно эти дни были самыми интересными с точки зрения программирования. Это было как игра: сначала один тест зеленый, потом два, потом пять, а в конце остался финальный босс, хитрый edge-кейс, который надо закрыть, показав всё своё мастерство. Эх, были времена!
На последней конфе много обсуждали применение нейронок, и буквально каждый вторил — нейронка офигенно генерит тесты. Теперь не надо тратить на это силы, закинул промт и через пару минут тесты готовы.
И это правда. Нейронка офигенно генерит тесты. Она видит все случаи, которые надо проверить и про которые я забываю. Я бы не написал настолько подробные тесты как она. У меня просто терпения не хватило бы.
И вот тут кроется проблема. Когда мы отдаем тесты нейронке, то она генерит какой-то код и это чужой код. А что мы не любим делать кроме написания тестов? Правильно — ревьюить чужой код. Мы просто доверяем нейронке, что она сделала всё правильно.
Не кажется ли вам, что такой подход равносилен отсутствию тестов? Ведь если есть ошибки, если покрыты не все кейсы, если это вообще не тесты, а бутафория, то мы об этом не узнаем, пока не столкнемся с проблемами на проде.
Более правильно писать тесты самостоятельно, а LLMку просить сгенерить код, который эти тесты проходит.
Получается, что и последние крохи радости от программирования достанутся роботу.
Как у вас в проекте с тестами, ребят?
ps. Бонусную картинку у Фила для вас стырил
© Счастливый тимлид
Раз в год можно и в офис съездить
Особенно, если это «ночь музеев» в мире IT. Еду веселиться, слушать технодоклады и нетворкаться!
Меня позвали на big tech night, а я взял и согласился. Приехал сегодня в офис Яндекса, записался на иммерсивную экскурсию по офису компании.
До экскурсии пойду слушать доклад про будущее разработки с AI, плюс уже руки чешутся попробовать себя в полуночном вайбкодинге!
Столько интересного происходит параллельно. Жалею, что не могу посмотреть всё сразу. Хочется и доклады про технологии послушать, и турнир по Worms Argageddon затащить, и на IT-стендап заглянуть.
После Яндекса заеду в офис T-банка на тимлидский квартирник. Будут обсуждать, как соцсети тимлида могут влиять на команду.
Кто тоже на big tech night — пишите комменты или, если стесняетесь, в директ канала, найдемся!
ИИ помощник или сообщник?
Сегодня по всем новостникам разлетелась новость, что зарегистрирован первый случай когда дружба с llm привела к убийству. Подробности вы можете прочитать просто погуглив чувака по имени Стайн-Эрик Сольберг, который по совету ИИ сначала роскомнадзорнул свою мать, а потом и себя.
Кажется, началось!
Не удивительно и что чувак этот не какой-то рандом, а связан с крупной IT-компанией. К сожалению, я не нашел был ли он программистом или уборщиком, но, очевидно, близость к другим айтишникам сыграла свою роль на его психологическом состоянии.
До этого в сми уже упоминались примеры когда дружба с ИИ приводила к другим видам предварительного завершения жизни, преимущественно у хикканов-подростков.
По своему опыту могу сказать, что доверительное общение с llm, а тем более принятие личных решений на основе советов ИИ — это путь в пропасть. Вы же знаете, что ИИ обучалась писать код не на лучшем коде, а на коде, написанном в том числе и тобой новичками. Да он иногда работает, но часто не так как хотелось бы. Готовы ли вы залить код от ИИ в аппарат жизнеобеспечения? С чего вы взяли, что советы в рамках личной жизни он дает качественные? В этой сфере всё ещё хуже, советы не сильно отличаются от советов соседки напротив, а риски на порядки выше.
Не дружи с ИИ, дружи с людьми!
Особенно если ты айтишник 🥱
Поддержать
Вдогонку про AI хочу набросить
Я наблюдаю как мои ученики, точнее ученицы, используют искуственный интеллект для разработки и вижу кучу проблем. Я пока еще не выкристаллизовал правильных подход, плюс вижу как всё меняется со скоростью света, но текущий подход точно хреновый. И главное — это вижу не только я.
Прочитал сейчас исследование, о том, что вопреки ощущениям самих программистов AI на самом деле замедляет работу на 10-20%, а не ускоряет её.
У меня более половины генераций идут в мусорку, а я ответственно подхожу к написанию промтов. У учениц - 90% генераций тот еще говнокод. Но самая большая проблема в том, что если ты не эксперт, то чтобы понять, что сгенерировался на самом деле говнокод, нужно ооооочень много времени. Настолько много, что было бы проще написать самому с нуля.
Главная проблема, которую я вижу — это плохое понимание конечного результата. Есть ценное знание предков: «семь раз отмерь — один раз отрежь». В нашем случае, это «семь раз подумай, один запрограммируй спроси GPT». Но никто не думает семь раз. Редко когда кто-то думает даже один. А ведь весь секрет хорошей генерации через AI — продуманный промпт.
Решение есть. Когда можешь четко объяснить ИИ что у тебя есть, и какой результат хочешь получить — то с большой вероятностью он это сделает корректно. Но вот что забавно — когда ты сам знаешь, что тебе нужно получить, с еще с бОльшей вероятностью ты сам в состоянии написать этот код. Написать быстрее и качественнее. (Если это не регулярки, конечно)
Есть еще такая мысль. Почему на простые вопросы GPT генерит какую-то заумную хрень, а на сложные — отличные ответы? Я пришел к выводу, что когда сложный вопрос становится для тебя простым, то ты начинаешь видеть, что GPT генерит такую же хрень, просто ты был не в состоянии это понять.
Еще одна мысль — GPT тебя расслабляет. Ты перестаешь думать, полагаясь на ответы чата. Ты начинаешь думать как чат. Я уже начал встречать кучу текстов, которые люди пишут сами, но в них уже тот самый вайб GPT. Они учатся писать у GPT и думают что это норм.
Почувствуй! Твое сознание — как ржавеющий механизм. Твой мозг — заброшенный сад. GPT — это костыли для ума, автопилот для разума! (Этот абзац сгенерирован GPT)
Вывод! Создавай собственные смыслы и не позволяй LLM принимать решения за тебя. Не теряй интерес к исследованию, сохрани в себе любознательность и умение изучать информацию. Это твоя жизнь, проживи её самостоятельно.
Записаться на обучение можно в директ
Вот и до меня добрался Ai
Когда начался бум ИИ-IDE и все начали пробовать Cursor, Windsurf и прочие Trae, к нам тоже пришло обновление — нам на рабочих компах все это превентивно заблочили. Оно и так не работало из-за санкций по географическому признаку, но для надежности наши поставили и второй забор. Сливать исходники за рубеж — плохая идея.
Тогда у меня не было каких-то интересных сайд-проектов, на которых можно почувствовать всю мощь ИИ. Я попробовал бесплатные версии Cursor и Trae на верстке лендоса и CMS Strapi, но оказалось, что все они натренированы на старых версиях библиотек и выдают не такой уж и валидный код. Думал даже даунгреднуться на старые версии, лишь бы ускорить разработку, но в итоге разобрался сам. С версткой было еще хуже, я верстаю быстрее, чем переделываю за ИИ. Тот же Trae хорошо накидывает выдуманные интерфейсы, но если есть макеты, то проще сразу делать самому.
В общем, я на несколько месяцев забил на AI-ассистентов и лишь поглядывал за новостями.
🌈 Но тут внезапно и к нам в деревню пришла ИИ-весна. Ребята развернули во внутреннем контуре DeepSeek и Qwen, написали плагины для VS Code и WebStorm, разрешили наконец-то этим пользоваться. И хотя до сих пор чувствуется отставание — это все-таки не Cursor с платной подпиской, но всякую мелочь реально получается отдавать помощнику: — сгенерируй функцию преобразования даты из 01.05.2022 в 1 мая 2022 — вынеси повторяющийся код в отдельную функцию — напиши регулярное выражение для снилс — объясни что делает этот код
Параллельно с инструментами для разработчиков, они внедрили ИИ в систему контроля версий, и теперь кроме ревью людей можно подключить и ИИ-ревьюера, который без стеснения накидает целую панамку комментов.
А как с этим обстоят дела в других компаниях?
✅ Друг из Сбера говорит, что уже во всю используют ГигаЧат. У них есть все интеграции с популярными IDE и даже своя собственная. Есть и нейро-ревью, которое пока что создает больше неудобств, чем пользы, поэтому у большинства команд находится в отключенном состоянии.
✅ Про Яндекс слышал, что сотрудникам не запрещается использовать зарубежные нейросетки, и там кто во что горазд — кто подключает Cursor, кто RooCode, кто просто из ChatGPT куски кода вставляет. Говорят и нейро-ревью, кто-то по личной инициативе затащил.
Мне вот интересно, если в компании разрешают использовать зарубежные модельки и IDE типа Cursor, то как они защищают данные?
❓ А вы используете ИИ на работе и в жизни? Есть какая-то польза или поигрались и забили?
UPD: обожаю такие посты за ваши комментарии — вот где кладезь пользы!
#cursor #llm #chatgpt
✨ Провёл внутренний митап по инклюзивности и делюсь с вами основными моментами. Надеюсь, хотя бы один интерфейс с этого дня станет доступнее.
Если вы не понимаете, что такое доступность и какие там проблемы, то посмотрите вот этот пост с двумя короткими видео-примерами.
Инклюзивность — это просто
💡 Основной принцип доступности: «Нормально делай — нормально будет». Всё становится инклюзивным из коробки, автоматически, при правильном использовании. Если вы используете семантические теги, не вёрстаете кнопки div'ами, то 90 % вашего сайта или приложения уже хорошо прочитаются скринридерами. И это классно.
Про остальные 10 % и поговорим. Цифры, кстати, из головы — просто я так вижу.
✅ Для правильного прочтения интерактивных элементов есть атрибут aria-label. У него есть особенность: он иногда работает и для статических элементов в некоторых читалках, но так его использовать неправильно. Нельзя использовать aria-label для divов, spanов и прочих параграфов, если в них просто текст.
✅ Если элемент интерактивный, но свёрстан не теми тегами, то есть лайфхак — можно добавить ему role="button | link | ..." — и он только тогда станет интерактивным и будет нормально озвучиваться.
✅ Если у вас есть текст, который не должен читаться, то нужно элементу добавить aria-hidden, и читалка его будет игнорировать.
🔥 Иногда есть очень красивая вёрстка, которая визуально понятна, но читается не очень хорошо. Например, мы видим «5% Супермаркеты», но хотим, чтобы читалось как «5% за покупки в категории "Супермаркеты"». Во-первых, это неправильно, так как нарушает Основной принцип. Во-вторых, это не проблема — переступаем через перфекционизм и добавляем на блок aria-hidden, тем самым скрывая его от читалки, а рядом кладём нужный текст в блок с классом .visually-hidden (загуглите реализацию), который визуально невидимый, но прекрасно читается скринридерами.
Да, без костылей не обойтись и в 2025 году. Думаю, это будет мой любимый вопрос на собеседованиях в ближайшие годы.
А в следующем посте на эту тему расскажу про инструменты, которые помогут в разработке и отладке инклюзивности.
📌 Отправь этот пост своему другу-фронтендеру. И подпишись!
#инклюзивность #доступность #фронтенд