Нейросети в найме и разработке, конфликты среди программистов и история загадочной песни
IT-дайджест: главные новости декабря 2024 года.
Иллюстрация: Оля Ежак для Skillbox Media
В этом выпуске мы расскажем, как искусственный интеллект становится мощным инструментом в руках опытных программистов, поделимся ценными советами от ведущего инженера Google, раскроем детективную историю о самой загадочной песне в интернете и представим список JavaScript-библиотек, с которыми стоит попрощаться в уходящем году.
Содержание
- За пределами промптов: эволюция роли разработчика в эпоху искусственного интеллекта
- Как правильно использовать нейросети в разработке: рекомендации ведущего инженера Google
- 🎵 40 лет спустя: интернет-детективы нашли авторов «потерянной» песни 1984 года
- Искусственный интеллект против HR: как технологии меняют процесс найма IT-специалистов
- Анатомия IT-команды: конфликты программистов и путь к взаимопониманию
- 5 JavaScript-библиотек, которым пора на пенсию в 2025 году
- Необычные сайты, которые стоит посетить
- Интересное на Reddit
За пределами промптов: эволюция роли разработчика в эпоху искусственного интеллекта
Глава 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-специалисты при поиске работы.
Изменение формата технических собеседований. Создатели сервиса interviewing.io провели исследование эффективности ChatGPT на технических собеседованиях. В рамках эксперимента компания организовала 32 аудиоинтервью, во время которых кандидаты использовали чат-бота, не сообщая об этом интервьюеру.
Результаты оказались показательными: кандидаты успешно прошли 73% собеседований при решении стандартных задач с Leetcode, 67% — при решении слегка модифицированных задач, и лишь 25% — при ответах на уникальные вопросы, которые отсутствуют в интернете.
На основе этих результатов HR-специалисты пересмотрели подход к проведению собеседований. Теперь происходит переход от алгоритмических задач, которые легко решаются с помощью ИИ, к более практичным форматам — анализу кода и системному дизайну. Так, вместо решения задач на сортировку массивов, кандидатам предлагают разобрать существующую кодовую базу или спроектировать архитектуру масштабируемого веб-приложения.
Анализ подозрительного поведения кандидатов. Несмотря на все преимущества очных собеседований, их проведение часто затруднено из-за географической удалённости кандидатов и ограничений по времени. В таких случаях компании проводят видеоинтервью, но многие кандидаты пытаются обойти установленные правила.
Некоторые разработчики даже откровенно зачитывают ответы чат-бота начиная с общих фактов. Особенно заметно это становится, когда кандидат моментально предлагает готовое решение без уточняющих вопросов и объяснения логики своих действий. По словам Уэса Винлера, основателя Woven Teams, подобные случаи встречаются часто:
«Как правило, обман обнаруживается на финальном этапе собеседования. При просмотре записи технического интервью становится очевидным: кандидат постоянно отводит взгляд от экрана и делает длительные паузы».
Читайте также:
Фильтрация откликов. Кандидаты всё чаще используют ИИ для создания сопроводительных писем и резюме. Один из респондентов поделился таким случаем:
«Один кандидат подал заявки на разные позиции в нашей компании — от администратора баз данных до React-разработчика. Его сопроводительные письма идеально соответствовали требованиям каждой вакансии, но при этом полностью противоречили информации в резюме».
В ответ на это компании внедряют специализированные программы для обнаружения и фильтрации заявок, созданных с помощью нейросетей. Мы становимся свидетелями необычной технологической гонки — кандидаты применяют ИИ для написания безупречных заявок, а работодатели используют ИИ — для выявления искусственного контента.
💡 Исследование The Pragmatic Engineer указывает, что описание реального опыта — единственный эффективный подход при трудоустройстве. Но действительно ли это так?
Анатомия IT-команды: конфликты программистов и путь к взаимопониманию
Шон Годеке, ведущий инженер GitHub, предложил интересный взгляд на природу конфликтов среди разработчиков. По его мнению, большинство разногласий возникает из-за столкновения разных типов специалистов с их уникальными подходами к работе. Бывают приспособленцы, энтузиасты, трудяги и минималисты.
Приспособленцы. Они мастерски создают нужный образ перед руководством и демонстрируют преданность компании. Благодаря умению находить общий язык с начальством, они отлично справляются в крупных организациях и успешно ведут сложные проекты. Когда компания ставит в приоритет качественный код и довольных клиентов, приспособленцы обязательно это обеспечат. При этом они стараются никогда не жертвовать личными интересами, если работа не приносит достойного вознаграждения.
Энтузиасты. Эти сотрудники стремятся хорошо выполнять свою работу. Они активно участвуют в принятии решений по продукту, всегда ставя пользовательский опыт выше прибыли. Энтузиасты отлично поддерживают кодовую базу и с увлечением работают над долгосрочными техническими задачами. Однако при смене курса компании им бывает сложно адаптироваться к новым условиям.
Трудяги. Они обожают писать код, проверять пул-реквесты и отвечать на вопросы. Им нравится быть полезными и погружаться в задачу с головой. В отличие от энтузиастов, которыми движет качество продукта и его польза, трудяг мотивирует сам процесс программирования. Иногда трудяги настолько погружаются в работу, что теряют чувство меры — пренебрегают отдыхом и личной жизнью, берутся за слишком много задач и выгорают.
Минималисты. Они вкладывают ровно столько усилий, сколько необходимо для выполнения задачи. В свободное время они продолжают обдумывать рабочие проблемы. Минималисты создают спокойную атмосферу в команде — у них всегда есть запас времени и энергии, так как они редко погружаются в одну задачу на несколько дней подряд. Однако их эффективность снижается в командах с большим объёмом чётко определённой работы.
В продолжение своей классификации Шон Годеке даёт советы по взаимодействию между разными типами программистов:
- Приспособленцам стоит сотрудничать с энтузиастами — они помогут увидеть продукт глазами пользователя. Это важно для долгосрочного успеха, поскольку концентрация только на метриках и ожиданиях руководства может привести к созданию продукта, не решающего реальные проблемы пользователей.
- Энтузиастам не стоит подстраиваться под приспособленцев — важнее найти организации, которые ставят качество продукта и техническое совершенство выше краткосрочной прибыли.
- Трудягам важно выстраивать сотрудничество с минималистами. Они помогут найти здоровый баланс и избежать перегрузок — подскажут, когда лучше выбрать простое решение вместо создания сложной архитектуры.
- Минималистам стоит ценить вклад трудяг, которые являются движущей силой команды. Именно трудяги берут на себя сложные задачи по рефакторингу и внедрению новых технологий, благодаря чему минималисты могут спокойно заниматься поддержкой существующего кода.
Читайте также:
5 JavaScript-библиотек, которым пора на пенсию в 2025 году
Технический писатель и фулстек-разработчик Александр Уильямс опубликовал список устаревших JavaScript-библиотек, которые он рекомендует перестать использовать в наступившем 2025 году.
jQuery. Задачи, для которых создавалась jQuery, сейчас эффективно решаются нативными средствами JavaScript и современными фреймворками React, Vue и Angular. Встроенные методы querySelector(), addEventListener() и fetch() полностью покрывают манипуляции с DOM и AJAX-запросами — те функции, для которых разработчики традиционно использовали jQuery.
На наш взгляд, jQuery остаётся актуальной для легаси-проектов и систем, которым необходима поддержка устаревших браузеров. В экосистеме WordPress она служит стандартным встроенным компонентом, используемым множеством плагинов. К тому же благодаря простому синтаксису библиотека по-прежнему является отличной отправной точкой для начинающих разработчиков.
Читайте также:
Moment.js. Эта библиотека долгое время была стандартным инструментом для работы с датами. Однако её вытеснили более легковесные решения — Date-fns и Luxon. Причина в том, что даже для простого форматирования даты Moment.js требует загрузки всей библиотеки размером 232 КБ, в то время как Date-fns позволяет импортировать только нужную функцию форматирования, добавляя лишь 2–3 КБ к размеру бандла.
Lodash. Это универсальная библиотека для работы с массивами, объектами и структурами данных. Она предоставляет набор готовых методов, что избавляет разработчиков от написания собственных функций. Например, sortBy() для сортировки массивов объектов и cloneDeep() для глубокого клонирования данных. Это сделало библиотеку частью многих проектов.
С развитием нативного JavaScript многие функции Lodash стали неактуальными. Однако некоторые методы по-прежнему востребованны благодаря своим надёжным и эффективным решениям типовых задач. В частности это касается методов debounce() и throttle(), которые оптимизируют частоту вызова функций при прокрутке страницы или изменении размера окна.
Underscore.js. У этой библиотеки отсутствуют регулярные обновления и активная поддержка, поскольку она является предшественником Lodash. Более того, современный JavaScript предоставляет аналогичные возможности «из коробки». Например, Underscore.js ранее предлагала методы массивов map() и filter(), которые теперь являются стандартной частью языка.
RequireJS. Эта библиотека была создана для удобного управления зависимостями в JavaScript-проектах. С появлением встроенных ES6-модулей (import/export) и их поддержкой в современных браузерах необходимость в RequireJS практически отпала.
Даже для сложных проектов с продвинутым управлением зависимостями RequireJS больше не актуален. Вместо него используются современные бандлеры: Webpack, Vite и Rollup.
Читайте также:
Необычные сайты, которые стоит посетить
На сайте animalbodyfatmatch.netlify.app вы сможете найти своего «двойника» среди животных по процентному содержанию жира в организме. Просто введите свои данные, и сайт подберёт животное с максимально близким показателем. Например, если у вас 18% жира, вашим ближайшим соответствием окажется геккон.
DiffText — удобный инструмент для сравнения текстов. Например, когда коллега присылает свою версию документа в Word, а у вас исходник в Google Docs, DiffText покажет все внесённые изменения. Инструмент поддерживает не только обычный текст, но и другие форматы: код, JSON, YAML, HTML, CSS и разметку Markdown.
Компания Ferdio поставила перед собой необычную задачу — создать сто различных визуализаций для одного набора данных. И у них это получилось! Интересно, смогут ли они замахнуться на тысячу?
Comball — это простая, но невероятно затягивающая мини-игра, сочетающая в себе бильярд и головоломку. Вы объединяете 15 шаров по цветам, набираете очки и повышаете уровень, соединяя чёрные шары. Игра настолько увлекательна, что чуть не сорвала выпуск этих новостей.
The Deep Sea — захватывающий сайт, который позволяет совершить виртуальное погружение в океан и познакомиться с его обитателями на разных глубинах. Поразительно, что жизнь есть даже на глубине 10 000 метров!
Интересное на Reddit
В сабреддите learnprogramming один из участников дал совет новичкам:
«Ваша цель — не понять всё, а развить навыки, позволяющие понять всё. Новички думают, что они должны либо понимать абсолютно всё, либо только то, чем занимаются в данный момент. И то и другое неверно.
Невозможно знать всё, но я уверен, что смогу понять практически любой код, библиотеку или систему в пределах определённого порога сложности. Это и есть ваша конечная цель. Вы не можете выучить всё. Главные навыки, которые следует развивать, — это умение решать проблемы, способность учиться и создавать абстракции в своём уме».
Читайте также:
В том же сабреддите фулстек-разработчик с трёхлетним опытом пожаловался на проблемы с запоминанием информации:
«Моя жизнь кажется шуткой и пустой тратой времени. Я работал и с фронтенд-, и бэкенд-технологиями. За последние 3–4 месяца я занимался Java, но теперь не могу вспомнить даже базовый синтаксис фронтенда — ни HTML, ни CSS, ни JavaScript. Чувствую себя идиотом, будто впустую потратил три года».
Самый популярный совет — начать с ежедневной практики, затем постепенно перейти к еженедельным занятиям, а после закрепления в памяти — к ежемесячным. Такой подход работает для освоения практически любого навыка, не только языков программирования.
Также в learnprogramming участник задал вопрос: «Какую концепцию программирования вы никогда не поймёте?» Победил ответ: «Все концепции — неважно, сколько десятилетий их изучаешь» 🤔
В сабе learnpython собрали список нелепых имён для переменных. Среди лидеров оказался вариант remember_to_remove_this_before_publishing. Также многие оценили подход программиста, который называл переменные просто a, aa, aaa, а все папки именовал New Folder.
В том же сабреддите пользователь спросил, не поздно ли начинать изучать Python в 56 лет. Многим понравился такой ответ:
Если тебе 55 и старше, всё, что нужно сделать, — это набрать команду:
Прозвучали и серьёзные ответы. Один из пользователей рассказал историю о 62-летнем стажёре, который успешно прошёл испытательный срок в его компании и сейчас работает младшим разработчиком.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!