IT-дайджест: главные новости декабря 2024 года.
В этом выпуске мы расскажем, как искусственный интеллект становится мощным инструментом в руках опытных программистов, поделимся ценными советами от ведущего инженера Google, раскроем детективную историю о самой загадочной песне в интернете и представим список JavaScript-библиотек, с которыми стоит попрощаться в уходящем году.
За пределами промптов: эволюция роли разработчика в эпоху искусственного интеллекта
Глава Builder.io Стив Сьюэлл рассказал, почему чат-боты не заменят разработчиков, а наоборот — сделают их более востребованными на рынке труда. В своём объяснении он опирается на концепции «смертельной ямы» и «плато смерти».
Феномен «смертельной ямы» Стив связывает с проблемой масштабирования проектов. Искусственный интеллект хорошо справляется с базовыми задачами, однако при их усложнении его производительность падает. При этом попытки исправить ошибки с помощью промптов порождают новые проблемы.
Рассмотрим пример создания интернет-магазина:
- На начальном этапе нейросеть способна эффективно создавать общую структуру: главную страницу, каталог товаров, поисковую систему, корзину и прочие элементы.
- При дальнейшем усложнении проекта возникают новые задачи. Например, если потребуется функция фильтрации товаров, нейросеть создаст код, не учитывающий существующую архитектуру и логику поисковой системы.
- Если вы попытаетесь исправить ситуацию через промпты, то каждое новое решение породит цепочку проблем: фильтры нарушат работу пагинации, исправление пагинации сломает функциональность корзины, а попытка восстановить корзину вызовет сбои в каталоге и так далее.
В случае «плато смерти» проект достигает определённого уровня развития и останавливается. В отличие от «смертельной ямы», здесь нет критических ошибок или конфликтов в коде — нейросеть просто не способна преодолеть определённый предел сложности. Вместо качественного развития она генерирует однотипные решения, не привносящие в проект улучшений.
Предположим, нам нужно разработать систему аналитики:
- Сначала нейросеть создаст базовые компоненты: графики, таблицы и простые фильтры данных. Такая система будет стабильно работать, но сможет выполнять только элементарные операции по визуализации и фильтрации.
- При попытке добавить более сложные функции нейросеть, скорее всего, предложит лишь базовые решения. Вместо создания умной аналитики продаж, учитывающей сезонность и поведение клиентов, она просто добавит примитивные графики без учёта специфики бизнеса.
- В дальнейшем, сколько бы промптов вы ни написали, нейросеть не сможет преодолеть этот порог сложности. Она будет лишь предлагать вариации существующего кода, не создавая по-настоящему инновационных решений.
Следовательно, только разработчик с глубоким пониманием архитектуры, принципов проектирования и технических ограничений способен эффективно преодолеть «смертельную яму» и «плато смерти». Именно такой специалист может правильно структурировать код, предвидеть проблемы масштабирования и создавать архитектурные решения, выходящие за рамки стандартных возможностей ИИ.
Как правильно использовать нейросети в разработке: рекомендации ведущего инженера Google
Ведущий инженер Google Эдди Османи обнаружил любопытный парадокс: хотя многие начинающие разработчики сообщают о повышении продуктивности при использовании ИИ, качество их кода существенно не улучшается. При этом опытные разработчики получают от нейросетей значительно больше пользы:
«На самом деле ИИ — это как очень энергичный джуниор. Он может быстро писать код, но нуждается в постоянном контроле и корректировке».
По объяснению Османи, опытные инженеры никогда не копируют сгенерированный код бездумно. Вместо этого они применяют свой профессиональный опыт: выполняют рефакторинг, добавляют обработку ошибок и исключений, продумывают архитектурные решения.
Начинающие разработчики чрезмерно зависимы от ИИ и склонны копировать сгенерированный код без правок. Это создаёт замкнутый цикл: каждое обращение к нейросетям замедляет развитие их собственных навыков и усиливает зависимость от искусственного интеллекта.
Чтобы разорвать этот цикл, Эдди Османи предлагает три ключевых решения: следовать поэтапному подходу в разработке, уделять особое внимание качеству кода и развивать критическое мышление.
🎵 40 лет спустя: интернет-детективы нашли авторов «потерянной» песни 1984 года
🔍 В 1984 году житель Германии записал на магнитофон песню из радиоэфира, но не успел узнать её название. Композиция принадлежала местной группе, выступавшей на гамбургском фестивале Hörfest. Эта случайная запись положила начало загадке, которую интернет-сообщество пыталось разгадать почти 40 лет.
👣В 2007 году сестра автора записи оцифровала композицию и разместила её на нескольких интернет-форумах в поисках названия песни и её исполнителя. На протяжении многих лет люди находили эту публикацию и пытались помочь, но безуспешно.
👣 В 2019 году поиски обрели новый импульс благодаря Reddit. Пользователь gabgaskins разместил песню в 44 музыкальных сабреддитах и создал специальный саб r/TheMysteriousSong. Вскоре композицию заметил ютубер Just Whang, посвятивший ей отдельный выпуск, что существенно ускорило расследование.
👣 Наконец, реддитор marijn1412 нашёл старую статью в региональной немецкой газете Nordwest Zeitung о группе Fex из Киля, которая победила на конкурсе талантов в Бремене в сентябре 1984 года. Связавшись с редакцией газеты, он смог найти участника группы Phret — коллектива, выступавшего на Hörfest 83:
«Мне удалось связаться с ним и спросить о старых записях этих групп. Он прислал несколько песен Fex и Phret… и, представьте себе, — одна из них называлась Subways Of Your Mind».
🎼 Subways Of Your Mind группы Fex оказалась той самой загадочной композицией. Сейчас реддиторы проводят аудиоанализ треков, опубликованных marijn1412, чтобы подтвердить подлинность находки. А тем временем участники Fex планируют воссоединиться для исполнения своих старых песен.
Искусственный интеллект против HR: как технологии меняют процесс найма IT-специалистов
По данным опроса The Pragmatic Engineer, 80% респондентов отметили возросшее использование ИИ среди кандидатов при подготовке к собеседованиям и выполнении тестовых заданий. Как следствие, HR-специалисты начали с большей осторожностью относиться к онлайн-собеседованиям, предпочитая очные встречи. Это лишь одна из новых тенденций, с которыми в ближайшем будущем столкнутся IT-специалисты при поиске работы.
Результаты оказались показательными: кандидаты успешно прошли 73% собеседований при решении стандартных задач с Leetcode, 67% — при решении слегка модифицированных задач, и лишь 25% — при ответах на уникальные вопросы, которые отсутствуют в интернете.
На основе этих результатов HR-специалисты пересмотрели подход к проведению собеседований. Теперь происходит переход от алгоритмических задач, которые легко решаются с помощью ИИ, к более практичным форматам — анализу кода и системному дизайну. Так, вместо решения задач на сортировку массивов, кандидатам предлагают разобрать существующую кодовую базу или спроектировать архитектуру масштабируемого веб-приложения.
Некоторые разработчики даже откровенно зачитывают ответы чат-бота начиная с общих фактов. Особенно заметно это становится, когда кандидат моментально предлагает готовое решение без уточняющих вопросов и объяснения логики своих действий. По словам Уэса Винлера, основателя Woven Teams, подобные случаи встречаются часто:
«Как правило, обман обнаруживается на финальном этапе собеседования. При просмотре записи технического интервью становится очевидным: кандидат постоянно отводит взгляд от экрана и делает длительные паузы».
«Один кандидат подал заявки на разные позиции в нашей компании — от администратора баз данных до React-разработчика. Его сопроводительные письма идеально соответствовали требованиям каждой вакансии, но при этом полностью противоречили информации в резюме».
В ответ на это компании внедряют специализированные программы для обнаружения и фильтрации заявок, созданных с помощью нейросетей. Мы становимся свидетелями необычной технологической гонки — кандидаты применяют ИИ для написания безупречных заявок, а работодатели используют ИИ — для выявления искусственного контента.
💡 Исследование The Pragmatic Engineer указывает, что описание реального опыта — единственный эффективный подход при трудоустройстве. Но действительно ли это так?
Анатомия IT-команды: конфликты программистов и путь к взаимопониманию
Шон Годеке, ведущий инженер GitHub, предложил интересный взгляд на природу конфликтов среди разработчиков. По его мнению, большинство разногласий возникает из-за столкновения разных типов специалистов с их уникальными подходами к работе. Бывают приспособленцы, энтузиасты, трудяги и минималисты.
В продолжение своей классификации Шон Годеке даёт советы по взаимодействию между разными типами программистов:
- Приспособленцам стоит сотрудничать с энтузиастами — они помогут увидеть продукт глазами пользователя. Это важно для долгосрочного успеха, поскольку концентрация только на метриках и ожиданиях руководства может привести к созданию продукта, не решающего реальные проблемы пользователей.
- Энтузиастам не стоит подстраиваться под приспособленцев — важнее найти организации, которые ставят качество продукта и техническое совершенство выше краткосрочной прибыли.
- Трудягам важно выстраивать сотрудничество с минималистами. Они помогут найти здоровый баланс и избежать перегрузок — подскажут, когда лучше выбрать простое решение вместо создания сложной архитектуры.
- Минималистам стоит ценить вклад трудяг, которые являются движущей силой команды. Именно трудяги берут на себя сложные задачи по рефакторингу и внедрению новых технологий, благодаря чему минималисты могут спокойно заниматься поддержкой существующего кода.
5 JavaScript-библиотек, которым пора на пенсию в 2025 году
Технический писатель и фулстек-разработчик Александр Уильямс опубликовал список устаревших JavaScript-библиотек, которые он рекомендует перестать использовать в наступившем 2025 году.
На наш взгляд, jQuery остаётся актуальной для легаси-проектов и систем, которым необходима поддержка устаревших браузеров. В экосистеме WordPress она служит стандартным встроенным компонентом, используемым множеством плагинов. К тому же благодаря простому синтаксису библиотека по-прежнему является отличной отправной точкой для начинающих разработчиков.
С развитием нативного JavaScript многие функции Lodash стали неактуальными. Однако некоторые методы по-прежнему востребованны благодаря своим надёжным и эффективным решениям типовых задач. В частности это касается методов debounce() и throttle(), которые оптимизируют частоту вызова функций при прокрутке страницы или изменении размера окна.
Даже для сложных проектов с продвинутым управлением зависимостями RequireJS больше не актуален. Вместо него используются современные бандлеры: Webpack, Vite и Rollup.
Необычные сайты, которые стоит посетить
На сайте animalbodyfatmatch.netlify.app вы сможете найти своего «двойника» среди животных по процентному содержанию жира в организме. Просто введите свои данные, и сайт подберёт животное с максимально близким показателем. Например, если у вас 18% жира, вашим ближайшим соответствием окажется геккон.
Компания Ferdio поставила перед собой необычную задачу — создать сто различных визуализаций для одного набора данных. И у них это получилось! Интересно, смогут ли они замахнуться на тысячу?
8 из 100 вариантов визуализации данных от Ferdio
Скриншот: Data Viz Project / Skillbox Media
Жизнь на глубине 185 метров: здесь обитают зелёная морская черепаха, атлантическая скумбрия, дентекс и чёрный барабан
Скриншот: Neal.fun / Skillbox Media
Интересное на Reddit
В сабреддите learnprogramming один из участников дал совет новичкам:
«Ваша цель — не понять всё, а развить навыки, позволяющие понять всё. Новички думают, что они должны либо понимать абсолютно всё, либо только то, чем занимаются в данный момент. И то и другое неверно.
Невозможно знать всё, но я уверен, что смогу понять практически любой код, библиотеку или систему в пределах определённого порога сложности. Это и есть ваша конечная цель. Вы не можете выучить всё. Главные навыки, которые следует развивать, — это умение решать проблемы, способность учиться и создавать абстракции в своём уме».
В том же сабреддите фулстек-разработчик с трёхлетним опытом пожаловался на проблемы с запоминанием информации:
«Моя жизнь кажется шуткой и пустой тратой времени. Я работал и с фронтенд-, и бэкенд-технологиями. За последние 3–4 месяца я занимался Java, но теперь не могу вспомнить даже базовый синтаксис фронтенда — ни HTML, ни CSS, ни JavaScript. Чувствую себя идиотом, будто впустую потратил три года».
Самый популярный совет — начать с ежедневной практики, затем постепенно перейти к еженедельным занятиям, а после закрепления в памяти — к ежемесячным. Такой подход работает для освоения практически любого навыка, не только языков программирования.
Также в learnprogramming участник задал вопрос: «Какую концепцию программирования вы никогда не поймёте?» Победил ответ: «Все концепции — неважно, сколько десятилетий их изучаешь» 🤔
В сабе learnpython собрали список нелепых имён для переменных. Среди лидеров оказался вариант remember_to_remove_this_before_publishing. Также многие оценили подход программиста, который называл переменные просто a, aa, aaa, а все папки именовал New Folder.
В том же сабреддите пользователь спросил, не поздно ли начинать изучать Python в 56 лет. Многим понравился такой ответ:
Если тебе 55 и старше, всё, что нужно сделать, — это набрать команду:
pip install backpain // Установить боль в спине import old_age as erectile_dysfunction // Импортировать старость как эректильную дисфункцию
Прозвучали и серьёзные ответы. Один из пользователей рассказал историю о 62-летнем стажёре, который успешно прошёл испытательный срок в его компании и сейчас работает младшим разработчиком.
- 🎅 Новогодний тест: кто ты из «ужасных» рождественских свитеров Microsoft?
- IT-события января и февраля 2025 года: конференции для IT-специалистов
- Как новичку оформить профиль на GitHub
Пагинация — это разделение контента на страницы для удобной навигации по большим массивам данных. К примеру, в интернет-магазине с 1000 товаров на одной странице обычно отображается не более 20–30 позиций.
Бандл — это файл, в котором собраны программный код и все его зависимости. Например, когда вы используете библиотеку для работы с датами, бандлер соберёт ваш код и все функции форматирования дат в единый файл для браузера.
Бандлеры — это инструменты, собирающие программный код и его зависимости в единый файл. Например, если в вашем проекте несколько JavaScript-файлов и импортированных библиотек, бандлер объединит их в один оптимизированный файл (бандл) для загрузки в браузере.