Заметки Андрея Романова
1.3K subscribers
40 photos
100 links
Разработка интерфейсов, дизайн, программирование и всё остальное. Вопросы, пожелания, комментарии — @andrew_r

http://andrew-r.ru
Download Telegram
Что нужно делать, чтобы стать техническим директором?

Из книги Камиль Фурнье «От разработчика до руководителя»:

«Найдите работу, где вам будут передавать практический опыт и вместе с тем дадут возможность получать новые технические навыки.

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

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

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

Технические директора в большинстве работают в небольших компаниях, часто являясь их соучредителями. Если вы хотите пойти таким путём, найдите компанию, из которой ранее уже уходили сотрудники, чтобы основать что-то своё. Именно в ней вы сможете найти своих будущих соучредителей или возможность быстро попасть в новую компанию»
​​Почему не стоит использовать компоненты высшего порядка (HOCs) в Реакте и какая им есть альтернатива — http://andrew-r.ru/notes/react-hocs
​​Если вы устали от постоянного чувства гонки за технологиями и лучшим будущим, возможно вам поможет хороший совет Тима Маринина о важности пустого пространства в жизни — https://marinintim.com/2018/negative-space/
​​Автоматизация релизов с помощью semantic-release

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

Если вы столкнулись (или в будущем столкнётесь) с такой же проблемой, сразу внедряйте semantic-release: он автоматизирует всю рутину и максимально исключает человеческий фактор (например, неправильный выбор следующей версии пакета). semantic-release встраивается в CI, так что для публикации новой версии пакета достаточно просто запушить код в репозиторий.

Что особенно круто — процесс публикации максимально абстрагирован и разбит на шаги, а вся специфичная логика реализуется через плагины. Это позволяет делать публикацию куда угодно, а не только в NPM, да и вообще кастомизировать процесс публикации: например, можно реализовать отправку списка изменений в Slack после публикации.

Единственное, что от вас потребуется — один раз настроить инструмент и затем выполнять соглашения по именованию коммитов, по которым он будет автоматически определять следующую версию пакета и формировать список изменений. Кстати, требования к именованию коммитов — ещё одно косвенное преимущество: история изменений становится чище и читабельнее.
​​Секрет продуктивности от Bell Labs

Начал осваивать материалы, рекомендуемые на mtdv.io. Первой стала статья How to be a star engineer Роберта Келли, написанная по мотивам его исследования в Bell Labs в середине 80-х годов.

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

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

Учитывая то, что исследованию уже практически 30 лет, поразительно, что ни о чём подобном не рассказывают в школах или вузах.

Сама статья (ПДФ, ~350 КБ): How to be a star engineer
Больше подробностей об исследовании и его результатах: How Bell Labs Creates Star Performers
Книга по мотивам исследования: How to be a star at work
Выжимка книги (ПДФ, ~60КБ)
​​Прозрачность, забота о пользователе и просто красота: ребята из Timestripe не поленились сделать понятное и наглядное объяснение принципа работы их механизма шифрования пользовательских данных — https://timestripe.com/encryption/
​​Почему не нужно стремиться к 100% покрытию кода юнит-тестами

http://andrew-r.ru/notes/unit-tests-coverage

TL;DR: покрытие кода работает хорошо как индикатор проблем. Если оно низкое, вероятно, тестов написано слишком мало. Но использовать покрытие как индикатор качества тестов нельзя: высокого покрытия можно добиться даже без единой проверки.
​​Альтернатива DuckDuckGo

Раньше я уже писал, почему стоит перейти с поиска Google на DuckDuckGo. Но многие программисты при переходе на DuckDuckGo замечают, что качество поиска сильно падает и искать ответы на технические вопросы становится сложнее.

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

“You can’t beat Google when it comes to online search. So we’re paying them to use their brilliant search results in order to remove all trackers and logs. The result: The world’s best and most private search engine.”
Принцип: сначала платить себе

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

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

Мне этот принцип особенно помогает не уходить с головой в рабочую рутину, учиться и делать сайд-проекты.
Как сначала платить себе

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

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

План — половина дела, его ещё нужно выполнять. Очевидный способ — заниматься делами в свободное время после работы. Проблема в том, что после работы мы устаём, и хочется потупить в сериал, а не проходить какой-нибудь сложный курс или делать сайд-проект. Решение — выделять себе утром перед работой время на личные дела и учёбу. Это решение работает, но требует дисциплины и соблюдения режима (нужно рано ложиться и рано вставать). Главное не пытаться резко перестроиться с подъёма в 9 утра на подъём в 5 утра, иначе постигнет разочарование :–)
​​О приватных данных

