Работа программистом предполагает постоянное обязательное самообучение. Самообучение включает в себя, во-первых, углубление знаний в уже знакомых сферах, и, во-вторых, получение навыков в неизвестных и пропущенных областях. Это всё, конечно, красиво звучит на бумаге, но по факту мы ещё имеем приступы лени, застревания в стеке технологий и выгорание от рутины. Новые ощущения помогают в борьбе с тёмной стороной разработки. Вот только ощущения должны быть действительно новыми: разбираться в десятый раз с нюансами «новых» api от очередной социалки быстро становится завуалированной рутиной.
Сама по себе ответственная работа способствует развитию знаний первого типа, благодаря чему улучшаются навыки узкого специалиста. При этом второй тип тоже пополняется, но очень медленно, спонтанно и бесконтрольно. А значит, и неудовлетворительно. А хочется знать больше, уметь лучше, краснеть за свои решения реже, задирать нос выше.
В статье я описываю свой подход, который помогает мне результативнее заполнять пробелы в знаниях, а также с большим удовольствием заниматься геймдевом в качестве хобби.
Основное решение тут простое и всем известное: самообразование. Оно может принимать разные формы: дополнительный проект для хобби; образовательные курсы и семинары (текст / аудио / видео); конкурсы и соревнования; книги. Для меня самыми полезными и эффективными стали книги, поэтому на их примерах и будут описаны применяемые мной методы контролируемого обучения.
В чём проблема? Бери и читай!
Чтение специальной технической литературы не только полезно и интересно, но ещё временами трудно, скучно и долго. Безусловно, бывают очень увлекательные моменты, описывающие элегантный паттерн или анекдот про чужое неудачное решение в разработке с очевидными косяками (может даже такими же, как у тебя). Но в основном такие книги проигрывают своим развлекательным собратьям, особенно после напряжённого рабочего дня, когда больше хочется расслабиться, а не тянуть дальше.
Вот с чем легче провести время отдыха: «Эгоистичный ген» Докинза или «Совершенный код» Макконелла; «Кровь, пот и пиксели» Шрайдера или «Паттерны проектирования» от Фрименов? (Хотя справедливости ради стоит добавить, что все эти книги были самыми увлекательными в списке)
Вот начал полезную книгу. Теперь всё хорошо?
А вот нет. За собой заметил, что впервые начав читать Совершенный код Макконнелла, замедлился в чтении где-то на середине. И как-то незаметно можно сделать перерыв в неделю, две недели… потом почитать часок… и опять пауза на неделю. Эдак одну книгу годами можно читать, но так и не закончить, но ложное чувство постепенного прогресса при этом всё равно присутствует. А чувство стыда за большие перерывы незаметно отбивает всякое желание возвращаться к предмету, который доставляет столько неприятных переживаний.
Так кто же враг?
Моим врагом было отсутствие наглядности. Когда не видишь постоянно насущную задачу, то её вроде как и нет. И можно отложить её в долгий ящик. Для решения этой проблемы у меня не было инструментов, но подходящий для себя я всё же нашёл. И это простая таблица карьерного капитала в Google Docs. Сойдёт вообще любая таблица, в том числе и в бумажном виде. Нашёл я эту методику в книге Нюпорта «В работу с головой». У него там несколько методик, но мне подошла именно эта.
Методика «Таблица карьерного капитала»
Базовые правила:
1) Создать таблицу с 3 столбцами: Дата; Затраченные часы; Выполняемые задачи.
2) В конце каждого дня заполнять очередную строку таблицы. В «Выполняемые задачи» вносится список значимых для самообразования задач и сколько часов в каждую из задач было инвестировано. В «Затраченные часы» сумма часов по задачам.
3) Если за день не было выполнено ни одной задачи, то ставить прочерки и нули, чтобы они мозолили глаза.
4) Включать в список только значимые для своего самообучения задачи. Ремонт в квартире часто может быть важнее самообразования, но включать его сюда не стоит. Впрочем, это правило очень размытое.
5) Задачи предпочтительнее ставить в формате SMART, то есть быть: конкретными (прочитать книгу А); измеримыми (прочитана и понята 1 книга); достижимыми (я уже читал подобные книги и эту осилю); актуальными (мои алгоритмы тормозят! С этим надо что-то делать); с указанием крайнего срока сдачи (максимум 2 месяца на прочтение).
6) Общее число текущих задач не должно быть слишком большим, чтобы не распыляться. Для меня это примерно 6 задач. При этом строго соблюдается правило, что единовременно нельзя читать больше 2 книг.
7) В конце месяца суммируются все часы и сравниваются со средним Вашим показателем. Если больше среднего — чувствуем себя очень хорошо; если ниже среднего — всё равно чувствуем себя хорошо; если ниже поставленного обязательного минуса — чувствуем себя нехорошо и либо корректируем своё поведение, либо снижаем минимальную планку.
Вот и всё — метод очень простой. За подробным описанием с примерами можно обратиться к одной из книг Нюпорта.
У себя я вношу часы с градацией 0,25 часов (15 минут).
В месяц у меня выходит от 30 до 120 часов.
Минимальная планка: 30 часов.
Средняя планка: 60 часов.
Таблицу можно уточнять, усложнять и украшать разными диаграммами для приятной визуализации.
А бонус этого подхода в том, что Вы узнаёте, сколько же реального времени у Вас занимает чтение одной книги. Да и вообще, что именно Вы чаще читаете.
Ниже я привожу часть книг с их чистыми затратами на прочтение. Сначала технические, потом общеобразовательные и пограничные (список нехронологический).
— [40,25 ч.] Совершенный код. Макконнелл.
— [1,75 ч.] Scrum гайд и стратегии.
— [34,50 ч.] Искусственный интеллект в компьютерных играх. Алекс Дж. Шампандар.
— [26,50 ч.] Паттерны проектирования. Фримен, Фримен, Сьерра.
— [24,75 ч.] (English) Шаблоны в игровом программировании. Робер Нистром.
— [17,50 ч.] Эгоистичный ген. Докинз.
— [5,50 ч.] Воспитание ребенка. Гипенрейтер.
— [8,00 ч.] В работу с головой. Нюпорт.
— [12,75 ч.] (English) Гарри Поттер 1.
— [9,75 ч.] (English) Гарри Поттер 2.
— [11,25 ч.] (English) Гарри Поттер 3.
— [22,75 ч.] (English) Гарри Поттер 4.
— [26,75 ч.] (English) Гарри Поттер 5.
— [18,25 ч.] (English) Гарри Поттер 6.
— [19,75 ч.] (English) Гарри Поттер 7.
— [5,50 ч.] Фрирайтинг. Марк Леви.
— [13,00 ч.] (English) How to win friends. Cornegey.
— [4,25 ч.] Макиавелли. Государь.
— [7,50 ч.] Кровь, пот и пиксели Шрайера.
— [23,75 ч.] Все о цвете. Линдси.
Заключение
Сухие цифры говорят, что технические книги читаются лишь с немного меньшей скоростью, чем более легкие или художественные. Просто технические в несколько раз толще. И за раз много технической литературы впитать очень сложно.
Кстати, хочу заметить, что наличие некоторых книг в списке не означает, что они мне понравились и я бы их рекомендовал кому-то, кроме своих врагов. Поэтому рекомендательным списком его воспринимать никак нельзя.
Для игровой разработки я могу посоветовать: «Совершенный код»; «Паттерны проектирования»; «Шаблоны в игровом программировании»; «Кровь, пот и пиксели»; «Все о цвете».
В комментариях было бы замечательно увидеть и Ваши списки рекомендуемых книг.
Источник: habr.com