- PVSM.RU - https://www.pvsm.ru -

Начать путь в разработке — что почитать «молодому» программисту

В прошлый раз мы подготовили компактные подборки с настольными справочниками [1] для сисадминов и ресурсами для DevSecOps [2]. Сегодня говорим о книгах для разработчиков, начинающих погружение в мир программного обеспечения. В списке «классика», которую рекомендуют резиденты Hacker News, Reddit и других профильных площадок.

В блоге T1 Cloud [3] мы регулярно делимся полезными ресурсами для ИТ-специалистов — подписывайтесь, чтобы не пропустить будущие публикации.

/ Unsplash.com / Daoud Abismail
/ Unsplash.com / Daoud Abismail

Code Complete

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

Особое внимание автор уделяет структурированию кода, удобству чтения и восприятия. Один из резидентов Hacker News даже выделил [4] любимую цитату в этом контексте: «Написать программу так, чтобы она была понятна компьютеру — это меньшая часть работы программиста; его основная задача — написать её так, чтобы её понял другой человек».

Читатели отмечают, что одна из наиболее интересных концепций, которую затрагивает [5] Макконелл — это программирование с использованием псевдокода. Он позволяет изложить всю логику приложения, не написав ни одной строчки на каком-либо ЯП. Это может быть удобно при работе над масштабным проектом, в котором важно заранее предусмотреть потенциальные подводные камни.

В целом «Code Complete» подойдет как начинающим, так и опытным разработчикам — каждый сможет почерпнуть что-то полезное вне зависимости от сложности проекта at hand. Однако материал может показаться [6] «тяжелым» к прочтению — он изложен на 960 страницах. Вероятно, не каждый «осилит» книгу до конца. Однако её вполне можно использовать как настольный справочник и обращаться только к тем главам, которые помогут решить текущую задачу.

Clean Code

Если «Code Complete» представляет собой полноценное руководство по разработке программного обеспечения, то «Clean Code» затрагивает аналогичные вопросы, но в более повествовательном [6] формате. Вероятно, это одна из самых часто рекомендуемых [7] книг по разработке ПО, несмотря на тот факт, что она и её автор регулярно подвергаются критике.

«Clean Code» написал разработчик Роберт Мартин, также известный [8] в ИТ-сообществе как Дядя Боб. Он разбирает принципы и приемы написания чистого кода, приводит большое количество примеров. В то же время книга содержит серию практических упражнений, где необходимо найти и устранить проблемы в предложенных блоках кода. Особенно полезна книга будет разработчикам [9] на Java, поскольку в ней есть отдельные главы, посвященные модулю JUnit.

Автор неплохо раскрывает принципы DRY [10], и акцентирует внимание на том, что функции должны решать только одну задачу, но делать это хорошо. С другой стороны, автора критикуют [11] за не самые удачные примеры кода и спорные подходы к разработке — например, за идею, что идеальная функция не содержит аргументов.

/ Unsplash.com / Shamin Haky
/ Unsplash.com / Shamin Haky

Если вам понравится подача материала и стиль автора, то в его портфолио есть несколько аналогичных работ: «Clean Architecture», посвященная проектированию чистой архитектуры, «Clean Agile» об организации задач в условиях гибких методологий и «Clean Coder» с лучшими практиками для разработчиков.

Хотя резиденты Hacker News отмечают [12], что книги представляют собой набор рекомендаций, которым не нужно следовать беспрекословно. Однако с ними стоит познакомиться, чтобы сформировать собственное мнение о предлагаемых практиках и понять, когда можно нарушать правила. В ИТ-сообществе до сих пор нет абсолютного консенсуса по вопросам чистоты кода и архитектуры. Сам этот факт находит отражение в «Clean Architecture». Роберт Мартин включил туда отдельную главу [13], которую написал приглашённый автор — Саймон Браун, и его идеи во многом противоречат остальной части материала.

Structure and Interpretation of Computer Programs

