В прошлый раз мы подготовили компактные подборки с настольными справочниками для сисадминов и ресурсами для DevSecOps. Сегодня говорим о книгах для разработчиков, начинающих погружение в мир программного обеспечения. В списке «классика», которую рекомендуют резиденты Hacker News, Reddit и других профильных площадок. В блоге T1 Cloud мы регулярно делимся полезными ресурсами для ИТ-специалистов — подписывайтесь, чтобы не пропустить будущие публикации. Классика от программиста Стива Макконнелла. Опираясь на академические исследования и собственный опыт коммерческой разработки, он собрал под одной обложкой коллекцию лучших практик и принципов по написанию приложений. Книга затрагивает широкий спектр тем — например, производительность кода, отладка, составление документации. Особое внимание автор уделяет структурированию кода, удобству чтения и восприятия. Один из резидентов Hacker News даже выделил любимую цитату в этом контексте: «Написать программу так, чтобы она была понятна компьютеру — это меньшая часть работы программиста; его основная задача — написать её так, чтобы её понял другой человек». Читатели отмечают, что одна из наиболее интересных концепций, которую затрагивает Макконелл — это программирование с использованием псевдокода. Он позволяет изложить всю логику приложения, не написав ни одной строчки на каком-либо ЯП. Это может быть удобно при работе над масштабным проектом, в котором важно заранее предусмотреть потенциальные подводные камни. В целом «Code Complete» подойдет как начинающим, так и опытным разработчикам — каждый сможет почерпнуть что-то полезное вне зависимости от сложности проекта at hand. Однако материал может показаться «тяжелым» к прочтению — он изложен на 960 страницах. Вероятно, не каждый «осилит» книгу до конца. Однако её вполне можно использовать как настольный справочник и обращаться только к тем главам, которые помогут решить текущую задачу. Если «Code Complete» представляет собой полноценное руководство по разработке программного обеспечения, то «Clean Code» затрагивает аналогичные вопросы, но в более повествовательном формате. Вероятно, это одна из самых часто рекомендуемых книг по разработке ПО, несмотря на тот факт, что она и её автор регулярно подвергаются критике. «Clean Code» написал разработчик Роберт Мартин, также известный в ИТ-сообществе как Дядя Боб. Он разбирает принципы и приемы написания чистого кода, приводит большое количество примеров. В то же время книга содержит серию практических упражнений, где необходимо найти и устранить проблемы в предложенных блоках кода. Особенно полезна книга будет разработчикам на Java, поскольку в ней есть отдельные главы, посвященные модулю JUnit. Автор неплохо раскрывает принципы DRY, и акцентирует внимание на том, что функции должны решать только одну задачу, но делать это хорошо. С другой стороны, автора критикуют за не самые удачные примеры кода и спорные подходы к разработке — например, за идею, что идеальная функция не содержит аргументов. Если вам понравится подача материала и стиль автора, то в его портфолио есть несколько аналогичных работ: «Clean Architecture», посвященная проектированию чистой архитектуры, «Clean Agile» об организации задач в условиях гибких методологий и «Clean Coder» с лучшими практиками для разработчиков. Хотя резиденты Hacker News отмечают, что книги представляют собой набор рекомендаций, которым не нужно следовать беспрекословно. Однако с ними стоит познакомиться, чтобы сформировать собственное мнение о предлагаемых практиках и понять, когда можно нарушать правила. В ИТ-сообществе до сих пор нет абсолютного консенсуса по вопросам чистоты кода и архитектуры. Сам этот факт находит отражение в «Clean Architecture». Роберт Мартин включил туда отдельную главу, которую написал приглашённый автор — Саймон Браун, и его идеи во многом противоречат остальной части материала. По словам пользователя Hacker News, эта книга встречается в тематических подборках литературы недостаточно часто. Она написана профессорами MIT — Харольдом Абельсоном и Джеральдом Сассманом — и одно время служила учебником для начинающих программистов на диалекте LISP (сегодня в вузе используют Python). Несмотря на то что первое издание книги было выпущено в далеком 1985 году, изложенные в ней базовые принципы до сих пор остаются актуальными — такие как абстракция данных, метаязыковая абстракция, рекурсия. С другой стороны, некоторые подразделы безвозвратно устарели. К ним стоит относиться как к исторической справке и обращаться исключительно для общего развития. Книгу можно скачать бесплатно — текст второго издания распространяют по лицензии Creative Commons. В этом контексте стоит отметить еще одну книгу от издательства MIT Press — «Concepts, Techniques, and Models of Computer Programming». Она раскрывает ключевые концепции программирования, техники и парадигмы, необходимые начинающему разработчику. Материал используют и дополняют многие курсы и лекции профессоров технологического института. Эта работа Фредерика Брукса, пожалуй, наиболее известная рекомендация в нашей сегодняшней подборке. The Mythical Man-Month — это сборник эссе о проблемах разработки масштабных программных проектов. В отличие от предыдущих материалов, автор концентрируется не на практических, а управленческих навыках. Одна из ключевых идей автора — привлечение новых людей на поздних этапах разработки лишь отодвигает сроки сдачи проекта. Книга ориентирована на продакт-менеджеров и других управленцев в сфере ИТ, однако полезные знания могут почерпнуть и рядовые разработчики — особенно в вопросах планирования и управления собственным временем. Расскажите нам о книгах, которые помогли вам стать лучшей версией себя и прокачаться как разработчику программного обеспечения. Давайте обсудим эти материалы в комментариях. Свежие материалы в нашем блоге на Хабре: Скрытые жемчужины — сетевые протоколы, о которых мало кто слышал Из энтерпрайза в стартап и обратно: история одного продакт-менеджера Обсуждаем книги, которые можно читать вновь и вновь