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

Наиболее очевидная параллель между этими двумя действиями заключается в том, что в обоих вы что-то пишете. Код — это не проза, написанная на естественном языке, но у него есть набор фиксированных правил (грамматика), определенные формы, которые большинство программистов сочтут естественными, а другие формы, хотя формально правильные, будут казаться трудными для понимания.

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

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

Различия.

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

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

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