Самообразование начинается с чтения полезных книг.
Одной из таковых, с моей точки зрения, является книга Питера Сейбела «Кодеры за работой: Размышления о ремесле программиста» (Peter Seibel, Coders at work: Reflections on the Craft of Programming, 2009) — это 15 интервью с наиболее известными профессионалами в нашей профессии — Дональдом Кнутом, Кентом Томпсоном, Брэдом Фицпатриком и другими.
Книга не содержит детальных рецептов о том, как стать правильным программистом. Это книга — персонифицированный взгляд в историю computer science и программирования.
Почему мне показалось это важным? Вот цитата из Дональда Кнута:
Я на каждом шагу сталкиваюсь с тем, что люди не осознают всё великолепие нашей истории. Многим программистам кажется странной мысль о том, что в 1970-х люди тоже что-то знали, понимали и умели.(стр.523)
И, главное — интервьюируемые так четко и ясно излагают свое виденье процесса разработки (равно как и других аспектов программирования), что я решил сделать небольшую подборку наиболее интересных, с моей точки зрения, цитат.
О красоте и читаемости кода
Красота кода — это когда что-то выражено очень верно — лаконично и по сути, — вроде хорошо сформулированного афоризма или мгновенной карикатуры, выполненной одним росчерком пера и очень похожей на оригинал. (стр.37)
По большему счету, понятия «красоты» и «простоты сопровождения» эквивалентны. Или, по крайней мере, тесно связаны. (стр.53)
Код сам по себе — почти чепуха, его можно переписывать. Даже если ничего не меняется, он все равно по какой-то причине портится. (стр.401)
Компьютеру нужен двоичный код, а текстовый файл нужен мне. (стр.472)
Программа — это прежде всего литературное произведение. Программа должна быть читаемой. (стр.161)
О сложности программ, качестве кода и багах
Есть два способа проектировать систему. Один — сделать её настолько простой, что в ней совершенно очевидно не будет недостатков, второй — сделать её настолько сложной, что в ней не будет очевидных недостатков. (стр.184)
Чем сложнее программа, тем важнее, чтобы её делали действительно хорошие программисты. (стр.365)
Закон отладки Джо — «все ошибки будут не дальше трех операторов в ту или другую сторону от места последнего изменения программы». (стр.209)
У нас в Netscape была такая шутка: «Мы стопроцентно преданы качеству. Мы собираемся выпустить продукт самого высокого, насколько получится, качества к 31 марта». (стр.44)
Чтобы получать удовольствие от обнаружения ошибок, нужно просто забыть, что программу написал ты сам. (стр.516)
О ключевых навыках программистов
Чем хороший программист отличается от плохого: хороший программист легко переходит от одного уровня абстракции к другому, он способен не смешивать эти уровни при внесении изменений и точно определять уровень, на котором изменения нужно внести. (стр.39)
Мыслить как учёный; за один раз изменять только что-то одно. Терпение и стремление понять коренную сущность вещей. Это особенно ценно при отладке или проектировании чего-то, что не желает работать. (стр.51)
Умение писать. Если у вас плохо с английским (имеется в виду, с родным языком — прим.), вы никогда не станете хорошим программистом. (стр.214)
По-настоящему хороший программист много программирует. Исключений я не встречал. Если я не программирую два-три дня, то ощущаю зуд. (стр.205)
Об обучении
Очень важно не бояться собственного незнания. Если не понимаешь, как что-то работает, спроси у того, кто понимает. Многие боятся. А что тут такого? Ведь чего-то не знаешь не потому, что тупой, а просто пока не знаешь. (стр.48)
Читайте чужой код. (стр.75) Только не стоит читать тех программистов, которые пишут так же, как и вы. (стр.525)
Программируйте больше. Теоретические занятия дают знания, но программирование — это ремесло, и единственным путем к мастерству является практика. (стр.459)
Всегда старайтесь делать что-то чуть более трудное, чем раньше, то, что вам не по зубам. (стр.75)
О смежных науках
Программирование ближе к литературе, чем к математике. Словно пишешь рассказ, пытаясь передать его смысл очень тупому парню с ограниченным словарем, то есть компьютеру. У тебя есть некоторая идея, которую нужно объяснить, и ограниченные средства для объяснения. Какие подберешь слова, как будет выглядеть введение, заключение? Что-то в этом роде. (стр.52)
Не каждому программисту нужна математика, но она упорядочивает понятия, с которыми программисты сталкиваются ежедневно. (стр.300)
Автор: vtimashkov