За обновлениями можно следить в telegram-канале https://t.me/quasiart

Данная статья является вольным переводом статьи, автором которой является Мэтт Майт. Я не претендую на точность перевода, кое-где я перефразировал автора и даже добавил от себя.

Для разработчика важно хотя бы периодически кидать вызов самому себе. Я создал список из 12 пунктов — по числу месяцев в году.

  1. Аналоговые увлечения
  2. Здоровье
  3. Зона комфорта
  4. Новые языки программирования
  5. Автоматизация
  6. Больше математики
  7. Безопасность
  8. Резервное копирование
  9. Теория
  10. Искусство и гуманитарные науки
  11. Новое программное обеспечение
  12. Собственные проекты

Аналоговые увлечения

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

  • Кулинария
  • Туризм
  • Велоспорт
  • Лыжный спорт
  • Астрономия
  • Тяжёлая атлетика
  • Плотничество
  • Боевые искусства
  • Танцы

Здоровье

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

Также обратитесь в клинику, чтобы проверить уровень сахара и холестерина в крови и прочие показатели, и посмотрите, как эти значения меняются со временем. 

Уделите внимание осанке, особенно в области плечей и шеи. 

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

Зона комфорта

Ещё с 20 лет я пытался выяснить, почему одни мои старшие коллеги двигались вперёд, а остальные продолжали топтаться на месте.

Ответ прост — зона комфорта. 

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

И вот небольшой список того, как выйти из зоны комфорта:

  • Переключитесь на Клавиатуру Дворака
  • Смените текстовый редактор или IDE
  • Перестаньте пользоваться мышью
  • Используйте другой оконный менеджер
  • Перейдите с кофе на чай или наоборот
  • Отключите свой телефон хотя бы на день в неделю
  • Попробуйте другую операционную систему
  • Попробуйте другую систему контроля версий
  • Проживите без интернета хотя бы день в неделю
  • Каждый день ешьте пищу, которая вам не нравится
  • Станьте левшой, если вы правша, и наоборот
  • Заведите блог
  • Выступите на публике
  • Слушайте музыку, которая вам не нравится
  • Станьте добровольцем
  • Посетите страну, языком которой вы не владеете.
  • Прочтите книгу, жанр которой вам не нравится
  • Просмотрите фильм в нелюбимом жанре
  • Выступите против чего-то, во что вы верите

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

Например, когда я перешёл на Vim после десяти лет использования Emacs, я настроил его в Emacs-стиле, но продолжил использовать Vim.

Есть так называемое «правило трёх»: когда уже третий человек рекомендует попробовать что-то, ты обязан это попробовать. Также существует так называемое «правило 15 минут»: дайте шанс (будь то книга или музыкальный исполнитель) чему-нибудь, и если в течение 15 минут вам не захочется продолжения, бросьте это. 

Мне нравятся оба эти правила, хотя не стоит воспринимать их слишком буквально и применять их в любой ситуации.

Новые языки программирования

Языки появляются и исчезают, поэтому программисты, ограничивающиеся одним-двумя языками, рискуют своим карьерным ростом. 

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

Вот список языков программирования, из которых можно выбрать:

  • Kotlin
  • Haskell
  • Rust
  • Scala
  • Erlang
  • Clojure
  • SML/NJ
  • OCaml
  • Squeak
  • Prolog
  • Datalog
  • miniKanren
  • Agda
  • Coq
  • Idris

Также можно создать свой язык программирования.

Автоматизация

Разработчикам подвластно автоматизировать не только виртуальные процессы, но и физические. Если вы до сих пор не сделали робота, то создайте робота.

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

Больше математики

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

Вот несколько разделов математики, которые можно изучить:

  • Математический анализ
  • Дифференциальные уравнения
  • Математическая физика
  • Геометрия и топология
  • Теория вероятностей и математическая статистика
  • Математическая логика, алгебра и теория чисел
  • Вычислительная математика
  • Дискретная математика и математическая кибернетика

Безопасность

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

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

Следующие вещи рекомендуется изучить:

  • Изучите возможности SSH
  • Настройте SSL-сертификаты
  • Реализуйте системы шифрования как RSA или AES
  • Попробуйте взломать собственную сеть
  • Перехватите собственный трафик с помощью Wireshark
  • Настройте аутентификацию SSH без пароля, с использованием шифрованных ключей
  • Испытайте nmap на себе, настройте брандмауэр
  • Настройте port-knocking
  • Создайте зашифрованный USB-диск
  • Настройте монитор журналов
  • Настройте обновление пакетов по расписанию

Резервное копирование

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

Воспользуйтесь системами хранения файлов, например, Dropbox и Яндекс.Диск, но лучше «не хранить все яйца в одной корзине». Также обратите внимание на системы контроля версий (GitLab, Bitbucket и пр.). 

Теория

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

Изучите следующее:

  • Теория вычислений, автоматов и формальных языков
  • Теория сложности
  • Формальные методы
  • Семантика
  • Алгоритмы и структуры данных

Искусство и гуманитарные науки

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

Попробуйте изучить в течение месяца следующее:

  • Индустриальный дизайн
  • Философия
  • Фотография
  • Рисование
  • Черчение
  • Музыка и музыкальная теория
  • Кинематограф
  • Литература

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

Новое программное обеспечение

Изучая новое программное обеспечение или его новый вид можно почерпнуть много нового для себя и для своих проектов. Например, если вы никогда не пробовали Blender, попробуйте. Если вы никогда не пробовали LaTeX, то самое время изучить и его. После некоторого изучения отметьте то, что вам понравилось или не понравилось. Если вы нашли что-то плохое в изученном ПО, проверьте, есть ли это в ваших проектах, ведь гораздо легче найти недостатки в чужих, а не своих проектах. 

Собственные проекты

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