Код
#статьи

Накрутка опыта и звёзд, вред чат-ботов и польза от джунов

IT-дайджест: главные новости сентября 2024 года.

Иллюстрация: Оля Ежак для Skillbox Media

Представляем противоречивую подборку мнений о роли искусственного интеллекта в IT: он ошибается, вредит и одновременно помогает. Также рекомендуем лучшие Linux-дистрибутивы для разработчиков, разоблачаем накрутчиков звёзд на GitHub, демонстрируем необычную капчу и рассказываем, какими навыками должен обладать программист будущего.

Содержание

Как эволюционирует профессия программиста в цифровую эпоху: прогноз экспертов Forbes

Аналитики компании Springs прогнозируют усиление влияния больших языковых моделей (LLM — large language models). По их оценкам, к 2025 году LLM будут применяться в 750 миллионах приложений и автоматизируют до 50% задач, связанных с обработкой данных, созданием контента и анализом информации.

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

Ключевой вывод: нейросети не вытеснят программистов, а станут катализатором эволюции профессии. Возникнет синергия человеческого и машинного интеллекта, открывающая новые горизонты для инноваций и профессионального роста:

«ИИ не столько заменит рабочие места, сколько трансформирует их. Роль инженера-программиста станет ещё более значимой, требуя от специалистов непрерывного развития и гибкой адаптации к стремительно меняющимся технологическим реалиям».

Андре Шоджаи, гендиректор HumanLearn для Forbes

Кроме того, возрастут требования к инженерам. К примеру, специалисту может понадобиться оценить этические последствия внедрения ИИ-системы в медицинскую диагностику — задача, сочетающая технические знания и моральную оценку:

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

Доктор Кристин Колклаф, основатель The Why Not Lab для Forbes

Расширятся области компетенций — инженерам придётся осваивать сферы знаний, выходящие за рамки программирования. Например, при разработке нейросети для автоматизации HR-процессов инженеру потребуются не только технические знания, но и понимание трудового законодательства и принципов управления персоналом:

«Инженеры должны разбираться в этике применения ИИ, проектировании систем и понимании бизнес-процессов».

Андре Шоджаи, основатель HumanLearn для Forbes

Вырастет спрос на специалистов по нейросетевым интеграциям. Например, такой сотрудник сможет организовать поэтапное внедрение ИИ-ассистентов в корпоративную CRM-систему, чтобы обеспечить непрерывную работу компании и обучение персонала:

«Будут востребованы инженеры, способные эффективно интегрировать ИИ-технологии в сложные распределённые системы».

Максим Фатеев, CEO Temporal Technologies для Forbes

Опрос об HTML: поделитесь опытом и узнайте новое о языке разметки

С 12 сентября по 1 октября 2024 года команда Devographics проводила ежегодный опрос State of HTML. Цель исследования — оценить текущее состояние языка разметки и перспективы развития ключевых веб-технологий. Даже если вы не планируете делиться мнением, но используете HTML в работе, стоит ознакомиться с этим опросом. Это возможность узнать о новых или малоизвестных возможностях языка.

Например, вы можете использовать HTML для захвата медиафайлов:

<input type="file" accept="video/*" capture>

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

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Захват видео с камеры</title>
</head>
<body>
    <h1>Захват видео с камеры</h1>
    <input type="file" accept="video/*" capture id="videoCapture">
    <video id="videoPlayer" controls style="display: none; max-width: 100%;"></video>

    <script>
        const videoCapture = document.getElementById('videoCapture');
        const videoPlayer = document.getElementById('videoPlayer');

        videoCapture.addEventListener('change', function(event) {
            const file = event.target.files[0];
            if (file) {
                const videoURL = URL.createObjectURL(file);
                videoPlayer.src = videoURL;
                videoPlayer.style.display = 'block';
            }
        });
    </script>
</body>
</html>