Прочитал на днях расследование от The New York Times о том, как мобильные приложения собирают и продают данные о наших передвижениях. Несмотря на заявления рекламных компаний о деперсонализации данных, журналистам NYT достаточно легко удалось связать записи с реальными людьми.

Вряд ли многие бы согласились каждый день отчитываться перед чужими людьми о своих передвижениях, поисковых запросах, посещённых сайтах и переписке. А ведь регулярное использование смартфона и компьютера немногим от этого отличается (достаточно взглянуть на myactivity.google.com, если вы пользуетесь сервисами Гугла и не меняли стандартные настройки). Ладно смартфоны и компьютеры — впереди умные дома, автомобили и чёрт знает что ещё.

Хоть сейчас данные пользователей и используются достаточно безобидно (например, для таргетированной рекламы), никто не гарантирует, что так будет всегда. Посадки за мемы в приватных альбомах ВК и инициативы австралийского правительства тому подтверждение. Так что нам ещё только предстоит научиться жить в цифровом мире не во вред себе.
​​Пока, 2018: вспоминаю значимые для меня события за прошедший год — http://andrew-r.ru/notes/bye-2018/
​​Наука сна

Легко читаемый и интересный обзор истории сна и его аспектов, подкреплённый результатами многочисленных исследований — http://andrew-r.ru/books/dreamland/
Визуализация длительности жизни

Вдохновился предложенным Тимом Урбаном способом визуализации жизни в виде таблицы и запилил для себя онлайн-версию: http://andrew-r.ru/timeline/

Суть проста: ячейки таблицы — это недели, а каждая строка — год. С помощью такой таблицы можно визуализировать важные периоды, ставить цели (кстати, для целей есть классный сервис Timestripe) или просто закрашивать прошедшие недели и напоминать себе, что у нас не очень-то много времени и его не стоит тратить расточительно.
​​Форматирование дат и времени в браузере

Не используйте сторонние библиотеки для ручного форматирования дат и времени — в разных локалях разные правила их отображения: русские привыкли видеть 11.03.2019, а англичане 3/11/2019. Используйте встроенный в браузер Intl API, который сам определяет локаль пользователя и форматирует дату нужным образом.

Кстати, недавно пал последний рубеж обороны сторонних библиотек — в Intl API появился RelativeTimeFormat, позволяющий формировать из дат фразы вида «5 минут назад».
​​Отдельные стрелки на клавиатуре не нужны

Простой и действенный лайфхак от Никиты Прокопова: чтобы не дёргать руку от букв к стрелкам на клавиатуре, можно переназначить функции стрелок на клавиши Caps Lock + I/J/K/L и всегда держать руки по центру клавиатуры.

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

Попробуйте: http://tonsky.me/blog/cursor-keys/
Математика для программистов

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

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

Из самых полезных/интересных ресурсов составлю и опубликую подборку.
​​​​Uses This

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

В общем, если вы уже расспросили всех своих знакомых об их рабочем окружении и инструментах, держите новый источник информации — https://usesthis.com/
Learning How to Learn

Учителя мне часто говорили, что школы и ВУЗы нужны, чтобы научить нас учиться. Чтобы понять, что это не так, достаточно вспомнить распространённую среди студентов практику подготовки к экзамену в ночь перед ним.

Курс Learning How to Learn на Coursera восполняет этот пробел нашей системы образования. В нём рассматриваются нюансы работы нашего мозга и техники эффективного обучения, обоснованные научными исследованиями.

Автор курса — Барбара Оакли, она же автор книги «Думай как математик». Содержимое курса и книги практически идентичны (но в курсе есть тесты и дедлайны), так что можно выбрать, что больше по душе, или одновременно проходить курс и читать книгу для закрепления материала.
Польза художественной литературы

Ребята из Арзамаса опубликовали обзор причин, по которым чтение художественной литературы полезно (специально для сомневающихся вроде меня): https://arzamas.academy/materials/1624
Как соцсети и интернет мешают учиться и как с этим бороться

Курс Learning How to Learn в каком-то смысле открыл мне глаза на то, как соцсети и интернет мешают эффективно учиться.

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

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

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