Техническая литература бывает разная: от небольших тематических статей до серьезных справочников с подробным описанием функций и атрибутов. И каждый из этих типов решает разные задачи — развлекает, обучает, позволяет освежить какую-либо тему.
Сегодня мы расскажем, к каким источникам рекомендуют обращаться программисты, инженеры и резиденты тематических платформ (Stack Exchange, Stack Overflow и др.), если вам нужно изучить новый язык или углубить знания в какой-то отдельной области. Также приведем несколько их рекомендаций о том, как с такой литературой «работать».
/ Flickr / Devin Stein / CC
Какой бывает техническая литература
К технической литературе относятся не только книги о теории программирования или языках. Сюда можно включить новости по теме, треды на профильных площадках, документацию, хелпы и справочники, чужой код и даже корпоративные блоги (наш пример на сайте 1cloud).
Каждый из этих источников решает различные задачи: просто развлекает читателя или помогает найти ответ на конкретный вопрос. Например, книги о языках программирования, алгоритмах и так далее дают погрузиться в нужную область знаний. Рассылки и новости по теме помогают быть в курсе происходящего и фоном изучать новые технологии. Блоги и форумы позволяют узнать мнения людей о той или иной проблеме, перенять их опыт или просто развлечься. К этой же категории относятся треды на Hacker News, Stack Exchange, Reddit и др.
Еще один вид «технической литературы» — это программный код. Чтение и анализ чужого кода позволяет учиться на ошибках других людей. А справочники помогут узнать атрибуты функции, принципы её работы или быстро освежить в памяти подзабытые вещи.
Таким образом, разные типы источников подходят для разных задач. Но никто не читает литературу, код, треды «от корки до корки»: книги часто покупают в качестве настольного справочника, а на специализированных платформах вроде Stack Overflow и Stack Exchange люди пользуются поиском — нашел ответ на свой вопрос, решил проблему. Несомненный плюс интерактивных площадок в том, что вы не ограничиваетесь уже существующим контентом — если ответа на интересующий вопрос не оказалось, или вам не до конца понятно чье-то объяснение, можно задавать свои вопросы.
Например, в этом треде на SO топик-стартер спросил, почему сортировка массива делает его код в шесть раз быстрее. Члены сообщества рассказали ему об алгоритмах предсказания ветвлений, построили схемы, привели аналогии, порекомендовали книги для дальнейшего изучения. Этот вопрос стал самым популярным на платформе — тред собрал более миллиона просмотров, а один из ответов «плюсанули» больше 26 тыс. раз.
Таким образом, выбор конкретных источников зависит от целей и задач, которые вы планируете решить. О чем мы и поговорим далее.
Если хочется узнавать что-то новое в фоновом режиме
Для выполнения этой задачи подойдут рассылки и блоги. Их удобно просматривать с утра за чашкой кофе или во время перерыва на работе. Это не требует особых усилий и позволяет постоянно быть в теме последних событий. Например, на этом сайте собраны 50 лучших блогов по программированию на самые разные темы: от разработки под iOS до веб-дизайна, а здесь вы найдете 13 популярных рассылок. Как вариант — установить специализированное приложение на смартфон.
Дополнительно разработчик и математик Уэйн Уэхио (Wayne Uejio) советует добавить в свой фид интернет-объявления от потенциальных заказчиков, чтобы лучше понимать ситуацию на рынке труда и актуальные потребности работодателей.
Если нужно узнать атрибуты функции
Для того чтобы прояснить или освежить в памяти что-то конкретное, подойдут справочники, гайды и хелп. После ознакомления можно, например, выписать информацию на листок или создать GitHub-репозиторий, как это сделал веб-разработчик Джеймс Харрис. Так вам не придется обращаться к хелпу повторно и тратить на это время.
Если нужно выучить новый язык
В этом случае одним из вариантов становятся книги. При выборе книги важно читать аннотацию — есть мнение, что первая тысяча слов задает основу всей книги (и, как минимум, позволяет ознакомиться со стилем изложения автора). Поэтому аннотация и оглавление, как лакмусовая бумажка, помогут составить общее представление о том, подойдет ли вам эта книга сейчас (есть ли в ней ответы на нужные вопросы, много ли примеров, объясняет ли автор, зачем читать его книгу и какие знания вы получите в итоге), или, возможно, стоит отложить ее и переключиться на другие издания.
Также при выборе литературы для изучения новых технологий стоит обратить внимание на тематические подборки и дайджесты, составленные на основе рекомендаций экспертов отрасли — чаще всего в них собраны наиболее адекватные материалы, проверенные сообществом. Например, вот несколько подборок, которые подготовили мы в 1cloud: VPS-дайджест, DNS-дайджест, VPN-дайджест.
При этом пользователи Hacker News советуют читать несколько книг параллельно, чтобы можно было рассмотреть тему с «разных углов» и составить у себя в голове более полную картину. Причем это справедливо не только для книг, но и для статей и блогов. Например, можно читать статью автора блога Monday Morning Haskell Джеймса Боуэна (James Bowen) о типах монад в Haskell, одновременно изучая объяснение одного из пользователей GitHub о том, как монады «воспроизводятся».
Дополнительно резиденты HN предлагают писать конспекты, рисовать ментальные карты, а также фиксировать вопросы, возникающие по ходу чтения, чтобы потом искать ответы в других источниках. Когда мы пишем от руки, мы лучше понимаем и запоминаем важный материал.
Профессор лингвистики Наоми Барон (Naomi Baron) провела опрос среди 300 студентов США, Японии, Словакии и Германии. И 92% респондентов отметили, что фиксация ключевых моментов на бумаге помогает им достичь максимальной концентрации и оставить в памяти больше информации.
Дэмьен Роше (Damien Roche), пользователь Quora, разработчик ПО и предприниматель, отмечает, что ментальные карты помогают создать общее представление о каком-либо предмете и понять, как всё работает. Например, Дэмьен сделал схему для новичков, которая описывает все компоненты, необходимые для разработчика на Ruby on Rails. Он уверен, что карта будет хорошим подспорьем при обучении и поможет начинающим не упускать важные вещи.
Другие разработчики в этом треде Quora утверждают, что стоит попробовать даже написать код для своего сервиса создания ментальных карт, так как это позволит параллельно прокачать практические навыки.
Пример успешного развития проекта с ментальными картами — Learn Anything. Вначале он выглядел так. Авторы просто практиковались в написании кода. Один из разработчиков — Анджело Гадзола (Angelo Gazzola) даже спрашивал у пользователей Reddit совета, как можно улучшить карты.
Однако потом проект перерос в нечто большее и стал сервисом для поиска обучающего контента в интернете. Теперь этот открытый ресурс выглядит так и объединяет полторы тысячи интерактивных ментальных карт. Подробнее об этом можно прочитать в статье Никиты Волобоева, одного из кураторов проекта Learn Anything.
Также при изучении нового языка резиденты Quora рекомендуют гуглить примеры использования кода в реальных проектах и практиковаться на их реализации по ходу изучения материала. При этом Абхишек Чаухан (Abhishek Chauhan), инженер-программист из Amazon, советует экспериментировать с кодом, встречающимся в качестве примеров или туториалов.
Например, Даниэль фон Фандж (Daniel Von Fange), разработчик веб-приложений, десятилетиями пользуется следующим алгоритмом: читает книгу в один заход, а затем разрабатывает демопроект, применяя полученные знания. После уточняет детали, которые позабыл или упустил. По его словам, он открывает книгу всего пару-тройку раз, чтобы усвоить ключевые моменты.
Если нужно углубить знания по теме
Здесь также важно использовать как можно больше источников, чтобы оценить разные точки зрения. Для этого подойдут форумы, книги, статьи и примеры чужого кода. Если вы остановили свой выбор на книге, то, как советует один из резидентов Stack Exchange, стоит переходить сразу в конец главы, читать выводы, делать упражнения и сразу применять полученные знания на практике. Если заданий в книге нет — их нужно выдумать самостоятельно или попросить об этом друга.
Для расширения знаний в конкретной области, участники треда Software Engineering также рекомендуют делать короткие заходы на чтение. Главное — концентрация, она должна быть максимальной. Можно использовать следующий цикл: вдумчиво читать книгу 10 минут, затем спросить себя: «Мне скучно?». Если ответ «да» — отложить чтение, иначе — читать ещё 10 минут. Главное — не забывать о ваших целях и задачах, чтобы все-таки завершить изучение запланированного.
Еще стоит обратить внимание на тематические платформы: Хабрахабр, Тостер, Stack Overflow и Stack Exchange, а также тематические треды на форумах и в социальных сетях. Там можно найти ответы на многие вопросы — практически все проблемы, с которыми вы сталкиваетесь, уже кто-то решал. В крайнем случае можно задать вопрос самостоятельно.
Кратко обобщим всё сказанное выше:
- Для фонового обучения обратите внимание на рассылки, новости, блоги.
- Для прояснения тонкостей реализации функций подходят справочники, гайды, форумы — кратко фиксируйте полученную информацию.
- Чтобы выучить новый язык, работайте с несколькими источниками параллельно, запоминая главные моменты. В процессе изучения материала ищите примеры и пишите свой код.
- Для точечного углубления знаний по теме изучайте форумы, книги, статьи и примеры чужого кода — и сразу применяйте полученные знания на практике.
P.S. Что еще есть на Хабре по этой теме:
- Скорочтение: работает или нет?
- Как читать научные статьи
- Поиск и чтение унаследованного кода
- Отложенное чтение: OpenSource-альтернатива
- Как запоминать и понимать больше, если научился читать в 8 раз быстрее
Автор: 1cloud