Что почитать о программировании и IT: мартовская подборка
Как нейросети защищают пешеходов, кто и зачем раздувает хайп вокруг Devin и какие команды Git преступно недооценены.
Иллюстрация: Оля Ежак для Skillbox Media
Продолжаем шерстить айтишный интернет в поисках интересного чтива. Сегодня на повестке дня: как языковые модели разрешают моральные дилеммы, почему не нужно идеализировать сеньоров и какие свежие Git-команды стоит взять на вооружение.
У вас парадигма движется
Сон Нгуен, гендиректор компании Neurond AI, которая создаёт ИИ-решения для бизнеса, поделился мыслями о роли языковых моделей в разработке ПО.
По словам Нгуена, сейчас в разработке есть несколько серьёзных проблем:
- Сложно: согласно опросу Reveal, 26,2% разработчиков не справляются с рабочей нагрузкой.
- Дорого: компании в США платят от 137 до 173 тысяч долларов в год на одного разработчика. В эту сумму входит не только размер зарплаты, но и налоги, льготы, расходы на обучение, а также на устранение багов.
- Долго: из-за затрат времени на отладку и тестирование средний инженер может написать максимум 300–500 строк кода за один рабочий день.
Искусственный интеллект, как считает Нгуен, должен решить эти проблемы. Нейросети помогут программистам писать код быстрее и с меньшим количеством ошибок. Больше не нужно будет глубоко зарываться в синтаксис языков программирования — ИИ возьмёт эти сложности на себя и поможет бесшовно переключаться между условными «джавами» и «питонами».
Кроме того, ИИ снимет с программистов часть рутинной и побочной работы — например, написание тестовых примеров, код-ревью и создание документации.
Конечно, у ИИ-ассистентов пока ещё много проблем: и галлюцинирование, и недостаточная приватность, и низкое качество ответов. Но факт в том, что ИИ становится лучше день ото дня, и мы, похоже, наблюдаем сдвиг парадигмы.
Читать подробнееОсторожно, за рулём ChatGPT
Японский учёный Кадзухиро Такэмото провёл исследование и выяснил, как беспилотные автомобили разрешают сложные моральные дилеммы. Если вкратце — примерно так же, как и люди, но есть нюансы.
Для проведения эксперимента Такэмото обратился к проекту «Моральная машина». Эта платформа задаёт людям каверзные этические задачки и предлагает два решения на выбор. Например, что делать, если у машины отказали тормоза: столкнуться с препятствием и убить пассажира или свернуть, убив пешехода, переходящего дорогу?
Есть и более сложные вопросы — например, что, если в машине находится семья с ребёнком, а пешеходы — пожилая пара, идущая на красный свет?
Со стороны ИИ в эксперименте участвовали четыре популярные языковые модели (LLM): GPT-3.5, GPT-4, PaLM 2 и LLaMA 2. Задача «испытуемых» была в том, чтобы проанализировать 50 тысяч случаев, созданных «Моральной машиной». Анализ ответов показал: в целом ИИ принимает те же решения, что и человек:
- спасает в основном жизни людей, а не животных;
- защищает наибольшее количество людей;
- отдаёт предпочтение безопасности детей;
В то же время LLM чаще отдавали приоритет пешеходам перед пассажирами, людям перед животными и женщинам перед мужчинами. Последнее, по мнению Такэмото, связано с тем, что модели обучаются на данных из западных источников, где спасение женщины — социально одобряемый поступок.
Однако с точки зрения современных этических стандартов такое решение считается дискриминацией по половому признаку. Чтобы языковая модель была готова «выйти в реальный мир», такие предубеждения стоит устранять.
Читать подробнееНе «пушем» единым: современные команды Git
Мартин Хайнц, инженер из IBM, рассказал в своём блоге о полезных командах Git, которые мало кто использует. Большинство разработчиков обходятся командами add, commit, push или pull, «как будто на дворе всё ещё 2005 год», хотя с тех пор в Git появилось много новых фишек. Вот некоторые из них.
- switch — команда для переключения веток.
- restore — команда для восстановления последней зафиксированной версии файла.
- bisect — ищет, какой коммит в истории проекта привёл к ошибке. Работает так: вы сообщаете команде сначала «плохой» коммит, затем «хороший». Затем bisect выбирает коммит между двумя этими точками и предлагает вам его протестировать. Если коммит рабочий — можно откатиться к нему. Если нет — программа будет сужать диапазон, пока не найдёт «виновника».
В заключение Хайнц даёт совет: не стоит искать решение проблем с Git на Stack Overflow, так как даже самые залайканные ответы обычно безнадёжно устарели. Вместо этого лучше заглянуть в документацию Git и поискать более свежие подходы и команды.
Читать подробнееМелочь, а полезно
Автор блога 𝚟𝚎𝚛𝚖𝚊𝚍𝚎𝚗, сисадмин, сделал подборку крохотных недорогих приспособлений, которые могут заметно облегчить жизнь. Например:
- держатели для наушников;
- угловые адаптеры для кабелей (чтобы не торчали перпендикулярно);
- внешние микрофоны;
- флешки с двумя коннекторами;
- органайзеры для кабелей.
И ещё тысяча разных мелочей, которые проще один раз увидеть, чем описывать словами.
Читать подробнееСемь заблуждений джуна
Вадим Кравченко, СTO в швейцарском стартапе, собрал семь ошибочных представлений джунов о сеньорах.
- Сеньор всё знает. Сила эксперта не в знаниях — невозможно знать всё, когда каждый год выходят новые версии фреймворков. Настоящего профи отличает способность работать в режиме неопределённости, задавать правильные вопросы и находить решения.
- Сеньор может многое изменить. В реальности ничего не поменять без одобрения руководства и без бюджета. Хотите что-то изменить — научитесь аргументировать свои идеи, выясните, как распределяется бюджет, и примите участие в планировании ресурсов.
- Сеньор много отдыхает. Большая сила — большая ответственность :)
Читайте также:
- Сеньор работает с передовыми технологиями. Роль старшего разработчика часто заключается в поддержании и рефакторинге легаси-кода.
- У сеньора нет скучных задач. В реальности вас ждут бесконечные встречи, написание документации, код-ревью и даже отладка легаси-кода в пятницу в шесть вечера.
- Сеньор всем указывает, что делать. Тут Кравченко признаётся, что скучает по временам, когда ему расписывали задачи, а он их просто выполнял. Действительно, чем выше должность, тем меньше вам указывают, что делать, но тем больше ждут, что вы сами знаете, что делать.
- Сеньор незаменим, поэтому его не уволят. Конечно, опытный специалист более востребован. Но думать «меня не уволят, так как только я знаю, как работает этот легаси-код» — ошибка, потому что проект могут просто закрыть и ваши знания окажутся никому не нужны.
Пять уроков от сеньора
Джордан Катлер, инженер с многолетним опытом и автор рассылки High Growth Engineer (более 50 тысяч подписчиков), рассказал о пяти самых важных уроках, которые он усвоил за годы карьеры в IT.
- Приносите решения, а не проблемы. Допустим, вы нашли проблему в проекте, но её решение зависит от другой команды. Вместо «Это серьёзный баг, вы должны его исправить» лучше сказать: «Можем ли мы решить эту проблему вместе?»
- Чистый код не конечная цель. Если ваши комментарии во время код-ревью приводят к конфликтам в команде, многостраничным перепалкам и спорам, стоит сбавить обороты. Доверие и сотрудничество важнее, чем чистота кода.
- Командные результаты важнее личных. Чрезмерная концентрация на собственных амбициях в ущерб интересам команды в итоге вредит и вам, и компании.
- Подстраивайтесь под своего руководителя. Менеджеры тоже люди, у каждого свои особенности. Например, кто-то сам расскажет вам, что нужно для повышения, а у кого-то нужно это узнавать, предлагать свой план.
- Влияние — это не формулировки. Катлер прочитал много книг о том, как влиять на окружающих, но в итоге пришёл к мнению, что самое действенное — построить доверительные отношения. Неважно, какими словами вы озвучите просьбу близкому другу, — если у вас хорошие отношения, он обязательно откликнется. Хотите усилить своё влияние — больше хвалите коллег и поддерживайте их.
Devin всемогущий (но это не точно)
Интернет переполнен тиктоками и новостями про загадочную «Девин» — нейросеть, которая может взять на себя полный цикл разработки, от написания кода до тестирования и деплоя. Гергели Орос, один из ведущих инженеров в Uber, объясняет, почему ажиотаж вокруг Devin — очередная уловка маркетологов.
Так, в новостях о Devin говорится, что она может стать полноценной заменой разработчику, — в то же время сама компания признаёт, что новый терминатор решает только одну из семи задач на GitHub. Даже у самого незадачливого джуна этот показатель был бы выше — что уж говорить о сеньорах.
По мнению Гергели, мы имеем дело с обычным ИИ-ассистентом в духе Copilot, Cody и Replit AI. Пугающую роль замены программиста ему отвели скорее маркетологи компании, чтобы отстроиться от конкурентов. Так как рынок перенасыщен, стартапам только и остаётся, что делать громкие заявления, чтобы привлечь инвесторов.
Читать подробнееЧто там на Reddit
Как написать ОС с нуля
В сабе r/compsci реддитор спросил, как написать операционную систему с нуля, и попросил порекомендовать ресурсы и книги. Вот что ему посоветовали.
- Linux From Scratch!
- OSDev.org
- Interesting alternative and hobby OSes
- r/osdev
- Temple OS
- «Операционные системы. Три простых элемента», Ремзи и Андреа Арпачи-Дюрсо
- Курс Operating System Engineering
- Operating System: Internals and Design Principles, William Stallings
Низкоуровневый YouTube
В этом же сабе попросили порекомендовать хорошие ютуб-каналы, посвящённые низкоуровневому программированию. Получился такой список:
- OneLoneCoder
- Computerphile
- Ben Eater
- Logan Smith
- John Hammond
- Low Byte Productions
- LaurieWired
- Core Dumped
Удивительные сайты
В сабе r/InternetIsBeautiful постят необычные находки из интернета — в основном странные сайты, игры и квизы. Так, в одном из мартовских тредов реддиторы поделились, пожалуй, самым необычным сайтом в Сети — whatmonthisit.net. Всё, что он делает, — показывает посетителям, какой сегодня месяц. Шутки шутками, но сайт — мастхэв для тех, кто приходит в себя после новогодних праздников :)
Другой интересный пример — сайт antipodesmap.com. Здесь можно ввести свой адрес и посмотреть на карте противоположную точку. Но не рассчитывайте на многое — большинство мест на Земле не имеют антиподов на суше, поэтому, скорее всего, вы попадёте в океан.
Ну и гвоздь программы — сайт Marimo, где можно покатать волосатый шарик (естественно, тонко настроив объём и длину волос).
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!