Читаем Кодеры за работой полностью

Сейбел: Кем вы себя считаете: инженером, ученым, художником или ремесленником?

Ингаллс: Всем сразу. Думаю, мое образование в области физики пошло мне на пользу. Я часто сталкиваюсь с проблемами, которые очень напоминают физические, — с проблемами приложения сил к телу. Это то, что вы используете по отношению к системе: смотрите, как на нее можно воздействовать. И очень похоже на физику то, что я испытываю по отношению к пространственным объектам: то, как они работают, что есть общего в разнородных вещах и как из них можно сделать лучшую архитектуру.

Помню одну из своих первых лекций о Smalltalk. Я сказал тогда: «То, чем занимается наша группа, напоминает научный метод: вы проводите наблюдения, выдвигаете теорию для объяснения результатов и ставите эксперимент для проверки». Именно так мы и работали со всеми поколениями Smalltalk. У нас была теория относительно того, как все это работает. Мы строили систему, она как-то работала. Мы использовали ее некоторое время, а потом выясняли: «Так, лучше бы мы сделали вот это, это и то по-другому», — и создавали новую систему. Все двигалось по спирали, как и должен развиваться научный поиск и прогресс.

Я чувствую себя художником, когда работаю, потому что в моей голове есть идея, которую я хочу воплотить. Полагаю, скульптор испытывает то же самое, вдыхая жизнь в кусок материала.

В данном контексте понятия инженер и ремесленник — практически идентичны. Инженер трудится на ниве технологий. Иногда я себя так и ощущаю, но это совсем особые случаи — когда я делаю что-то низкоуровневое. Помнится, я работал над самыми глубокими частями BitBlt или движком байт-кода Smalltalk — и это была действительно ремесленная работа. У меня была возможность несколько раз сделать то же самое, пока все не стало работать оптимально, а это ремесло.

Сейбел: Разница между инженером и ремесленником, на мой взгляд, заключается в том, что инженер — это тот, кто говорит: «Здесь как в мостостроении. Мосты не падают. В мостостроении есть повторяемый инженерный процесс». Ремесленник же говорит: «Нет, здесь больше от работы по дереву. Каждое дерево уникально, есть правила его обработки, но ни один метод не гарантирует результата».

Ингаллс: Тогда в этом отношении я скорее не инженер. Думаю, методы моей работы над различными системами различны. Я знаю, что есть люди, которые делают серьезные программные системы для корпораций. Это не мой путь, мне это неинтересно. Из четырех предложенных вами вариантов инженер, вероятно, на последнем месте, затем следует ремесленник, а лидирует забавное сочетание художника и ученого.

Сейбел: Вы сказали, что на время покинули индустрию, а потом вернулись. Устали от компьютеров или просто были изменения в жизни?

Ингаллс: В жизни были другие приоритеты. Кроме того, отдых от компьютеров пошел на пользу, потому что, вернувшись, я заметил, что почти ничего не изменилось, кроме того, что все теперь стало в сотни раз быстрее.

Сейбел:

Есть ли у вас рекомендации для тех, кто хотел бы стать программистом?

Ингаллс: Думаю, прежде всего надо пройти хороший курс компьютерных наук. Я бы организовал его так: сначала нужно выучить несколько разных языков, у которых разные сильные стороны. Так, Smalltalk имеет множество преимуществ, но не является универсальным ответом. Есть логическое программирование. Есть функциональное программирование. Smalltalk можно использовать в функциональном стиле, эта сторона в нем отлично развита. Но помните, что я рассказывал про Lotus 1-2-3 и перевод с английского на «поросячью латынь»? Думаю, полезно было бы взять несколько разных вычислительных сред и одну задачу и попытаться решить ее в каждой из них. Так проявится сила данного языка — или же это побудит вас от него отказаться.

Сейбел: Как вы считаете, сильно ли изменилось программирование, а следовательно, и те люди, которые могут в нем преуспеть? Можно ли быть отличным программистом, работая на высоком уровне, но без знания ассемблера, или Си, или даже тех алгоритмов, которые можно почерпнуть из чтения Кнута, поскольку сейчас мы используем высокоуровневые языки, у которых эти алгоритмы есть в библиотеках?

