Если вкратце, то я бы посоветовал читать много книг, не имеющих отношения к информатике.
Важно понимать, какое место занимает понятие «science» в «Computer Science», и что означает «engineering» в «Software Engineering».
Современное понятие «науки» можно сформулировать так: это попытка перевести явления в модели, которые можно более-менее легко объяснить и предсказать. На эту тему можно прочесть «Sciences of the Artificial» (одна из важных книг Герберта Саймона). На это можно смотреть с такой точки зрения: если люди (особенно разработчики) строят мосты, то учёные могут объяснять эти явления, создавая модели. Самое интересное в этом то, что наука почти постоянно будет находить новые, лучшие способы наведения мостов, так что дружеские отношения между учеными и разработчиками вполне могут улучшаться с каждым годом.
Примером подобного из сферы Computer Science является Джон Маккарти, размышляющий о компьютерах в конце 50-х годов, то есть о невероятно большом спектре того, что они могут сделать (может быть, ИИ?), и создание модели вычислений, которая является языком, и может служить в качестве собственного метаязыка (Lisp). Моя любимая книга на эту тему — «The Lisp 1.5 Manual» от MIT Press (автор Маккарти с соавторами). Первая часть этой книги по-прежнему остается классикой того, как нужно думать в целом и об информационных технологиях в частности.
(Позднее вышла книга «Smalltalk: the language and its implementation», авторы которой (Адель Голдберг и Дейв Робсон) вдохновлялись всем этим. Также содержит полное описание практического применение проекта, написанное на самом языке Smalltalk и т.д.).
Мне очень нравится книга «The Art of the Metaobject Protocol» под авторством Кикзалеса, Боброу и Риверы, вышедшая ещё позднее предыдущих. Она из тех книг, которые можно назвать «серьёзной информатикой». Первая часть особенно хороша.
Другая научная работа 1970 года, которую можно считать серьёзной Computer Science — «A Control Definition Language» Дейва Фишера (Университет Карнеги Меллон).
Может показаться, что моя любимая книга о компьютерных вычислениях (computing) далека от сферы ИТ, но она замечательная и её приятно читать: «Computation: Finite and Infinite Machines» Марвиа Минского (около 1967 г.). Просто прекрасная книга.
Если нужна помощь с «наукой» («science»), я обычно рекомендую множество книг: «Principia» Ньютона (основополагающая научная книга и учредительный документ), «The Molecular Biology of the Cell» Брюса Альбертса и др. Или, например, книга с записями Максвелла и т.д.
Вам нужно осознать, что «Computer Science» — это все еще стремление достигнуть, а не достигнутое.
«Разработка» («Engineering») означает «проектирование и конструирование вещей принципиальным экспертным способом». Требуемый уровень этого умения очень высок для всех областей: гражданской, механической, электротехнической, биологической и др. Разработка.
Следует тщательно изучать этот аспект, чтобы лучше понять, что именно означает заниматься «разработкой» («engineering»).
Если нужна помощь с «разработкой» («engineering»), попробуйте почитать о создании Эмпайр-стейт-билдинг, плотине Гувера, мосте «Золотые Ворота» и т.п. Мне нравится книга «Now It Can Be Told», написанная генерал-майором Лесли Гровс (почетное звание участника Манхэттенского проекта). Он инженер, и эта история абсолютно точно не о Лос-Аламосском проекте POV (которым он также руководил), а про Оук-Ридж, Хэнфорд и т.д., а также об изумительном привлечении более 600 000 человек и огромных денег для выполнения проектирования, необходимого для создания нужных материалов.
Кроме того, подумайте о том, в какой сфере нет части «разработки ПО» («software engineering») — опять же, вам нужно понять, что «разработка ПО» в любом «разрабатывающем» смысле в лучшем случае остается стремлением достичь, а не достижением.
Компьютеры также являются своего рода «медиа» и «посредниками», поэтому нужно понимать, что они делают для нас и какое на нас оказывают влияние. Почитайте Маршалла Маклюэна, Нила Постмана, Инниса, Хейвлока и т.д. Марк Миллер (комментарий ниже) только что напомнил мне, чтобы я порекомендовал книгу «Technics and Human Development,», том. 1 из серии «The Myth of the Machine» Льюиса Мамфорда — великого предшественника как идей медиа-среды, так и важного аспекта антропологии.
Мне сложно посоветовать хорошую книгу по антропологии (может быть, кто-то другой это сделает), но понимание людей как живых существ — это самый важный аспект образования и следует хорошенько его изучить. В одном из комментариев ниже Мэтт Габури порекомендовал «Human Universals» (я думаю, что он имеет в виду книгу Дональда Брауна). Эта книга, безусловно, должна быть прочитана и понята — она не с той же полки, что и книги о какой-то определённой области, такие как «Molecular Biology of the Cell».
Мне нравятся книги Эдварда Тафти из серии «Envisioning Information»: прочитайте их все.
Книги Бертрана Рассела по-прежнему очень полезны хотя бы для того, чтобы глубже задуматься над «тем и сем» («A History of Western Philosophy» все еще потрясает).
Множество точек зрения — это единственный способ бороться с человеческим желанием верить и создавать религии, поэтому моей любимой книгой по истории является «Destiny Disrupted» Тамима Ансари. Он вырос в Афганистане, переехал в США в возрасте 16 лет и способен написать чёткую, просвещающую историю мира со времен Мухаммеда с точки зрения этого мира и без лишних призывов верить.
*POV (propagation of variance) — распространение противоречий в показаниях (прим.пер.)
Перевод выполнен при поддержке компании EDISON Software, которая профессионально пишет софт для IoT в городских масштабах, а так же разрабатывает ПО для новых томографов .
Автор: MagisterLudi