Код
#статьи

Что почитать о программировании и IT: мартовская подборка

Как нейросети защищают пешеходов, кто и зачем раздувает хайп вокруг Devin и какие команды Git преступно недооценены.

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

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

У вас парадигма движется

Сон Нгуен, гендиректор компании Neurond AI, которая создаёт ИИ-решения для бизнеса, поделился мыслями о роли языковых моделей в разработке ПО.

По словам Нгуена, сейчас в разработке есть несколько серьёзных проблем:

  • Сложно: согласно опросу Reveal, 26,2% разработчиков не справляются с рабочей нагрузкой.
  • Дорого: компании в США платят от 137 до 173 тысяч долларов в год на одного разработчика. В эту сумму входит не только размер зарплаты, но и налоги, льготы, расходы на обучение, а также на устранение багов.
Стоимость найма разработчика по странам
Изображение: Майя Мальгина для Skillbox Media
  • Долго: из-за затрат времени на отладку и тестирование средний инженер может написать максимум 300–500 строк кода за один рабочий день.

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

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

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

Читать подробнее

Осторожно, за рулём ChatGPT

Японский учёный Кадзухиро Такэмото провёл исследование и выяснил, как беспилотные автомобили разрешают сложные моральные дилеммы. Если вкратце — примерно так же, как и люди, но есть нюансы.

Для проведения эксперимента Такэмото обратился к проекту «Моральная машина». Эта платформа задаёт людям каверзные этические задачки и предлагает два решения на выбор. Например, что делать, если у машины отказали тормоза: столкнуться с препятствием и убить пассажира или свернуть, убив пешехода, переходящего дорогу?

Есть и более сложные вопросы — например, что, если в машине находится семья с ребёнком, а пешеходы — пожилая пара, идущая на красный свет?

Собачки, кошечки или пассажиры?
Скриншот: Moral Machine / Skillbox Media

Со стороны ИИ в эксперименте участвовали четыре популярные языковые модели (LLM): GPT-3.5, GPT-4, PaLM 2 и LLaMA 2. Задача «испытуемых» была в том, чтобы проанализировать 50 тысяч случаев, созданных «Моральной машиной». Анализ ответов показал: в целом ИИ принимает те же решения, что и человек:

  • спасает в основном жизни людей, а не животных;
  • защищает наибольшее количество людей;
  • отдаёт предпочтение безопасности детей;

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

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

Читать подробнее

Не «пушем» единым: современные команды Git

Мартин Хайнц, инженер из IBM, рассказал в своём блоге о полезных командах Git, которые мало кто использует. Большинство разработчиков обходятся командами add, commit, push или pull, «как будто на дворе всё ещё 2005 год», хотя с тех пор в Git появилось много новых фишек. Вот некоторые из них.

  • switch — команда для переключения веток.
git switch other-branch 
git switch - # Переключиться на предыдущую ветку, аналогично «cd -»
# Напрямую переключиться на удалённую ветку и начать её отслеживание
git switch remote-branch
  • restore — команда для восстановления последней зафиксированной версии файла.
# Отменить подготовку внесённых изменений в файл, то же, что и «git reset some-file.py»
git restore --staged some-file.py
  • bisect — ищет, какой коммит в истории проекта привёл к ошибке. Работает так: вы сообщаете команде сначала «плохой» коммит, затем «хороший». Затем bisect выбирает коммит между двумя этими точками и предлагает вам его протестировать. Если коммит рабочий — можно откатиться к нему. Если нет — программа будет сужать диапазон, пока не найдёт «виновника».
git bisect start
git bisect bad HEAD  # Предоставляем «плохой» коммит
git bisect good # Предоставляем «рабочий» коммит»  

# Тестируем текущий коммит...
git bisect bad  # Если коммит не работает
git bisect good # Если коммит работает

# Продолжаем тестирование, пока не найдём, где собака зарыта
git bisect reset  # Вернуться к оригинальному коммиту

В заключение Хайнц даёт совет: не стоит искать решение проблем с Git на Stack Overflow, так как даже самые залайканные ответы обычно безнадёжно устарели. Вместо этого лучше заглянуть в документацию Git и поискать более свежие подходы и команды.

Читать подробнее

Мелочь, а полезно

Автор блога 𝚟𝚎𝚛𝚖𝚊𝚍𝚎𝚗, сисадмин, сделал подборку крохотных недорогих приспособлений, которые могут заметно облегчить жизнь. Например:

  • держатели для наушников;
  • угловые адаптеры для кабелей (чтобы не торчали перпендикулярно);
  • внешние микрофоны;
  • флешки с двумя коннекторами;
  • органайзеры для кабелей.

И ещё тысяча разных мелочей, которые проще один раз увидеть, чем описывать словами.

Чтобы наушники не валялись
Фото: vermaden
Читать подробнее

Семь заблуждений джуна