По словам пользователя Hacker News, эта книга встречается в тематических подборках литературы недостаточно часто. Она написана профессорами MIT — Харольдом Абельсоном и Джеральдом Сассманом — и одно время служила учебником для начинающих программистов на диалекте LISP (сегодня в вузе используют Python).

Несмотря на то что первое издание книги было выпущено в далеком 1985 году, изложенные в ней базовые принципы до сих пор остаются актуальными — такие как абстракция данных, метаязыковая абстракция, рекурсия. С другой стороны, некоторые подразделы безвозвратно устарели. К ним стоит относиться как к исторической справке и обращаться исключительно для общего развития.

Книгу можно скачать бесплатно — текст второго издания распространяют по лицензии Creative Commons [14].

В этом контексте стоит отметить еще одну книгу от издательства MIT Press — «Concepts, Techniques, and Models of Computer Programming [15]». Она раскрывает ключевые концепции программирования, техники и парадигмы, необходимые начинающему разработчику. Материал используют и дополняют многие курсы и лекции [16] профессоров технологического института.

The Mythical Man-Month

Эта работа Фредерика Брукса, пожалуй, наиболее известная рекомендация в нашей сегодняшней подборке. The Mythical Man-Month — это сборник эссе о проблемах разработки масштабных программных проектов. В отличие от предыдущих материалов, автор концентрируется не на практических, а управленческих навыках. Одна из ключевых идей автора — привлечение новых людей на поздних этапах разработки лишь отодвигает сроки сдачи проекта.

Книга ориентирована [17] на продакт-менеджеров и других управленцев в сфере ИТ, однако полезные знания могут почерпнуть и рядовые разработчики — особенно в вопросах планирования и управления собственным временем.

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


Свежие материалы в нашем блоге на Хабре:

Автор:
cloudtrend

Источник [21]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka/378576

Ссылки в тексте:

[1] подборки с настольными справочниками: https://habr.com/ru/company/t1_cloud/blog/662954/

[2] ресурсами для DevSecOps: https://habr.com/ru/company/t1_cloud/blog/669720/

[3] T1 Cloud: https://habr.com/ru/company/t1_cloud/blog/

[4] выделил: https://news.ycombinator.com/item?id=32306430

[5] затрагивает: https://www.goodreads.com/review/show/614578219?book_show_action=true

[6] может показаться: https://news.ycombinator.com/item?id=32308462

[7] часто рекомендуемых: https://software-engineering-books.com/

[8] известный: https://www.informit.com/articles/article.aspx?p=1711821

[9] разработчикам: https://www.reddit.com/r/learnprogramming/comments/29tl74/thoughts_on_clean_code/

[10] DRY: https://ru.wikipedia.org/wiki/Don%E2%80%99t_repeat_yourself

[11] критикуют: https://qntm.org/clean

[12] отмечают: https://news.ycombinator.com/item?id=32311420

[13] отдельную главу: https://www.oreilly.com/library/view/clean-architecture-a/9780134494272/ch34.xhtml

[14] распространяют по лицензии Creative Commons: https://web.mit.edu/6.001/6.037/sicp.pdf

[15] Concepts, Techniques, and Models of Computer Programming: https://www.info.ucl.ac.be/~pvr/book.html

[16] курсы и лекции: https://www.info.ucl.ac.be/~pvr/ds/mitbook.html

[17] ориентирована: https://www.reddit.com/r/learnprogramming/comments/g9mzp4/is_reading_the_the_mythical_manmonth_worth_it/

[18] Скрытые жемчужины — сетевые протоколы, о которых мало кто слышал: https://habr.com/ru/company/t1_cloud/blog/682370/

[19] Из энтерпрайза в стартап и обратно: история одного продакт-менеджера: https://habr.com/ru/company/t1_cloud/blog/681826/

[20] Обсуждаем книги, которые можно читать вновь и вновь: https://habr.com/ru/company/t1_cloud/blog/678188/

[21] Источник: https://habr.com/ru/post/686044/?utm_source=habrahabr&utm_medium=rss&utm_campaign=686044