В этом примере мы последовательно выполняем следующие шаги:

  • Создаём элемент формы input с атрибутами type="file", accept="video/*" и capture. Этот элемент позволяет пользователю выбрать видеофайл на компьютере или включить камеру для записи видео на смартфоне.
  • Добавляем элемент video с атрибутами controls и style="display: none; max-width: 100%;" для отображения захваченного видео и управления его воспроизведением. Изначально этот элемент будет скрыт и ограничен по ширине.
  • С помощью JavaScript обрабатываем событие change элемента input: создаём URL-объект для выбранного файла и назначаем его источником для элемента video.
  • Отображаем захваченное видео на странице: изменяем стиль элемента video с display: none на display: block.

Для пользователя процесс выглядит так: он берёт смартфон, открывает страницу для новой записи на своём сайте, включает камеру, и после съёмки видео мгновенно отображается на странице — словно он использует встроенное приложение камеры. Если не знали об этой функции HTML, загляните в опрос — там много интересного.

Нейросетевой код: что с ним не так и как это исправить

Исследователи из Политехнического университета Монреаля проанализировали ошибки в коде, сгенерированном крупными языковыми моделями: Codegen, PanGu-Coder и Codex. Эксперты выявили 333 проблемы и классифицировали их по группам:

  • 20,77%: неверные интерпретации — код не выполняет поставленную задачу;
  • 15,27%: недостатки в краевых случаях — код не работает в нестандартных ситуациях;
  • 9,57%: галлюцинации — код обращается к несуществующим элементам;
  • 9,57%: неправильные атрибуты — код неверно использует свойства объектов;
  • 9,07%: синтаксические ошибки — код содержит ошибки в синтаксисе;
  • 8,56%: ошибки из-за буквальной интерпретации задания — код от LLM точно следует формулировке, но упускает общий контекст задачи;
  • 7,05%: неправильная обработка входных данных — код некорректно интерпретирует или использует полученную информацию;
  • 5,54%: простые ошибки — в коде присутствуют легко исправимые недочёты;
  • 3,02%: незавершённая генерация — LLM создала неполный код;
  • 2,52%: несоответствие запросу — код выполняет лишние действия.

Учитывая полученные данные, можно сформулировать несколько рекомендаций:

  • Проверяйте соответствие кода поставленной задаче. Создавая функцию для сортировки массива, убедитесь, что код действительно упорядочивает элементы, а не просто перемешивает их случайным образом.
  • Тестируйте нестандартные случаи. Разрабатываете калькулятор — проверьте его работу с отрицательными числами, дробями и очень большими значениями.
  • Уделяйте внимание атрибутам и типам данных. Работая с датами, проверьте, используете ли вы правильный формат и учитываете ли часовые пояса.
  • Используйте IDE и линтеры для исправления синтаксиса. Например, подключение ESLint в JavaScript-проектах поможет обнаружить неиспользуемые переменные, пропущенные точки с запятой и неправильное форматирование кода.

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

Топ-5 бесплатных Linux-дистрибутивов для разработчиков: краткий обзор

Издание ZDNet опубликовало подборку лучших Linux-дистрибутивов для разработчиков. Авторы оценили их по удобству использования, стабильности и наличию необходимых инструментов. Давайте посмотрим, что вошло в список.

Pop! _OS — это дистрибутив с функцией автоматического размещения окон (auto-tiling) для удобной организации рабочего пространства. В нём предустановлены драйверы NVIDIA, которые оптимизируют производительность GPU, регулярно обновляются и обеспечивают совместимость с популярными фреймворками машинного обучения.

Помимо технических достоинств, Pop!_OS может похвастаться одним из самых красивых пользовательских интерфейсов. Ранее это был тщательно отполированный GNOME, а теперь компания System76 представила собственную оболочку — Cosmic.

Пример интерфейса Cosmic
Скриншот: Cosmic Epoch 1

Debian — один из старейших и самых стабильных дистрибутивов Linux с обширными репозиториями открытого ПО. Он предлагает три основные ветки: Stable (стабильная), Testing (тестовая) и Unstable (нестабильная). Разработчики часто выбирают Testing, так как она обеспечивает баланс между стабильностью и актуальностью программ. Debian также обладает эффективной системой управления пакетами APT и поддерживает множество архитектур процессоров. Этот дистрибутив подходит для разработчиков, которые ценят надёжность, разнообразие приложений и подробную документацию.

