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

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

от admin

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

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

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

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

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

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

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

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

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

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

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

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

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

Опрос об 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 может похвастаться одним из самых красивых пользовательских интерфейсов. Ранее это был тщательно отполированный GNOME, а теперь компания System76 представила собственную оболочку — Cosmic.

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

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

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

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

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

На сайте 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 000 питонистов из почти 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:

  • Ютуб-каналы: ArjanCodes, mCoding, freeCodeCamp.org, Tech With Tim, Programming with Mosh, Corey Schafer, CodeWithHarry, anthonywritescode.
  • Блоги: Real Python, testdriven.io, Medium, Bite code!, Lobsters, Towards Data Science, Reddit.
  • Подкасты: Talk Python to Me, Lex Fridman Podcast, The Real Python Podcast, Django Chat, Core.py, Python Bytes, PythonTest, «Люди и код» (🤭🤞🤭).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Так выглядел сайт 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, забывают ответ и повторяют процесс 😊».

IDE (интегрированная среда разработки) — это программа с набором инструментов, которая помогает программистам писать, редактировать и отлаживать код. Популярные примеры IDE: Visual Studio Code, IntelliJ IDEA и PyCharm.

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

ESLint — популярный линтер для JavaScript. Он помогает обнаруживать и исправлять проблемы в коде, улучшать форматирование и применять лучшие практики программирования. Например, ESLint может предложить использовать ключевое слово const вместо устаревшего var для объявления переменных.

GPU (graphics processing unit) — графический процессор, специализированный чип для обработки и отображения визуальной информации. Он ускоряет рендеринг графики и видео, а также выполняет сложные вычисления в играх, 3D-моделировании, машинном обучении и других ресурсоёмких задачах.

Ветка в контексте операционных систем — версия дистрибутива с определённым набором пакетов и уровнем стабильности. Каждая ветка служит своей цели:

— Стабильная — обеспечивает надёжность и безопасность системы.
— Тестовая — предлагает баланс между стабильностью и новизной ПО.
— Нестабильная — содержит новейшие обновления для энтузиастов и разработчиков.

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

Загрузчик GRUB — программа, запускающая операционную систему при включении компьютера.

Rolling release — модель разработки операционной системы, при которой обновления выпускаются непрерывно, без фиксированных версий. Например, в Arch Linux пользователи получают новейшие версии программ сразу после их выпуска. В отличие от систем с фиксированными релизами, где обновления собираются в большие пакеты и выпускаются периодически.

Curl — утилита командной строки для передачи данных по различным протоколам. Её часто применяют для тестирования и отладки веб-запросов.

Похожие статьи