IT-дайджест: главные новости марта 2025 года.
Сегодня в нашей подборке: создатели Django делятся советами по эффективной работе с LLM и развенчивают миф о непогрешимости опытных инженеров; разработчик Chrome рисует портрет идеального кандидата; «злой марсианин» раскрывает секреты опенсорс-проектов.
Как эффективно использовать LLM для написания кода: советы автора Django
В репозитории Саймона Уиллисона находится более 80 приложений, которые он разработал с помощью ИИ. Саймон — один из создателей Django, и в своём блоге он поделился принципами работы с LLM:
- Установите разумные ожидания. Не ждите, что модель сделает всё за вас. Используйте LLM как усиление своих способностей. Например, вместо «напиши мне полное приложение для управления задачами» лучше попросить «помоги составить структуру базы данных для приложения управления задачами».
- Просите у модели варианты решений. Начинайте с открытых вопросов, чтобы быстрее найти подходящее решение. Вместо «Как написать функцию для сортировки списка» спросите «Какие есть способы отсортировать список чисел по возрастанию в Python?»
- Тестируйте код. Сгенерированный код всегда требует проверки. Поэтому приготовьте переписывать код до тех пор, пока не получите приемлемый результат. Если вы просите LLM написать функцию для работы с датами, обязательно проверьте граничные случаи: високосные годы, смена часовых поясов, переход через полночь.
- Используйте инструменты для запуска кода. Попробуйте ChatGPT Code Interpreter, Claude Artifacts и ChatGPT Canvas. Например, вы можете попросить Code Interpreter написать и протестировать функцию для анализа CSV-файла, и он не только создаст код, но и покажет результаты его выполнения прямо в чате.
- Играйтесь с LLM. Попробуйте создать генератор названий для космических кораблей в стиле Илона Маска. Чем больше вы экспериментируете, тем лучше понимаете возможности модели.
Уиллисон напоминает, что LLM не заменит человеческую интуицию и опыт в программировании, но может значительно ускорить разработку. Вместо того чтобы тратить час на поиск оптимального алгоритма сортировки в документации, разработчик может за минуту получить готовое решение от LLM и сосредоточиться на более важных задачах проекта. Но он не должен перекладывать эти важные задачи на LLM.
Секреты Git от инженера Pinterest
Ведущий разработчик Pinterest Джордан Катлер поделился малоизвестными командами Git, которые ежедневно помогают ему экономить время и силы. Возможно, они пригодятся и вам.
git checkout jcutler/my-feature-branch
Можно использовать короткую команду:
git checkout –
Подобный паттерн подойдут и для других популярных команд:
- git merge – — объединяет текущую ветку с предыдущей;
- cd – — возвращает вас в предыдущую директорию.
git checkout HEAD@{1.week.ago}
Вместо 1.week.ago вы можете указать другой интервал. После этого найдите коммит, который сломал проект. Если между рабочим и нерабочим состоянием много коммитов, выручит бинарный поиск:
git bisect start git bisect bad <коммит_с_багом> git bisect good <коммит_без_бага>
Git сам найдёт середину и предложит проверить, есть ли там ошибка. Если ошибки больше нет, введите команду:
git bisect good
Или другую команду, если ошибка осталась:
git bisect bad
Если хотите, весь процесс можно автоматизировать с помощью скрипта. Ниже пример записи, а сам скрипт можно посмотреть в документации:
git bisect run {скрипт}git log -G ‘”next”‘– package.jsonmaster → branch-A → branch-B
Допустим, вы работаете в ветке branch-B и хотите, чтобы при слиянии изменения из branch-A имели приоритет:
git merge branch-A -X theirs
Или наоборот, если нужно оставить приоритет за текущей веткой:
git merge branch-A -X ours
Как сделать опенсорс-проект популярным
Ведущий инженер «Злых марсиан» Андрей Ситник занимается опенсорс-разработкой уже более 20 лет. Недавно он поделился своими рекомендациями о том, как сделать проект популярным. Рассказываем.
«Лучшая причина участвовать в опенсорсе — желание что-то изменить. Я создавал PostCSS с целью разнообразить инструменты для работы с CSS, сделать экосистему CSS-решений удобнее. И это получилось!»
Формула успеха по Ситнику выглядит так:
«Популярность разработчика + продвижение + выгода для пользователей + удача = популярность проекта».
Разработчики редко выбирают инструменты рационально и редко детально изучают описание. Чаще они ориентируются на количество звёзд и бегло просматривают README. Именно поэтому проекту нужны не только хорошая функциональность, но и грамотная подача.
Из 56 (!) проектов Андрея Ситника «выстрелило» только четыре
Изображение: Evil Martians
Добавьте примеры, скриншоты и документацию. Любое обновление проекта — это возможность рассказать о нём в блоге. Внедрили новую функцию? Напишите пост. Исправили баг? Поделитесь этим в статье.
Однако, прежде чем следовать этим советам, задумайтесь: а правда ли вы хотите популярности? 🤔 Ведь вместе с ней придут и новые проблемы.
Как выделиться на собеседовании: советы ведущего разработчика Google
Руководитель разработки Chrome Эдди Османи, поделился своим видением идеального кандидата на техническом собеседовании.
Многие программисты часто слышат примерно следующее: «Решайте задачи на LeetCode», «Повторите структуры данных». Всё это полезно, но, по мнению Османи, есть и недооценённые навыки, о которых редко говорят. Именно они помогают выделиться сильнейшим кандидатам.
- «Я вижу два подхода к задаче — кратко расскажу про оба»;
- «Раньше я не решал похожих задач, но готов разобраться».
Интервьюеры особенно ценят кандидатов, которые умеют наглядно и без стеснения показать ход своих мыслей.
«Интервьюеры ценят умение решать сложные задачи больше, чем способность сразу написать идеальный код».
Skype — всё, но дело его живёт
В начале 2010-х годов Skype был самым популярным в мире приложением для интернет-звонков (300 млн пользователей на пике). Однако к 2023 году его аудитория сократилась до 36 млн человек. Недавно Microsoft объявила о прекращении работы Skype с 5 мая 😢
Хотя как мессенджер Skype уже давно уступил конкурентам, однако TechCrunch отмечает: именно Skype первым в 2003 году внедрил революционную технологию сквозного шифрования — функцию, которая сегодня стала стандартом безопасности во всех популярных мессенджерах. Поэтому пусть Skype и исчезает, но его передовые идеи продолжают жить, защищая коммуникации миллиардов пользователей.
Домашняя страница Skype в 2004 году
Скриншот: Internet Archive / Skillbox Media
React-библиотеки на все случаи жизни
Инженер Робин Вирух подготовил подборку React-библиотек на 2025 год. Проверьте, возможно, чего-то не хватает в вашей коллекции.
Робин также отмечает рост популярности «безголовых» библиотек (headless UI) — компонентов без предустановленных стилей. Этот подход даёт разработчикам полный контроль над внешним видом. Например, вместо готовой кнопки с фиксированным дизайном вы получаете базовую функциональность (клики, состояния) и можете стилизовать её как угодно. Среди популярных headless-библиотек: Shadcn UI, Radix, React Aria, Ark UI, Ariakit, Daisy UI, Headless UI и Tailwind UI (платная).
Храните ценности в Markdown
Разработчик Пётр Мигдау поделился мыслями о проблеме сохранности цифровой информации. Он отметил, что любые публикации в интернете могут со временем исчезнуть. Чтобы избежать потерь, он рекомендует хранить весь важный контент в максимально простых форматах.
Оптимальный выбор — Markdown, текстовый формат с понятным синтаксисом. Он позволит открывать файлы даже спустя десятилетия:
«Контент, который стоит найти хотя бы один раз, стоит сохранить навсегда».
Markdown-файлы весят всего несколько килобайт и легко конвертируются в другие форматы. Например, один и тот же файл можно превратить в красивую HTML-страницу или PDF-документ.
Если захотите попробовать, обратите внимание на Pandoc — это универсальный инструмент для работы с Markdown. Он поддерживает множество форматов: от простых документов Word до сложных научных работ в LaTeX. К примеру, команда pandoc document.md -o document.pdf автоматически создаст PDF из вашего Markdown-файла.
Чем хорош «нормальный» инженер и почему он нужен вашей команде
Когда-то в IT-индустрии появилось представление о так называемом 10x-программисте — асоциальном гении, который якобы способен в одиночку создавать революционные продукты. И на этот счёт даже высказался Алан Юстас, бывший вице-президент по инженерии в Google:
«Один первоклассный инженер стоит в 300 раз больше, чем средний. Я бы предпочёл потерять целый класс выпускников, чем одного исключительного специалиста».
Хотя многие с самого начала критиковали эту идею, миф о «10x» до сих пор жив. Появляются советы для руководителей — как нанять такого разработчика, и для начинающих инженеров — как им стать.
Однако Чарити Мейджорс, соосновательница Honeycomb, выступает против этого подхода и призывает обратить внимание на обычных инженеров. Она подчёркивает несколько ключевых моментов.
«Если самый медленный инженер пишет строчку кода за пять часов, то столько же времени понадобится и самому быстрому — потому что они работают вместе».
Поэтому Мейджорс призывает компании нанимать не «лучших», а подходящих специалистов — тех, кто разделяет ценности команды и готов учиться. Например, джуниор с горящими глазами и желанием развиваться может принести больше пользы, чем опытный, но не умеющий работать в команде разработчик. Главное — не погоня за звёздами, а создание таких процессов, которые помогают сотрудникам развиваться, делиться знаниями и эффективно работать вместе.
Опенсорс — это дорого, но полезно
Исследование Гарвардской школы бизнеса показало, что экономическая ценность открытого исходного кода составляет 8,8 трлн долларов. Без использования опенсорса компании тратили бы в 3,5 раза больше средств на разработку и поддержку программного обеспечения.
Поразительно, но 95% этой колоссальной ценности создают всего 3000 разработчиков по всему миру. При этом открытый код используется в 96% всех кодовых баз — как в стартапах, так и в корпорациях.
В исследовании учёные рассчитали стоимость труда — то есть сколько бы стоило создать заново всё существующее опенсорсное программное обеспечение для каждого языка программирования. Вот результаты:
- Go — 803 000 000 долларов;
- JavaScript — 758 000 000 долларов;
- Java — 658 000 000 долларов;
- C — 406 000 000 долларов;
- Python — 55 000 000 долларов.
Несмотря на популярность, Python оказался на последнем месте среди ведущих языков по экономической оценке вклада в опенсорс. Это может быть связано с тем, что большая часть экосистемы Python построена на относительно компактных библиотеках, в то время как другие языки включают более масштабные фреймворки и системные компоненты.
Рыночная стоимость опенсорсных проектов на пяти ключевых языках программирования
Изображение: Harvard Business School
Аналитики также рассмотрели популярность языков программирования с точки зрения фактического использования их пакетов и библиотек в реальных проектах. Получилось следующее:
- Go стал самым «дорогим» — его пакеты используются в проектах в четыре раза чаще пакетов JavaScript. К примеру, популярный фреймворк Gin для Go применяется в миллионах проектов.
- TypeScript продемонстрировал впечатляющий рост: с 10-го места по использованию пакетов в 2017 году он поднялся на 4-е место к 2020 году. Такой рост во многом обязан популярности фреймворков Angular и Next.js, которые используют TypeScript как основной язык.
- JavaScript, C, Java и Python остаются самыми популярными языками среди разработчиков. Однако Python, несмотря на обширную экосистему, демонстрирует более низкую активность использования отдельных пакетов по сравнению с другими языками.
В завершение авторы подчёркивают, что компании должны активнее участвовать в поддержке и развитии открытого ПО, поскольку большая часть современного цифрового мира построена именно на нём.
Необычные сайты, которые стоит посетить
Для начала попробуйте тест, в котором нужно по фотографии угадать, кто перед вами — создатель языка программирования или серийный убийца. Сайт оформлен с детективным антуражем, так что будет непросто.
Как вы думаете, может ли эта женщина оказаться убийцей?
Скриншот: vole.wtf / Skillbox Media
После теста рекомендуем установить rust-stakeholder — забавный инструмент командной строки, который за 30 секунд сделает из вас крутого разработчика. Он выводит в терминал бессмысленный, но впечатляющий текст. Со стороны выглядит так, словно вы гениальный программист. Кто знает, может, скоро эта цитата будет именно о вас:
«После того как я начал использовать rust-stakeholder, меня больше не спрашивают о сроках, а просят поделиться своими мыслями на совещаниях совета директоров».
Хотите повышение? Просто запустите приложение, когда мимо будет проходить ваш менеджер 😄
Скриншот: GitHub
Помимо интересных сайтов, мы обнаружили несколько полезных сервисов, которые могут пригодиться каждому разработчику:
Интересное на Reddit
В сабреддите learnprogramming пользователь задал вопрос: «Какая внешне простая функция веб-приложения, кажущаяся пользователям лёгкой, на самом деле требует от разработчиков серьёзных усилий?»
Ответов было много, но больше всего лайков набрали три функции: аутентификация, текстовые формы (автодополнение, сохранение состояния и прочее), календари и всё, что связано со временем.
На первый взгляд может показаться, что всё это довольно просто реализовать, но при более глубоком рассмотрении пользователи действительно правы. Возьмём, к примеру, аутентификацию. Кажется, что может быть проще: пользователь вводит логин и пароль, сервер проверяет данные — и либо предоставляет доступ, либо нет.
На практике ситуация намного сложнее. Даже в небольшом проекте разработчику необходимо решить целый комплекс задач:
- обеспечить надёжное хранение паролей, сессий и токенов;
- защитить систему от DDoS-атак и попыток подбора паролей;
- определить, какие механизмы восстановления пароля внедрить (email, SMS, коды, ссылки);
- реализовать двухфакторную аутентификацию (Google Authenticator, SMS, email);
- интегрировать OAuth (вход через Google, GitHub и другие сервисы);
- выяснить, как правильно хранить и обновлять токены доступа;
- обеспечить масштабируемость системы.
Добавьте к этому вопросы интерфейса, удобства использования и безопасности на каждом этапе. В итоге аутентификация — это не просто «вход в систему», а комплексная задача, требующая глубоких знаний в бэкенд-разработке, безопасности, UI/UX и работе с внешними API.
В сабреддите computerscience реддитор спросил, что участники думают о книгах Дональда Кнута. Самый популярный ответ получился таким:
«Дам знать, когда дочитаю. Я начал в 1990-х».
Но был и серьёзный комментарий. Его автор отметил, что книги Кнута — это не про практики вроде KISS и DRY и не про архитектуру программ. Это глубокий разбор алгоритмов, математически точный подход и умение правильно о них думать. Такие книги полезны тем, кто пишет библиотеки и хочет понимать алгоритмы на фундаментальном уровне.
Другой участник learnprogramming поделился своей болью. Он попробовал Cursor и потерял мотивацию учить программирование:
«Я почувствовал себя ничтожеством. Все мои усилия бессмысленны — он пишет код быстрее, лучше и даже оптимизирует его сам».
Ему сразу пришли на помощь и дали дельный совет:
«Просто удали Cursor. Используй VS Code. Проблема решена».
И напоследок: в сабреддите AskProgramming спросили, какой самый недооценённый принцип разработки ПО, которому должен следовать каждый программист? Ответ вас удивит: «Просто будь добрее» 🤗