Читаем Программист-фанатик полностью

Карьеру программиста я начал из-за видеоигр. Интерактивные приключения с эффектом присутствия очаровали меня еще во времена Commodore 64 с его видеолентами. Я стеснялся своего пристрастия, но теперь понимаю, что нечего было стыдиться. Компьютерные игры превращали невыразительные картинки, которые я видел на экране (полагаю, это был интерфейс операционной системы), в среду, где мне было комфортно и интересно.

Моя любимая игра на все времена — Doom от id Software. Я был в восторге от одиночного прохождения, дуэлей с реальными игроками и «боев насмерть». Компьютеры соединялись по модему или через последовательный порт, и игроки сражались друг с другом на небольших, быстро меняющихся площадках. Я достиг больших успехов в «боях насмерть». Я часто шучу, что, может быть, это и сейчас единственное, в чем я достиг максимального успеха. Игра в этом режиме удивительно сложна. Как с технической, так и с психологической точки зрения она напоминает безумную смесь шахмат с фехтованием на повышенной скорости.

Для повышения своих навыков полезно наблюдать за работой мастеров. Во времена моего активного увлечения Doom был один такой мастер, выступавший под ироническим псевдонимом Noskill (Неумеха). По факту он был главным чемпионом в Doom. Игроки из Северной Америки платили за междугородные телефонные соединения, чтобы попытать счастья в бою против него. Эти матчи записывали при помощи встроенной в Doom программы. И я посмотрел их все.

Очень скоро я понял его секрет. Разумеется, он был очень сильным игроком, но ключом к его успеху была способность никогда не паниковать. Специфика Doom такова, что матч может закончиться буквально за несколько секунд. Все происходит очень быстро. Я помню мой первый «бой насмерть». Спаун, смерть, спаун, смерть, спаун, смерть. Когда у меня наконец получилось выжить больше, чем две секунды, оказалось, что я бесцельно бегу, не в силах понять, где нахожусь.

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

Герои никогда не паникуют.

Если посмотреть другие игры, и в частности на спортивные состязания, ты увидишь, что лучшие игроки тоже обладают этим качеством. Более того, оно свойственно даже восхищающим нас персонажам книг, фильмов и телепередач. Герои никогда не паникуют. Это люди, которые даже при падении на их город атомной бомбы или при крушении самолета смогут собрать всех в группу, помочь выжившим, перехитрить врага или по крайней мере не будут тратить время на бесполезные рыдания.

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

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

Оглядываясь на все эти неприятности, я должен признать: ни одна из них не оказала значительного влияния на мою карьеру. Хотя я воспринимал все эти ситуации через призму моей паники, депрессии и расстройства как катастрофические, ни одна из них не привела к реальной катастрофе.

Что мне дала паника? В чем было преимущество негативной реакции во всех этих случаях? Да ни в чем. На самом деле паника лишала меня возможности проявлять свои лучшие качества в моменты, когда это было действительно нужно.

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

Мы паникуем, потому что теряем перспективу. Когда что-то идет не так, сложно сосредоточить на проблеме все свое внимание. До определенной степени такая концентрация помогает в поиске решения. К сожалению, она заставляет проблему, вне зависимости от ее реального размера, казаться более важной, чем она есть на самом деле. И по мере того, как проблема раздувается, растет уровень стресса и наши мозги отключаются.

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

Все книги серии Библиотека программиста

Программист-фанатик
Программист-фанатик

В этой книге вы не найдете описания конкретных технологий, алгоритмов и языков программирования — ценность ее не в этом. Она представляет собой сборник практических советов и рекомендаций, касающихся ситуаций, с которыми порой сталкивается любой разработчик: отсутствие мотивации, выбор приоритетов, психология программирования, отношения с руководством и коллегами и многие другие. Подобные знания обычно приходят лишь в результате многолетнего опыта реальной работы. По большому счету перед вами — ярко и увлекательно написанное руководство, которое поможет быстро сделать карьеру в индустрии разработки ПО любому, кто поставил себе такую цель. Конечно, опытные программисты могут найти некоторые идеи автора достаточно очевидными, но и для таких найдутся темы, которые позволят пересмотреть устоявшиеся взгляды и выйти на новый уровень мастерства. Для тех же, кто только в самом начале своего пути как разработчика, чтение данной книги, несомненно, откроет широчайшие перспективы. Издательство выражает благодарность Шувалову А. В. и Курышеву А. И. за помощь в работе над книгой.

Чед Фаулер

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

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

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
Язык программирования C++. Пятое издание
Язык программирования C++. Пятое издание

Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!Р'С‹ держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под стандарт С++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. Р' соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать РёС… наилучшие СЃРїРѕСЃРѕР±С‹ применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.Стенли Р'. Липпман работал старшим консультантом в Jet Propulsion Laboratory, архитектором РіСЂСѓРїРїС‹ Visual С++ корпорации Microsoft, техническим сотрудником Bell Laboratories и главным инженером- программистом по анимации в кинокомпаниях Disney, DreamWorks, Pixar и PDI.Р–РѕР·и Лажойе, работающий ныне в кинокомпании Pixar, был членом канадской РіСЂСѓРїРїС‹ разработчиков компилятора C/C++ корпорации IBM, а также возглавлял рабочую группу базового языка С++ в составе международной организации по стандартизации ANSI/ISO.Барбара Э. Му имеет почти тридцатилетний опыт программирования. На протяжении пятнадцати лет она работала в компании AT&T, сотрудничая с Бьярне Страуструпом, автором языка С++, и несколько лет руководила РіСЂСѓРїРїРѕР№ разработчиков С++.• Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования• Р

Барбара Э. Му , Жози Лажойе , Стенли Б. Липпман

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

С++ – это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы. Ключевым понятием С++ является класс. Класс – это тип, определяемый пользователем. Классы обеспечивают сокрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. С++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline-подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В С++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем. С++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из С++ программ можно использовать C библиотеки, и с С++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C. Эта книга предназначена главным образом для того, чтобы помочь серьезным программистам изучить язык и применять его в нетривиальных проектах. В ней дано полное описание С++, много примеров и еще больше фрагментов программ.

Бьёрн Страуструп , Бьярн Страустрап , Мюррей Хилл

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