От редакции: в рубрике DOU Booksучастники сообщества рассказывают о пяти любимых книгах — тех, которые меняют мировоззрение и могут быть полезны читателям-коллегам.
[Виталий Малаховский, iOS Tech Lead в BetterMe. Более 7 лет в мобильной разработке, участник конференций, ментор. В свободное время замечен в музыкальной группе «Каменщики»]
Хочу рассказать о книгах, которые повлияли на то, чем я сейчас занимаюсь. Моей специальностью является техническое обеспечение качества исполняемого продукта. Мне интересно вникнуть в то, как система работает изнутри, поэтому значительная часть подборки посвящена дизайну программного обеспечения. Также я решил поделиться книгой, которая помогла мне понять, почему бизнес ведет себя именно так, а не иначе. И напоследок я представлю работу, которая помогает мне выстраивать коммуникацию.
В русском переводе — Харольд Абельсон, Джеральд Джей Сассман «Структура и интерпретация компьютерных программ»
Авторы книги Гарольд Абельсон и Джеральд Сассман вместе с Джулией Сассман исследуют вопросы структуры и интерпретации компьютерных программ. На многочисленных примерах показаны основы абстракции, модульности и дизайна языка программирования. Заканчивается книга построением модели вычислительной машины с написанием интерпретатора и компилятора, что объясняет множество нюансов работы их реальных прототипов. Неотъемлемой частью текста выступают задачи, которые я настоятельно рекомендую для самостоятельного выполнения. В них ключ к закреплению полученных знаний.
Книга использовалась как учебник начального курса программирования на кафедре электротехники и компьютерных наук в MIT. И даже несмотря на свой возраст (первое издание вышло в 85 году), она применяется в изучении функциональных языков программирования.
В русском переводе — Майкл К. Физерс «Эффективная работа с унаследованным кодом»
Майкл Физерс пишет о работе с кодом, который вам достался (в том числе от самих себя). Главная идея: пишите тесты, а если без них, то делайте все предельно аккуратно. Книга полна примеров рефакторинга и реорганизации кода для последующего упрощения поддержки. В изобилии примеры из процедурного программирования. А после этого следует плавная подводка к ответу на вопрос, в силу чего ООП-код намного более поддерживаемый и более простой для восприятия.
В процессе чтения отношение к книге у меня было крайне неоднозначным, потому как некоторые подходы «и так понятны» и ничего сверхъестественного в них нет. Нужно понимать, однако, что на момент выхода (а это уже 15 лет назад) всё это было очень актуально, и многое сейчас уже мейнстрим, коим тогда он ещё не был.
Однозначно стоит прочитать инженеру ПО независимо от направления работы. По-хорошему стоило бы изучать в связке с Фаулеровским рефакторингом.
P. S. Даже не пытайтесь читать в русском переводе. Только оригинал.
В русском переводе — Мартин Фаулер «Шаблоны корпоративных приложений»
В работе рассмотрены проблемы, характерные для больших бизнес-приложений, и предложены способы их решения. Важно понимать, что то, что Мартин Фаулер описывал как большие и сложные системы, сегодня вполне может существовать в нашем мобильном телефоне. Книгу можно разделить на две части. Первая посвящена общей архитектуре ПО — как ее построить и на какие слои разделить. Во второй же части речь идет о самих шаблонах проектирования, с краткой аналитикой и советами по применению.
К сожалению, книгу нельзя назвать универсальной. Автор много пишет о работе с реляционными базами данных и ничего о работе с другими типами хранилищ (распределённые файловые системы, ассоциативные массивы данных). Довольно много в книге примеров использования уже не так часто встречающегося XML. Но несмотря на это, книга способна расширить кругозор паттернов и способов их имплементации.
В русском переводе — «Бизнес с нуля. Метод Lean Startup для быстрого тестирования идей и выбора бизнес-модели»
Достаточно известная книга для стартаперов. В работе есть некая главная мысль, вокруг которой и должен жить и развиваться любой стартап. Мысль состоит в том, что для того, чтобы вырасти, нужно двигаться постепенно, а не ставить на кон всё, что есть. Попробовать, и даже если это не до конца качественно продуманная/реализованная идея — сделать вывод. И ответить самому себе на вопрос: стоит ли идти дальше, а если да, то в какую сторону. И снова по кругу. Чем этих кругов больше (а сами они чаще и меньше), тем лучше. Другими словами — как идея, схожая со скрамом, должна двигать ваш бизнес вперед.
Так как я не создавал собственный бизнес, мне было интересно прочесть и понять книгу как бы со стороны. Я не предприниматель и мне всегда было непонятно, почему же не все запариваются качеством продукта, начиная с первого шага? Или почему некоторые проекты закрываются, так и не успев пожить какое-то время? Этому в книге даётся логическое объяснение. Лучше плохая, но работающая идея — та, которая принесёт прибыль, с которой можно работать, улучшая её, и в конце концов сделать из неё суперкачественный продукт. А не сразу качественно сделанная идея, которая не работает и в итоге проваливается.
Jason Fried, David Heinemeier Hansson «Remote»
В русском переводе — Дэвид Хенссон «Remote: офис не обязателен»
Компания 37 signals делится своим опытом организации удаленной команды. Будет актуальна не только для людей, реально работающих вне офиса, но также и для тружеников аутсорса. Общение с клиентом в другом часовом поясе похоже на общение с коллегами на удаленке.
В книге собраны аргументы «за» и «против» работы вне офиса. Мораль такова, что распределённая команда — намного более сложно устроенный организм, предполагающий большую ответственность каждого члена команды. Работа на удалении заставляет совершенствовать в первую очередь самоорганизацию, пунктуальность и внимание к общению ввиду большей цены акта коммуникации — ведь для контакта с коллегой нужно сделать немного больше телодвижений.
Советы из книги не выглядят откровением или чем-то фантастическим, но в ней содержатся факты, нуждающиеся в озвучивании. Написана простым языком и легко читается за несколько вечеров.