В предыдущей статье я рассказал об опыте разработки первой игры TraitorousNumber, а также о своей книге в жанре фэнтези под названием «Эликсир». Сегодня же я хотел бы поделиться с вами набором книг по программированию, которые, без преувеличения, оказали огромное влияние на мою карьеру и помогли эффективно работать в индустрии вот уже более десяти лет на различных должностях: от разработчика до технического директора.
Делая свои первые шаги в геймдеве, я наблюдаю то, насколько огромно это сообщество и то, что люди приходят в эту индустрию с абсолютно разными профессиональным опытом и умениями. Но многие стараются помочь друг другу навыками и знаниями в своей области. Вдохновленный этим фактом я решил составить этот небольшой список.
Статья, скорее, предназначена для тех, кто только начинает изучать программирование и еще не составил для себя четкой последовательности шагов обучения.
Мои основные языки программирования – это C# и Java, поэтому речь пойдет о них, но будут также и независимые от языка примеры.
Данный список не является чем-то обязательным, он лишь представляет собой прекрасно зарекомендовавшие себя книги, которые были отобраны среди десятков прочих.
Итак, поехали…
Jeffrey Richter - CLR via C#
Если вы выбрали C# в качестве основного языка программирования, то, пожалуй, лучше книги, чем «CLR via C#» вам не найти. Этот многостраничный труд содержит в себе детальную информацию о типах данных, примитивах, методах, интерфейсах и прочем, и прочем. Читать эту книгу советую следующим образом: пропустите для начала первую ее часть с основами CLR, где описывается процесс сборки приложения (к ней вы вернетесь, когда освоите все остальное) и переходите к основам типов. Читайте все до делегатов. Так вы сможете изучить всю основную информацию касающуюся C#, не затрагивая довольно специфические темы, которые на текущем этапе вам точно ни к чему.
Joshua Bloch - Effective Java
Книга пусть и имеет в своем названии язык программирования Java, однако включает в себя уйму полезной информации, которая пригодится и для других объектно-ориентированных языков. Здесь вы ознакомитесь с хорошими техниками и правилами, которые стоит применять вне зависимости от того, на каком языке вы пишите.
Книга воспринимается довольно легко, но при этом стоит учитывать, что по сравнению с первой книгой («CLR via C#») здесь приведено намного меньше объяснений. Предполагается, что вы уже знакомы с основными принципами и терминами.
Mark Seemann - Dependency Injection in .NET
Думаю, для знающих людей будет довольно удивительно увидеть эту книгу здесь, однако хотел бы объяснить в чем тут дело. Этот прекрасный, на мой взгляд, труд описывает несколько очень важных для понимания вещей: как должна и как не должна проходить инъекция зависимостей. Абстрагируясь от этого пока устрашающего понятия, мы получаем действительно нужные знания о том, как правильно создавать объекты, как их использовать и связывать между собой, не зарабатывая в итоге головную боль.
Для начинающих я бы посоветовал прочесть только вторую и третью части, оставив специфику DI-контейнеров на потом, а то и вовсе прочесть их в дальнейшем уже из других, более современных источников.
Здесь хотелось бы сделать небольшую паузу и сказать о том, что следующие несколько книг рассчитаны на более продвинутый уровень, и подразумевается, что вы перейдете к ним, когда освоите знания из предыдущих.
Robert Sedgewick - Algorithms
Ну куда нам без алгоритмов?! На самом деле стоит воспринимать эту книгу, как инструмент для расширение мозговой активности, ну или хорошее подспорье для подготовки к собеседованиям. В повседневной деятельности вы навряд ли будете использовать какой-либо алгоритм из этой книги, но задачи бывают разные и не всегда можно обойтись готовыми решениями. Именно в этой ситуации вам и пригодятся знания алгоритмов и структур данных.
Martin Kleppmann - Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Мы переходим к одной из моих самых любимых книг, в которой вы ознакомитесь с общими принципами работы с данными, о том, как они хранятся, передаются и обрабатываются. Здесь вы узнаете разницу во взаимодействии с различными видами баз данных, что такое репликация, партицирование, а также одну из фундаментальных тем, которую, к сожалению, игнорируют многие специалисты – транзакционность и ее уровни изоляции.
Christian Cachin, Rachid Guerraoui, Luís Rodrigues - Introduction to Reliable and Secure Distributed Programming
С ростом вашего навыка придет и необходимость понимания работы приложения в распределенном режиме. Книга написана простым языком о сложных вещах. Здесь вы узнаете о том, зачем приложениям в целом нужен распределенный режим и о таких понятиях как shared memory и consensus.
На этом небольшой список книг для прочтения завершается. Даже несмотря на то, что мы прошлись по довольно большому объему информации, все же остается очень много слепых пятен, которые, однако, я надеюсь, вам будет гораздо легче устранить, после ознакомления с этими книгами.
Представленная в этих книгах информация, за небольшим исключением нескольких глав, является нестареющей классикой.
Если у вас есть знания английского языка, то настоятельно рекомендую читать данные книги в оригинале. Так вы быстрее привыкните к терминам и сможете эффективнее находить ответы на появившиеся вопросы.
Помимо книг не забывайте также об официальной документации продукта, который вы изучаете. Там всегда можно найти самую свежую и полезную информацию.
Огромных вам успехов в изучении этого объемного, но в то же время интересного процесса – программирования!
О своих проектах
- Логическая головоломка с числами TraitorousNumber
Буду признателен за ваши подписки, отзывы и оценки на соответствующих страницах ЛитРес, а также на странице игры TraitorousNumber в Google Play.
Спасибо за внимание!