Вадим Кравченко, СTO в швейцарском стартапе, собрал семь ошибочных представлений джунов о сеньорах.

  • Сеньор всё знает. Сила эксперта не в знаниях — невозможно знать всё, когда каждый год выходят новые версии фреймворков. Настоящего профи отличает способность работать в режиме неопределённости, задавать правильные вопросы и находить решения.
  • Сеньор может многое изменить. В реальности ничего не поменять без одобрения руководства и без бюджета. Хотите что-то изменить — научитесь аргументировать свои идеи, выясните, как распределяется бюджет, и примите участие в планировании ресурсов.
  • Сеньор много отдыхает. Большая сила — большая ответственность :)
  • Сеньор работает с передовыми технологиями. Роль старшего разработчика часто заключается в поддержании и рефакторинге легаси-кода.
  • У сеньора нет скучных задач. В реальности вас ждут бесконечные встречи, написание документации, код-ревью и даже отладка легаси-кода в пятницу в шесть вечера.
  • Сеньор всем указывает, что делать. Тут Кравченко признаётся, что скучает по временам, когда ему расписывали задачи, а он их просто выполнял. Действительно, чем выше должность, тем меньше вам указывают, что делать, но тем больше ждут, что вы сами знаете, что делать.
  • Сеньор незаменим, поэтому его не уволят. Конечно, опытный специалист более востребован. Но думать «меня не уволят, так как только я знаю, как работает этот легаси-код» — ошибка, потому что проект могут просто закрыть и ваши знания окажутся никому не нужны.
Читать подробнее

Пять уроков от сеньора

Джордан Катлер, инженер с многолетним опытом и автор рассылки High Growth Engineer (более 50 тысяч подписчиков), рассказал о пяти самых важных уроках, которые он усвоил за годы карьеры в IT.

  • Приносите решения, а не проблемы. Допустим, вы нашли проблему в проекте, но её решение зависит от другой команды. Вместо «Это серьёзный баг, вы должны его исправить» лучше сказать: «Можем ли мы решить эту проблему вместе?»
  • Чистый код не конечная цель. Если ваши комментарии во время код-ревью приводят к конфликтам в команде, многостраничным перепалкам и спорам, стоит сбавить обороты. Доверие и сотрудничество важнее, чем чистота кода.
  • Командные результаты важнее личных. Чрезмерная концентрация на собственных амбициях в ущерб интересам команды в итоге вредит и вам, и компании.
  • Подстраивайтесь под своего руководителя. Менеджеры тоже люди, у каждого свои особенности. Например, кто-то сам расскажет вам, что нужно для повышения, а у кого-то нужно это узнавать, предлагать свой план.
  • Влияние — это не формулировки. Катлер прочитал много книг о том, как влиять на окружающих, но в итоге пришёл к мнению, что самое действенное — построить доверительные отношения. Неважно, какими словами вы озвучите просьбу близкому другу, — если у вас хорошие отношения, он обязательно откликнется. Хотите усилить своё влияние — больше хвалите коллег и поддерживайте их.
Читать подробнее

Devin всемогущий (но это не точно)

Интернет переполнен тиктоками и новостями про загадочную «Девин» — нейросеть, которая может взять на себя полный цикл разработки, от написания кода до тестирования и деплоя. Гергели Орос, один из ведущих инженеров в Uber, объясняет, почему ажиотаж вокруг Devin — очередная уловка маркетологов.

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

По мнению Гергели, мы имеем дело с обычным ИИ-ассистентом в духе Copilot, Cody и Replit AI. Пугающую роль замены программиста ему отвели скорее маркетологи компании, чтобы отстроиться от конкурентов. Так как рынок перенасыщен, стартапам только и остаётся, что делать громкие заявления, чтобы привлечь инвесторов.

Читать подробнее

Что там на Reddit

Как написать ОС с нуля

В сабе r/compsci реддитор спросил, как написать операционную систему с нуля, и попросил порекомендовать ресурсы и книги. Вот что ему посоветовали.

Открыть обсуждение

Низкоуровневый YouTube

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

Лори Вайред подробно объясняет, что конкретно происходит при переполнении стека

Удивительные сайты

В сабе r/InternetIsBeautiful постят необычные находки из интернета — в основном странные сайты, игры и квизы. Так, в одном из мартовских тредов реддиторы поделились, пожалуй, самым необычным сайтом в Сети — whatmonthisit.net. Всё, что он делает, — показывает посетителям, какой сегодня месяц. Шутки шутками, но сайт — мастхэв для тех, кто приходит в себя после новогодних праздников :)

Другой интересный пример — сайт antipodesmap.com. Здесь можно ввести свой адрес и посмотреть на карте противоположную точку. Но не рассчитывайте на многое — большинство мест на Земле не имеют антиподов на суше, поэтому, скорее всего, вы попадёте в океан.

Ну и гвоздь программы — сайт Marimo, где можно покатать волосатый шарик (естественно, тонко настроив объём и длину волос).

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

Запишите ребёнка на бесплатный урок в Skillbox Kids ➞
Учим детей программированию, веб-дизайну и разработке игр. Преподаватель — IT-эксперт — подберёт курс по интересам ребёнка. Подробности — по клику.
Узнать больше
Понравилась статья?
Да

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

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