Факт 1. Под капотом самых критичных программ, которые вы используете на ежедневной основе (Mac OS X или Facebook) содержится ужасное количество хаков и костылей, которые с трудом уживаются друг с другом. Это как если бы вы разобрали боинг 747 и увидели, что топливопровод держится вешалкой для одежды, а шасси смотаны изолентой.
Код программ таков, что даже если сайт или программа прекрасно работают и отлично выглядят, то за кулисами всё, что заставляет его работать, состоит из ошибок, ляпов и костылей. Он работает едва-едва и иногда вообще непонятно, почему.
Факт 2. 25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.
Занимает это на деле больше или меньше процентов времени, но каждый раз нам действительно необходимо подумать – а что пользователь может тут сломать. Куда нажмёт, что введёт, и как можно понять то, что мы пытаемся сделать, неправильно. Если бы мы рассчитывали только на себя, у программ было бы слишком много проблем – ведь мы знаем, как программа работает, а пользователь не знает.
Факт 3. Программист – это не специалист по ремонту компьютеров
Программист работает с алгоритмами и принципами разработки, а не чинит компьютеры. Мы можем понимать, как компьютер работает и как исполняется код. Но это не значит, что мы умеем чинить железо. Мы не знаем, какая проблема в Chrome роняет его на вашем компьютере, или почему ваш компьютер перегревается. Программисты программируют компьютеры, а не чинят их.
Факт 4. Программирование – это размышление, а не печатание
По большей части мы программируем, когда спим, гуляем, смотрим в окно, или делаем что-то ещё, что позволяет нам расслабиться и думать. Расслабление – один из важных аспектов программирования. Нельзя просто сесть и написать тысячу строк кода и вставить их в программу. Нам необходимо посидеть, походить, подумать. Придумать концепцию, исправить её недостатки, решить, как она будет работать… Расслабление – единственный способ, которым мы можем пользоваться для исправления проблем.
Факт 5. Отсчёт начинается с нуля
Это важно. Подсчёт идёт с нуля – ваш 1 это мой 0, ваш 10 это мой 9. Всё из-за необходимости делать вещи эффективно, когда даже небольшая прибавка к эффективности может в масштабе увеличить производительность.
Факт 6. Программировать лучше всего в потоке – в таком состоянии сознания, когда вы сфокусированы на задаче и всё кажется простым. Это состояние знакомо также атлетам и музыкантам.
Программисты любят работать по ночам потому, что это позволяет нам входить поток, сфокусироваться на чём-то одном и не волноваться о том, что нас могут отвлечь. Все остальные просто спят. Это такое время дня, когда никого нет рядом, никто не звонит и не пытается с нами поговорить. Прекрасное время, чтобы думать и программировать.
Факт 7. Иногда полезно отложить проблему до утра
Иногда программистам действительно полезно, встретив сложную задачу, поспать «с ней». Множество раз я встречался с тем, что мне часами не удавалось решить что-то, но после всего лишь 20-минутного сна (или любого другого сна) по пробуждению решение приходило само.
Факт 8. «Родитель» может убить своих «детей», если их задача выполнена
Не та фраза, которую бы хотелось услышать от кого-либо. Но для программистов она звучит не так страшно. Программы часто имеют иерархическую структуру, где родительский процесс контролирует его дочерние процессы, запущенные на уровне ниже.
Когда родительскому процессу больше не нужен дочерний, он его убивает – когда программе больше ничего не надо делать, её выполнение заканчивают.
Факт 9. Вы не впечатляетесь тем, как много мы знаем о компьютерах. Мы не впечатляемся тем, как мало вы знаете о них.