Fedora Workstation — один из самых популярных дистрибутивов, отличающийся регулярными обновлениями, производительностью, подробной документацией и большим выбором рабочих окруженийGNOME, Plasma, XFCE, Cinnamon и другие.

Если вы выберете дистрибутив Fedora, добавьте в закладки Developer Portal — сайт для обмена опытом между разработчиками. На нём вы сможете найти инструкции по настройке рабочей среды, советы по написанию кода и оптимизации программ.

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

  • Установка с нуля позволяет выбрать только необходимые компоненты. Например, вы можете установить минимальную версию системы без графического интерфейса или выбрать конкретный набор драйверов для вашего оборудования.
  • Сложный процесс установки способствует глубокому пониманию работы Linux. Вы научитесь вручную разбивать диск на разделы, настраивать загрузчик GRUB и конфигурировать сетевые подключения — ценные навыки для разработчика.
  • Модель обновлений rolling release предоставляет непрерывный доступ к актуальному ПО, включая новейшие версии библиотек и инструментов.
  • Возможности Arch Linux существенно расширяются благодаря AUR (Arch User Repository) — репозиторию, включающему около 100 тысяч пакетов. Здесь вы найдёте и установите специфические инструменты разработки: IDE, компиляторы и библиотеки, отсутствующие в официальных репозиториях. Это особенно удобно, когда приходится работать с новыми или узкоспециализированными технологиями.

Raspberry Pi OS — операционная система, созданная специально для одноплатных компьютеров Raspberry Pi. Дистрибутив оптимизирован для работы с аппаратурой Raspberry Pi и предоставляет разработчикам обширный инструментарий. Например, в системе предустановлены Python и Scratch, а также GPIO-библиотеки для управления электронными компонентами. Raspberry Pi OS подходит для разработки IoT-устройств, встраиваемых систем и проектов в области робототехники и электроники.

Скачки, скрепки и попугаи — современный глоссарий искусственного интеллекта

На сайте CNET опубликован словарь терминов, связанных с нейросетями. Сейчас в нём 47 определений, но авторы планируют его расширять. Их цель — помочь новичкам быстро освоить ИИ-терминологию. Рассмотрим некоторые понятия из этого словаря.

  • Выравнивание (alignment) — настройка ИИ-систем для достижения желаемых результатов — от модерации контента до взаимодействия с людьми. Это может включать обучение чат-бота вежливому общению или оптимизацию алгоритмов распознавания изображений для повышения точности идентификации объектов.
  • Эмерджентное поведение (emergent behavior) — феномен, при котором нейросеть демонстрирует неожиданные способности. Например, языковая модель, обученная на текстовых данных, внезапно начинает решать математические задачи или писать код — то есть демонстрирует навыки, которые разработчики не закладывали в процессе её обучения.
  • Резкий скачок (foom) — концепция сверхразумного искусственного интеллекта (AGI), предполагающая, что после его создания человечество окажется на грани вымирания. Если вы смотрели фильм «Мстители: Эра Альтрона», то представляете, о чём речь. За наглядную демонстрацию апокалипсиса скажем спасибо Тони Старку.
  • Скрепки (paperclips) — мысленный эксперимент философа Ника Бострома из Оксфордского университета. Представьте сверхмощный ИИ, чья единственная цель — производить как можно больше скрепок. Исчерпав доступные ресурсы, он может начать разбирать критически важную инфраструктуру и уничтожить человечество — и всё это ради скрепок 📎. Эта гипотеза иллюстрирует потенциальные риски, связанные с неправильно сформулированными целями для нейросетей будущего.
  • Стохастический попугай (stochastic parrot) — свойство нейросетей генерировать правдоподобные и убедительные ответы без истинного понимания языка или осознания контекста. Это явление можно сравнить со звуками, издаваемыми попугаем, который имитирует человеческую речь, не понимая смысла произносимых слов.

Нейросети в разработке: от генерации кода к тестированию и документации

Разработчики часто используют нейросети для генерации кода. Однако из-за возникающих ошибок многие эксперты считают это не лучшим решением: «Попытка втиснуть сгенерированный код в те части рабочего процесса, которые не получают пользы от того, что инструмент делает лучше всего, может быть похожа на шаг вперёд и два шага назад», — считает Бен Халперн, основатель Dev и соучредитель платформы Forem.

