Maht 532 leheküljed
Кодеры за работой. Размышления о ремесле программиста
Raamatust
Программисты – люди не очень публичные, многие работают поодиночке или в небольших группах. Причем самая важная и интересная часть их работы никому не видна, потому что происходит у них в голове. Питер Сейбел, писатель-программист, снимает покров таинственности с этой профессии. Он взял интервью у 15 величайших профессионалов: Кена Томпсона, создателя UNIX, Берни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Саймона Пейтон-Джонса, Питера Норвига, Джошуа Блоха, Брэда Фицпатрика, создателя Живого Журнала, и других. Все они «подсели» на программирование еще в школе. Тогда, на заре зарождения отрасли, лишь в немногих учебных заведениях читались курсы по компьютерным наукам. Поэтому будущим гуру приходилось покорять профессиональные вершины самостоятельно, но всех их отличает творческое горение и полная самоотдача любимому делу.
Вы узнаете, что они думают о будущем программирования и как сами научились программировать, как, по их мнению, нужно проектировать ПО, как выбор языка программирования влияет на продуктивность и можно ли облегчить выявление труднонаходимых ошибок.
Увлекателен формат книги: этакий сборник интервью, что подкупает максимальным сохранением первоисточника – приведена прямая речь в формате диалога.
С другой стороны, не хватает целостности. Без выводов, систематизации остается набором разрозненных интервью. Больше биографии и истории – поскольку все интервью взяты у легендарный программистов несколько ушедшей уже эпохи, нежели полезна простым кодерам в современной повседневной работе, как казалось бы обещает название.
Этот сборник представляет собой уникальные беседы Питера Сейбла с самыми известными и опытными программистами, которые сделали большой вклад в программирование. В них участвуют Джейми Завински, Брендан Айк, Брэд Фицпатрик, Дуглас Крокфорд, Джошуа Блох, Джо Армстронг, Саймон Нейтон-Джонс, Питер Норвиг, Гай Стил, Дэн Ингаллс, Питер Дойч, Кен Томпсон, Фрэн Аллен, Берни Козелл и Дональд Кнут. Для того чтобы провести эти ценные интервью, автор объездил множество городов мира, включая Бостон, Нью-Йорк, Кембридж (Англия) и Стокгольм.
В ходе своих бесед Питер Сейбел задавал каждому программисту вопросы о программировании: как они научились программировать, какие идеи открыли, создавая программы, что они думают о будущем программирования и как они представляют себя в этом деле - как ученые, инженеры, художники, ремесленники или кем-то другим. Он также обсуждал вопросы, вечно актуальные для программистов: правильное проектирование программного обеспечения, влияние выбора языка программирования на продуктивность и возможности избежать ошибок, а также возможность облегчить выявление сложноуловимых ошибок. Каждый программист дал свои уникальные ответы, и вследствие этого чтение и размышление над каждой точкой зрения становится еще более увлекательным.
Почти все программисты, с которыми беседовал Сейбел, придерживаются мнения о важности написания читаемого кода. Большинство считает, что самыми сложными ошибками в программировании являются те, которые связаны с параллельными вычислениями. Никто из них не считает, что все проблемы программирования уже решены, и многие из них продолжают искать новые пути разработки программного обеспечения, будь то с помощью автоматического анализа кода, усовершенствования организации совместной работы программистов или используя (или создавая) более эффективные языки программирования. Все они согласны, что развитие многоядерных процессоров оказывает серьезное влияние на процесс разработки программ.
Некоторые темы и вопросы, поднимаемые в беседах, могут быть уже несколько устаревшими, но для меня, интересующегося историей компьютерной науки, это лишь подогревает интерес, поскольку мне всегда интересно следить за развитием этой области. Каждая поднятая в книге тема раскрывает глубокий смысл того, что такое разработка программного обеспечения, как лучше его создавать и что может быть полезно программисту в настоящее время и в будущем.
Питер Сейбел: Но вам ведь все еще интересно программировать самому? Дональд Кнут: Разумеется, да. Мне просто необходимо программировать. Я просыпаюсь утром, и у меня уже готово несколько предложений литературной программы. Перед завтраком — уверен, поэтам это знакомо — я должен сесть за компьютер и записать этот абзац, и только потом могу идти есть, и я счастлив. Без этого я не могу, должен это признать.
Ладно, давайте я расскажу о программе, которую написал вчера...
Часто встречаюсь с дискуссиями о том, что каждый человек должен развиваться не просто во всех направлениях, а в том числе и углубленно по своей сфере профессиональной деятельности. Если говорить о таком аспекте чтения профессиональной литературы, то часто всё сводится к изучению новейших технологий, изучении статей в ведущих журналах, научно-популярной литературе по профилю. Все это правильно, но очень часто отсутствуют такие книги, источники информации, где можно было бы почерпнуть не только профессиональную информацию, но и чисто профориентационную, психологическую, причем исходящую не из учебника или специальной книги, написанной каким-то рядовым профессором-методистом. Хочется узнавать мнение "из первых уст". Именно поэтому сейчас стало очень модным читать именно блоги ведущих специалистов отрасли, блоги ведущих компаний и т.п. Кроме рекламных трюков или самохвалебности можно прочитать там и нечто полезное, например, дельные рекомендации, элементы своего опыта учета проб и ошибок, вехи творческого пути, списки полезной литературы для каждого специалиста и т.п.
В области информационных технологий я ранее не встречал книг, в которой можно было бы почерпнуть такую информацию из первых уст. Да, можно сказать, компьютерщикам повезло - кому как не им проще всего быть на короткой ноге в сети с коллегами-специалистами. Компьютерщики имеют несколько замечательных сайтов, где публикуются новости, новинки ПО, новые фишки, аналитика и т.п., таких как habrahabr, slashdot, stackoverflow, reddit, codeproject. С ними можно иметь "всё под контролем". Но собрать или "загнать" туда ведущих профи не удастся никому, а, порой, хочется узнать мнение не только коллег, которые чуть лучше-чуть хуже тебя, но и тех самых "мэтров эпохи".
Питер Сейбел как раз и взял интервью у таких мэтров и задавал им вполне аналогичные вопросы, так что молодые и уже опытные программисты смогут прочитать о буднях этих "профи из профи", взять на вооружение их рекомендации, подсмотреть их методы работы, коммуникации, формирования креативных идей, мысли о прошлом и будущем программирования как подотрасли ИТ. В итоге получилась целая книга-интервью, довольно занимательная.
Собеседники Питера Сейбела: - тот самый-самый... Дональд Кнут, академик-программист №1, автор томиков "Искусство программирования" - одного из 12 самых важных естественнонаучных исследований двадцатого века; - Кен Томпсон, создатель операционной системы UNIX; - Берни Козелл, гений кода, участник первой реализации сети ARPANET - основы будущего Интернета; - Брэд Фицпатрик, создатель Живого Журнала (Live Journal); - Джошуа Блох, главный Java-архитектор в Google; - Брендан Айк, создатель языка JavaScript, технический директор Mozilla Corporation; - Саймон Пейтон-Джонс, ведущий исследователь лаборатории Microsoft Research, реализатор Haskell; - Л. Питер Дойч, почетный член АСМ, реализатор языка Лисп, создатель языка Ghostscript; - Джо Армстронг, создатель языка программирования Erlang - Джейми Завински, один из первых разработчиков Netscape Navigator, основатель mozilla.org; - Питер Норвиг, промышленный исследователь сначала NASA, затем Google - Дэн Ингаллс, реализатор Smalltalk; - Фрэн Аллен, промышленный исследователь, женщина, программист с 45-летним стажем работы в IBM; - Дуглас Крокфорд, старший архитектор JavaScript; - Гай Стил, программист-полиглот; - Кен Томпсон, создатель шахматного компьютера Belle, внедренец UTF-8.
Каждый в интервью рассказывает о своем пути в сферу программирования, о своих первых успехах, неудачах, о текущих проектах, о ремесле программиста, о будущем программирования, о том, как предпочитает работать каждый, о работе в команде, рефакторинге, чтении чужого кода, проектах, переделках и доработках, рекомендует свои настольные книги по программированию. Интервью построены интересно, в диалогах, дискуссиях. Можно почерпнуть многое как молодым людям, решившим связать себя с ИТ-сферой, так и уже состоявшимся специалистам, желающим сравнить свою методу с подходами профи. И самый главный тут тезис - нет какого-то общего подхода к программированию, нет идеального построения проекта, нет идеального языка программирования, нет четкого пути к творчеству и вынашивания новой идеи. Есть только профессиональная увлеченность, целеустремленность, приносящие любому профессионалу удовольствие в работе.
Для меня эта книга в любом случае оказалась полезной.
Хорошая книга, для медленного чтения, по главе в день. Автор своё дело знает и почти везде где надо интервьюируемых дожимает, но некоторые места все же так и хочется откомментировать :)
Джейми Завински
...мы всегда выпускали версии под все платформы одновременно. Это решение они тоже считали глупым: "У 90% пользователей версии под Windows, так что мы сосредоточим усилия на работе версии под Windows, а позже портируем ее под остальные платформы". Так поступали многие компании, потерпевшие крах. ... Если вы действительно хотите выпускать кроссплатформенное решение, то разрабатывать всё нужно одновременно. А портирование приводит к паршивому результату на второй платформе. ... Была и еще одна книга, которую все считали величайшим трудом своего времени: "Design Patterns". По-моему, отстой. Там учили программировать методом "вырезания и вставки".
Copy-paste идиом программирования . Есть такое подозрение, что "Design Patterns" ему Рабинович по телефону напел :))
Брендан Айк
Объектно-ориентированное програмиирование, шаблоны проектирования - это не для меня. Я так и не купил книгу Эриха Гаммы. ... У меня страшная аллергия на всякого рода эзотерические решения, шаблоны проектирования, доступные немногим. Питер Норвиг, работая в Harlequin, сказал о том, что шаблоны проектирования - всего лишь дефекты в вашем языке. Возьмите язык получше!
Вот здесь хотелось бы по конкретнее. Есть, например, протокол, реализованный как State-машина на C++, берем более лучший язык и? состояния-то и переходы между ними ни куда не делись... Или более лучший - это со встроенной State-машиной? Непонятно...
Джошуа Блох
- Есть ли книги, которые должен прочесть каждый программист? - Разумеется, "Design Patterns", хотя я отношусь к ней не совсем однозначно. Она дает общий для всех словарь. И в ней масса хороших идей. С другой стороны, мешанина стилей и языков.
Мешанины языков не заметил, а вот написана отвратительно, факт. Сейчас лучше брать сразу "Паттерны проектирования" Фрименов и Со
Джо Армстронг
Некоторые говорят: "Хотите знать, что делает программа? Читайте код". Думаю, это непрофессиональный подход. Код показывает мне, что программа делает, а не то, что она должна по идее делать. Код - это решение задачи. Если нет спецификации или какой-либо документации, приходится догадываться о задаче по решению. Догадка может быть неверной. Я хочу иметь объяснение - в чем состоит задача.
Вот это - Я хочу иметь объяснение - в чем состоит задача - отлить в граните и сбрасывать на каждый флейм про то нужны или нет комментарии.
Саймон Пейтон-Джонс
Самый угнетающий момент в жизни программиста - когда сталкиваешься с чужим кодом или, еще хуже, со своим и не находишь сил его переделать. Это угнетает.
Со своим - это да :(
Гай Стил
Если язык не умирает, он растет. Он всегда испытывает давление - нужны изменения, люди хотят изменить свой инструмент, чтобы он лучше решал их сегодняшние задачи, а не те, которые были у них лет пять назад.
Как и любая программа - пока жива, просят что-то поменять, как только замолчали - значит померла, никто больше не использует.
Берни Козелл
Впервые попробовав Java - еще совсем молодой тогда язык, - я сказал себе: "А, еще один язык, призванный помочь посредственным программистам встать на путь истинный, ограничивая их". Но, возможно, сейчас это и правильно. ... Наверное, Си - идеальный язык для по настоящему хороших системных программистов, но увы, его много используют и программисты похуже, а не стоило бы. ... После этого на планерках они спорили со мной: "Почему вы жалуетесь, что я прописал глобальные переменные здесь, что я делаю то-то и то-то, что вам не нравится моя структура подпрограмм? Программа же работает?" Их удивлению не было предела, когда я отвечал: "Конечно, программа работает. Вас взяли сюда именно потому, что вы умеете писать работающие программы. Написание программ - чисто ремесленный навык, и у вас он есть. А теперь вам нужно научиться программировать."
Как я до сих пор никому не дал в лоб за вот это Программа же работает?, просто поражаюсь :) своему ангельскому терпению
Дональд Кнут
Я узнал очень много нового, пока работал над этим проектом. В частности узнал, как много ресурсов вашего мозга съедает разработка ПО. Это оказалось намного более сложным заданием, чем я ожидал. Я не мог одновременно преподавать на полную ставку и полноценно заниматься разработкой ПО. Но я мог преподавать на полную ставку и полноценно заниматься написанием книг; ПО же требовало невероятного внимания к мельчайшим деталям. Мой мозг был забит только программным обеспечением, так что я не мог думать ни о чем другом.
Про съедение мозга дедушка Кнут заметил архиверно :(
Я не любитель читать интервью, даже с интересными мне людьми. Если уж читать о человеке, то пусть это будет продуманная и выверенная биография.
Тем не менее, этот сборник меня порадовал: мои более известные коллеги делятся секретами успеха, рассказывают о методологиях работы в различных компаниях, обсуждают свои пристрастия в работе - от выбора инструментов работы до правил коллективной разработки.
Блоги большинства людей я периодически читаю, про их карьеру знаю лучше, чем про карьеру своего непосредственного начальника, тем не менее, почитать структурированную информацию, полученную до этого из разрозненных источников, полезно и интересно. Хорошо, что собрано столько людей с разными мнениями на работу в команде, на код, спецлитературу, рефакторинг - единого стиля нет, идеальной методики тоже нет: неопытные ит-специалисты часто пытаются найти "то самое" правильное решение, "самый верный" стиль, "самое лучшее" по, "самый-самый" яп для постоянного использования в дальнейшем. ИТ-сфера развивается не по дням, а по часам: то, что сегодня в тренде, завтра - прошлый век, поэтому постоянное развитие, чтение новейшей специализированной литературы, использование новых инструментов для работы - это все про программистов, и чтобы быть в кассете, надо выдерживать такой ритм.
Arvustused, 7 arvustust7