Читать в телеге. Когда-то там были посты не только от меня.
Закрепы в IntelliJ
В IntelliJ можно “закрепить” довольно много чего: файл с кодом, запуск приложения, результаты тестов, результаты поиска. Основная идея в том, что закрепленная вкладка просто так не закроется — например, повторный запуск тестов не перезатрет результаты предыдущего запуска, а закрепленная вкладка с кодом не будет закрыта при превышении лимита открытых вкладок.
На прошлой неделе я еще узнал, что для тестов можно тупо посмотреть историю, но там даже на демонстрационном скриншоте 6 одинаковых конфигураций подряд, как запомнить “тот самый” запуск — неясно. Проще закрепить.
Менеджер как дирижер
Занятная статья, в которой сравниваются навыки менеджера и дирижера. Большой плюс статьи в том, что там есть комментарии от менеджера проектов, который ранее работал дирижером. Не могу сказать, что в статье были какие-то невероятные откровения, но читать было интересно. Правда, мне аналогия с директором цирка как-то ближе.
Самое длинное сообщение об ошибке C++
Из смешнявки узнал, что был конкурс на самое длинное сообщение об ошибке от компилятора. Хорошо дополняет конкурс по обфускации кода (про который, я думаю, многие уже знают). Жаль, что за последний год (2015) результатов не выложили, а предыдущие крутятся в основном вокруг включения файла самого в себя (но есть и прикол с Perl и без шаблонов не обошлось).
Что влияет на срок жизни аккумулятора телефона?
Хороший видос про серию экспериментов со сроком жизни аккумуляторов телефонов и как различные факторы на нее влияют. Можно поапплодировать автору за постановку эксперимента (даже контрольная группа есть!) и за преданность работе (первый эксперимент начался аж 2020).
Если вкратце, то разница не стоит беспокойства и пользователю не стоит париться о каком-то алгоритме зарядки. Если подробнее, то при быстрой зарядке батарея деградирует чуток быстрее, но лучше следить за тем, чтобы циклы были не полные (30-80% вместо 5-100%). А еще оставлять полностью заряженный телефон на зарядке — не страшно. Я попробовал быстро найти какое-нибудь научное исследование на тему, но ничего достаточно узкого и по делу не обнаружил.
Визуализации от Бартоша Цехановского
Крутой блог, в котором автор делает красивые и интерактивные визуализации. В основном фокус на графику (например, про цветовые пространства) и физику (например, про шестеренки), но и для разработчиков есть полезное — например, про числа с плавающей точкой или про устройство GPS.
Продуктивность: просто спросите разрабов
Неплохая мотивационная речь про измерение продуктивности разработчиков.
Вообще, никто толком не знает что это такое, “продуктивность”, а уж тем более — как это измерять. Есть метрики типа SPACE или DORA, но внедрять их в большую организацию — долго и дорого. А на дашборды никто толком может и не смотреть.
Многие популярные метрики производительности (как и подходы к организации процессов) имеют корни/аналоги в реальном производстве, однако конвеерный труд отличается от умственного труда. У последнего слишком большая вариативность, чтобы грести все под одну гребенку.
Количественные метрики не сохраняют контекст (тут можно еще вспомнить историю The Worst Programmer I Know, в которой разработчик с самыми низкими метриками больше всего повышал метрики команды), ну и самые сложные проблемы организационные, а не технические. (Да и что там говорить, когда мы качество кода померить не можем)
Предлагаемое решение — просто спросите разрабов, т.е. получите качественные метрики вместо количественных. Да, они менее объективные, но лучше отражают реальность в условиях, когда мы не можем четко определить измеряемое.
Иронично, что докладчик — CEO компании, основной фокус которой — создание инструментов для сбора и анализа этих самых метрик :) И что-то мне подсказывает, что продуктивность в некоторых компаниях может быть опасно близка к культу.
Тимлид не должен быть тупо щитом
Хорошая статья про антипаттерн “лид — это щит команды” (от всех остальных). Вкратце, подобный подход, возведенный в абсолют, может быть вреден по следующим причинам:
- Команда изолируется от других команд и организации в целом, что приводит к противопоставлению “нас” и “их”.
- Лид выступает дополнительным (иногда лишним) звеном в процессах, и работает испорченным телефоном.
- Из-за изоляции команда отрывается от реальности и обратной связи.
- На самого лида падает куча нагрузки, хотя все люди взрослые, а лид — не нянька.
- Из похожей статьи можно добавить еще что команде-то может и будет хорошо, вот только компании это будет не в плюс: никаких эмерджетных эффектов.
При этом частично щитом все-таки работать надо, вот только делать это очень в меру. А так-то лид должен налаживать процессы, межкомандное взаимодействие и т.п.
The Deadlock Empire
Прикольная обучающая игра про примитивы синхронизации. Вы управляете несколькими потоками, цель — достичь “неправильного” состояния или блокировки. Примитивы из C#, но принципиально это ничего не меняет.
Фокус модулей и связанность
Они же cohesion и coupling, тяжело подобрать перевод получше. Первый термин — про то, насколько близки элементы внутри модуля (например, все связанное с пользователем в одном модуле, а все с его заказами — в другом), второй — про количество связей между модулями (негоже сервису заказов лезь напрямик в БД пользователей). Считается, что в идеале должен быть сильный фокус и низкая связанность, однако только ситхи возводят все в абсолют и надо знать меру. Подробнее можно почитать в этой годной статье.
Очень много архитектурных паттернов, по сути, стремятся достигнуть идеала. Можно сказать, что микросервисы, акторы, чистое ядро, хексагональная архитектура, слоеная/луковая архитектура и т.д. — это все попытки решения этой проблемы.
Про все это можно еще послушать в этом докладе. Там есть еще интересный взгляд на Spring: классическое разделение на контроллер, сервис, репозиторий с интерфейсами — это по сути хексагональная архитектура, и одна из киллер-фич Spring в свое время была возможность инъекции зависимостей и тестирование с моками (а тестирование на серверах приложений было неудобным). Одна из основных идей заключается в том, что функциональная структура важнее технической, и если у вас домен фигово разделен, то архитектура не поможет. Помимо теории, в нем есть еще и практика: как разбить все по папкам (но до уровня удушения этой статьи докладчику далеко) и как IDE может помочь с пониманием проекта. Прагматизм еще выражается в том, что не так уж и важно, что там внутри модуля, и ничего криминального в том, чтобы прямо из REST-контроллера вызвать соединение к базе, если модуль очень маленький.
Запуск Linux в Linux
Без виртуализации, просто как приложение. После Linux в браузере и Linux в PDF уже не так удивительно (да и вообще каждый утюг тюринг-полный в наши дни), но статья все равно занятная. Однако практическая польза стремиться к нулю.