Ингаллс: У разных людей разные уровни, на которых они могут работать, чувствуя себя профессионалами. Думаю, в наши дни программист может с полной уверенностью пользоваться готовыми библиотеками, не программируя их сам. Это значит, что он просто работает на другом уровне. Честное слово, я вовсе не представляю, что кто-то, желая работать с графикой, станет писать BitBlt. He обязательно делать элемент И-НЕ: можно просто использовать язык ассемблера. Думаю, работать можно на любом уровне. Если вы чувствуете потребность, то можете забраться глубже, а если вы полны энтузиазма, вы захотите забраться глубже.

Сейбел: Как вы считаете, нужно ли современным программистам довольно высокого уровня, работающим в различных средах, учить ассемблер и микрокод? Или набор навыков, помогающий стать успешным программистом, изменился?

Перейти на страницу:

Все книги серии Профессионально

Кодеры за работой
Кодеры за работой

Программисты — люди не очень публичные, многие работают поодиночке или в небольших группах. Причем самая важная и интересная часть их работы никому не видна, потому что происходит у них в голове. Питер Сейбел, писатель-программист, снимает покров таинственности с этой профессии. Он взял интервью у 15 величайших профессионалов: Кена Томпсона, создателя UNIX, Верни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Саймона Пейтон-Джонса, Питера Норвига, Джошуа Блоха, Брэда Фицпатрика, создателя Живого Журнала, и других. Все они «подсели» на программирование еще в школе. Тогда, на заре зарождения отрасли, лишь в немногих учебных заведениях читались курсы по компьютерным наукам. Поэтому будущим гуру приходилось покорять профессиональные вершины самостоятельно, но всех их отличает творческое горение и полная самоотдача любимому делу.Вы узнаете, что они думают о будущем программирования и как сами научились программировать, как, по их мнению, нужно проектировать ПО, как выбор языка программирования влияет на продуктивность и можно ли облегчить выявление труднонаходимых ошибок.

Питер Сейбел

Биографии и Мемуары / Программирование / Прочая компьютерная литература / Документальное / Книги по IT
Человеческий фактор
Человеческий фактор

Немногие книги о компьютерах оказали такое заметное влияние на управление разработкой программного обеспечения, как «Человеческий фактор». Уникальное озарение этой книги, долгие годы сохранявшей свое положение в списке бестселлеров: самые сложные проблемы разработки ПО носят не технологический, а социальный характер. Эти человеческие проблемы решать не просто, однако, решив их, вы увеличите шансы на успех до верхнего предела.В третьем издании появилось шесть новых глав и внесены многочисленные правки в основной текст, так что теперь книга лучше соответствует современным средам разработки и современным проблемам. В частности, обсуждаются патологии лидерства, которые раньше за патологии не считались, эволюционирующая культура собраний, а еще растущее понимание того, что некоторые наши инструменты служат скорее якорями, а не двигателями. Каждый, кому необходимо управлять проектом по разработке ПО или целой организацией такого рода, найдет на страницах этой книги множество ценных советов.

Тимоти Листер , Том ДеМарко

Деловая литература
97 этюдов для программистов. Опыт ведущих экспертов
97 этюдов для программистов. Опыт ведущих экспертов

Приобщитесь к мудрости экспертов и запомните то, что должен знать каждый программист, с каким бы языком и на какой платформе он ни работал. 97 кратких и очень полезных советов повысят ваш профессионализм посредством новых подходов к старым проблемам, лучших практик и разумных подсказок, предназначенных для оттачивания мастерства.Авторы этой книги, очень опытные и признанные в отрасли специалисты, передадут вам практические знания и принципы, полезные для проектов любого типа. Статьи касаются разных тем: от рекомендаций по написанию кода до культуры, от выбора алгоритмов до гибкого программирования, от приемов реализации до профессионализма, от стиля до сущности. Новички смогут познакомиться с фундаментальными положениями, а для профессионалов сборник сможет стать отправной точкой для обсуждений.

Пит Гудлиф

Программирование, программы, базы данных

Похожие книги