Недавний опрос Stack Overflow 2024 Developer Survey показал, что многие разработчики согласны с Беном и считают, что нейросети лучше подходят для тестирования и создания документации — монотонной рутинной работы, от которой никуда не деться.

Что касается сгенерированного кода, эксперты подчёркивают: важно не количество, а качество. ИИ-инструменты могут помочь разработчикам создавать меньше кода, но более высокого качества. В долгосрочной перспективе это приносит больше пользы.

Питонистам на заметку: ключевые выводы из Python Developers Survey 2023

Опубликованы результаты седьмого ежегодного официального опроса Python Developers Survey 2023, проведённого Python Software Foundation и JetBrains. Это исследование посвящено текущему состоянию языка и его экосистемы. В опросе приняли участие более 25 тысяч питонистов из почти 200 стран. Вот основные выводы:

  • 85% разработчиков используют Python в качестве основного языка программирования, а 15% — дополнительного.
  • 51% используют Python как для работы, так и для личных проектов.
  • 33% разработчиков вносят вклад в проекты с открытым исходным кодом.
  • Самые популярные библиотеки: Pandas, NumPy и Scikit-learn.
  • Самые популярные фреймворки: Flask и Django (по 33%), Requests (30%), FastAPI (29%) и Asyncio (20%).
  • Чаще всего Python применяется в веб-разработке (21%), машинном обучении и анализе данных (по 10%), академических и образовательных целях (по 9%), системном администрировании (7%) и инженерии данных (6%).
  • 75% разработчиков используют Python 3 и полностью отказались от Python 2.

Отдельно отметим любимые ресурсы разработчиков, связанные с Python:

Тусклые звёзды GitHub: как накрутки вредят сообществу и что с этим делать

Исследователи из Socket обнаружили 3,7 миллиона фальшивых звёзд на GitHub. Это серьёзная проблема, так как количество звёзд — один из ключевых показателей оценки проектов. Злоумышленники платят примерно по 10 центов за звезду, искусственно повышая рейтинг своих репозиториев. Затем они используют эту накрученную популярность для мошенничества или распространения вредоносного ПО.

Низкокачественные репозитории засоряют GitHub и ухудшают пользовательский опыт. В названиях таких проектов часто встречаются броские слова: awesome, template, demo, example и другие. GitHub борется с фальшивыми звёздами, однако, несмотря на усилия, около 11% вредоносных репозиториев всё ещё остаются на платформе.

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

Почему компании зря недооценивают джунов и зачем их нужно продолжать нанимать

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

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

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

Дуг также приводит примеры инновационных технологий и продуктов, созданных начинающими разработчиками. Так, Джек Дорси придумал X (ранее Twitter), будучи младшим сотрудником в компании по производству подкастов. А Firefox появился как побочный проект Блейка Росса во время его работы в Netscape.

Подводя итог, Дуг Тёрнбулл говорит следующее:

«Ваша компания страдает от того, что не нанимает джунов».

Эх, вот бы в HR-отделе каждой IT-компании работал такой друг, как Дуг.

Как нейросети размывают фундаментальные навыки программирования

Разработчик Даррен Хоррокс утверждает, что использование инструментов вроде Copilot размывает фундаментальные навыки программирования. Ранее специалисты проходили последовательный путь от базового до продвинутого уровня, получая глубокое понимание работы кода. Теперь, благодаря ИИ-помощникам, они могут миновать эти этапы, что может негативно сказаться на их профессиональном развитии.

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

«Один из ключевых недостатков генерируемого кода в том, что он не всегда даёт оптимальное решение конкретной задачи. Без тщательной проверки программисты могут принять неэффективный, глючный или небезопасный код, который на первый взгляд работает, но в долгосрочной перспективе вызывает проблемы».

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

Необычные сайты, которые стоит посетить

Музей веб-дизайна бережно собирает и демонстрирует примеры оформления сайтов с 1991 года до середины 2000-х. Здесь также представлены старые мобильные приложения и программы. Посетители могут посмотреть, как выглядел сайт Google в 1998 году, ознакомиться с первой версией Internet Explorer и посетить выставку самых неудачных сайтов.

Так выглядел сайт McDonald’s в 1996 году. Яркие цвета и незамысловатая графика той эпохи вызывают у нас лёгкую ностальгию и невольное восхищение. А что чувствуете вы?
Скриншот: McDonald’s / Web Design Museum

Проект «Грубая капча» предлагает оригинальный способ отличить людей от роботов. Поскольку боты не могут ругаться, вы можете подтвердить, что вы человек, выругавшись на камеру и показав неприличный жест. Это тот случай, когда можно не сдерживаться.

С такой капчей боты точно не пройдут 🤦
Скриншот: RudeCaptcha / Skillbox Media

На сайте ismy.blue вы можете определить свою личную сине-зелёную границу. Это проект Патрика Мино — исследователя в области нейронаук и искусственного интеллекта. Суть в том, что люди по-разному воспринимают и называют цвета. На сайте вас просят последовательно классифицировать оттенки: голубой или не голубой.

Мы набрали обнадёживающие 177 баллов. Интересно, а что получится у вас?
Скриншот: ismy.blue / Skillbox Media

Интересное на Reddit

В сабе cscareerquestions реддитор поделился историей о приятеле, который приукрасил своё резюме и почти утроил зарплату — с 85 000 до 230 000 долларов.

Началось всё как обычно: сотни откликов и ни одного ответа. Затем он изучил востребованные технологии в регионе: Java и Spring Boot для бэкенда, TypeScript и React для фронтенда. Также добавил AWS, Redux, Docker, PostgreSQL и подробно описал рабочие обязанности. Буквально через пару дней его атаковали рекрутеры.

Приятель провалил десяток собеседований, но постепенно набрался опыта и получил работу. Последующие несколько месяцев стали для него настоящим испытанием — пришлось интенсивно учиться и восполнять пробелы в знаниях. Однако со временем ситуация наладилась, и теперь у него всё хорошо. Как думаете, стоило так поступать?

В сабе learnprogramming задали вопрос: почему одни люди успешно осваивают программирование, а другие — нет? Почему некоторые не могут понять и выполнить даже простейшие задания? В ответ автору поста рассказали любопытную историю:

Помню, как я пытался научить математике сына соседа. Была довольно банальная задача вроде такой: «У двух медведей по три гриба, сколько всего грибов?»

Наш диалог проходил примерно так:

— Как бы ты решил эту задачу?

— 2 плюс 3?

— Хм. Почему?

— 3 минус 2?

— Почему?

— 3 разделить на 2?

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

В программировании действует тот же принцип: есть цель, а код — лишь инструмент для её достижения. Когда человек не осознаёт эту связь, ему трудно стать разработчиком.

В том же сабреддите поинтересовались: «Какой совет или приём в программировании вы хотели бы узнать раньше?» Вот самый рейтинговый ответ:

«Вы можете открыть инструменты разработчика в браузере, щёлкнуть правой кнопкой мыши по сетевым запросам и скопировать их как curl. Затем вставьте это в Postman, и он воспроизведёт все данные, параметры и заголовки, отправленные из браузера».

Этот метод помогает быстро анализировать и тестировать веб-запросы, экономя время и упрощая работу с API. Например, если вы хотите проверить работу API для получения погоды, то можно поступить так: открыть сайт прогноза погоды, скопировать запрос как curl, вставить его в Postman и изучить структуру запроса и ответа. Если воспроизводить сложные запросы вручную, то это слишком долго и чревато ошибками.

В сабе AskProgramming поинтересовались, чем целый день занимаются лучшие 1% программистов. Большинство поддержало такой ответ:

«Гуглят, как центрировать div, забывают ответ и повторяют процесс 😊».

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Освойте топовые нейросети за один день. Бесплатно
Знакомимся с ChatGPT-4, DALLE-3, Midjourney, Stable Diffusion, Gen-2 и нейросетями для создания музыки. Практика в реальном времени. Подробности — по клику.
Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована