Случилось ли у вас так, что при чтении книги вы не могли понять, как живой человек, вообще, может написать что-то настолько гениальное? Для меня такой книгой был «Властелин Колец». Когда я читал её, то понимал, что даже за сотню жизней не смогу написать книгу настолько богатую деталями, настолько глубокую и прекрасную. С тех пор я узнал немного о создании «Властелина», и эти знания позволили мне пересмотреть первое впечатление. Но самое удивительное, как эти знания пересеклись с тем, что я много лет назад узнал о написании компьютерных программ.
Меня всегда поражало, как разработка программы может начаться с одного файла, и, после многих лет работы, превратиться в настолько огромную систему, что один человек не будет в состоянии даже приблизиться к её пониманию. Если попробовать повторить конечный результат «с чистого листа», то у вас, скорее всего, это не получится. Оно так устроено. Софт зависит от того пути, по которому проходила разработка.
Много раз я лично участвовал в этой эволюции одноклеточного софта до «Кембрийского взрыва». Видел это своими глазами. Но что я не видел — что это насколько похоже на написание книг!
Создание хорошего софта – это эволюция через итерации с целью выживания. И точно так же создаются хорошие истории. Их объединяет то, что они создаются нашим разумом.
Разуму нужен объект для сосредоточения. Каждое промежуточное состояние проекта является таким объектом. Соединение таких состояний вдохновляет наш разум создать что-нибудь действительно выдающееся. Что-нибудь, что будет нести в себе едва заметный след того, что было в самом начале.
Давайте я расскажу, как так получилось, что «Властелин Колец» является хорошим примером такого процесса…
Изначально «Властелин Колец» задумывался как продолжение «Хоббита». Издатель хотел заработать еще больше денег на популярности книги с помощью сиквела. А «Сильмариллион» таким сиквелом не являлся. Так что Профессор сел за работу с целью написать продолжение. И это было ужасно.
Первая версия названия была не «Властелин колец», а «Возвращение тени». Это все еще была книга для детей. Фродо звали Бинго. Странник был хоббитом по имени Троттер. Бильбо собирался жениться. А кольцо все еще было просто кольцом. У истории не было явно выраженного мотива и вектора развития. «Что еще могут делать хоббиты?» спрашивал себя Толкиен. Идея хоббитов себя исчерпала. Тот «Властелин колец», которого мы все любим, был еще очень и очень далеко.
Черновик за черновиком Толкиен пробовал и искал направление для развития истории. Все завертелось, когда он создал сцену с Черным Всадником. Вначале Черный Всадник был Белым Всадником. Это был Гендальф, прибывший поговорить с Бинго. Но вдруг случилось озарение. Вибрирующая группа нейронов сговорилась, и цвет лошади поменялся с белого на черный, а Гендальф трансформировался в незнакомца, закутанного в огромный черный плащ и капюшон. Новый каркас истории (английское framework) начал создавать сам себя.
Откуда мы все это знаем? Благодаря удачному стечению обстоятельств и Кристоферу Толкиену у нас есть история изменений, которые его отец последовательно применял к «Властелину Колец». Есть великолепное видео с Др. Кори Олсен, где он за руку ведет нас по тому, что, по сути, является Git логом «Властелина Колец». Это магия от настоящего знатока творчества Толкиена и талантливого аналитика.
Мы видим, как одна за другой в тексте формулируются идеи книги. Это был постоянный процесс рефакторинга и разработки новых фичей. Какие-то из этих идей сохранились с самой первой версии и до финального релиза. Многие были убраны. Многие изменились. Большинство диалогов было сохранено, но передано другим персонажам, которые говорили их совсем в других обстоятельствах.
Читая этот лог, я испытывал то же чувство, которое испытываю при создании программ. Только разница была в том, что в результате мы получили не работающую программу, а одну из самых сильных историй всех времен.
Я вынес для себя подтверждение старой идеи: любая успешная большая система начинается с успешной маленькой системы.
Это относится и к писателям, и к программистам. Ваша история или программа не обязана быть потрясающей с самого начала. Эволюция и развитие сделает её такой.
В 2017 году этот тот урок, который мне дал «Властелин Колец».
Комментарии (57)
Mithgol
12.01.2017 11:51+13Слово «Git» в этом историческом экскурсе зазря используется вместо более общего понятия «VCS», да и то в лучшем случае метафора.
eyeofhell
12.01.2017 11:53-8Я уже не уверен, что большинство читателей Хабра узнает этот акроним. Git — точно узнают. Гарантия. А вот Version Control System, которую у меня опытные разработчики часто с CVS путают… Не, лучше так.
ookami_kb
12.01.2017 12:56+11Хм… а они точно опытные?
По-моему, это звучит как-то на уровне: "Давайте называть системный блок процессором, а то я не уверен, что большинство пользователей знает, что такое системный блок".
eyeofhell
12.01.2017 12:59-5Последние несколько лет многие уже начали забывать что Subversion, Mercurial, Git и Perforce — это все VCS. Так что я предпочитаю не рисковать, если не нужно заострять внимание более чем на одном представителе этого семейства.
oWeRQ
12.01.2017 14:42+1В таких случаях мне вспоминается, как во время разговора с отцом, мама спросила что-то из серии: "Как связаны мак, майкрософт и линукс?".
Git — название конкретной системы, называть все системы контроля версий Git'ом так же неправильно, как под PC подразумевать Windows.
eyeofhell
12.01.2017 15:02А я и не называл все. Мы выбирали интересный заголовок статьи, чтобы взгляд зацепился. Git звучало интереснее, чем VCS. Сама статья-то интересная?
oWeRQ
12.01.2017 15:51+3Если честно, я ожидал увидеть хоть какие-то намеки на использование фитч контроля версий(ветки, теги, диффы, мерджи итд), возможно в книгах это есть, но в статье ни слова, фактически тут не контроль, а просто исторический архив, так можно сказать, что дизайнеры и художники тоже используют систему контроля версий когда сохраняют различные этапы/варианты рисунка.
sentyaev
12.01.2017 20:28+1Git — название конкретной системы
Только что поймал себя на мысли, что я не использовал термин «система контроля версий» несколько лет (либо забыл когда использовал). Git же!
А еще есть «ксерить», «гуглить» и т.д.
так же неправильно, как под PC подразумевать Windows
А разве что-то изменилось? Есть Mac, есть PC, т.е macOS и Windows (конечно для людей не из IT).oWeRQ
13.01.2017 15:46Исторически PC(что дословно значит персональный компьютер) называли персональные компьютеры на x86(поправите, если ошибаюсь), потом Windows захватил все десктопы и PC стали называть компьютер с x86 и системой Windows, но тут внезапно Mac переехал на x86 и начал распространяться Linux, появились SteamMachine. Даже приставки(PS4 и XBox One) по железу стали как никогда близки к десктопам.
А теперь вопрос, когда пишут, что игрушку выпустят для персональных компьютеров, где она будет работать? Mac — персональный компьютер и даже если на него поставить Linux, он все равно останется персональным, хотя может стать и приставкой, если подключить к телевизору и геймпаду.
ls1
12.01.2017 12:06+12А нейросеть, нейросеть он не использовал?
m0Ray
12.01.2017 13:32+5Тенденция: git пытаются запихать везде в надежде, что он хоть там принесёт пользу. Ну, с этой статьёй получилось. Я её открыл. Сомнительная польза, правда.
Dreyk
12.01.2017 14:46вот вам пример, как хороший продукт (перевод) в плохой обертке (название) — это все равно плохо, как анекдот про килограм конфет и килограм говна.
Вот скажите, если бы назвали статью "Что общего между написанием Властелина колец и программированием?" или "Приемы программирования, использованные при написании Властелина колец" сюда бы зашли другие люди?
А так посмотрите, какая негативная реакция от людей, которым сам перевод понравился, но так зацепил (в плохом смысле) заголовок, что они получили вцелом негативное впечатление
eyeofhell
12.01.2017 15:03«Э» — эксперименты. Негативный результат — тоже результат. В следующий раз так и сделаю, «Что общего между написанием Властелина колец и программированием» — это один-в-один один из вариантов заголовка, которрый я рассматривал. Надо же попробовать и посмотреть?
Dreyk
12.01.2017 15:09+1кто ж в продакшне тестирует-то? :D
eyeofhell
12.01.2017 15:11Мне не дали доступа к тестовому Хабру :) Перевод — это как раз то, на чем можно потестировать, его можно скрафтить за 2-3 часа. Это не статья про телефонию, которую 10+ часов писать, обложившись справочниками и тестами.
azShoo
13.01.2017 13:22Знаете, мне кажется «Приемы программирования, использованные при написании Властелина колец» — тоже не лучший вариант.
Понабежало бы столько же народу с криками «кликбэйт, где паттерны, микросервисы и ООП?!»
Просто потому, что «приемы программирования» — довольно обширное понятие и много чего можно под ним подразумевать.
В статье же идёт речь, насколько я могу судить, про одну простую вещь — итеративность и, если натягивать сову на глобус, работу с «ветками».
Хотя, это конечно меньший кликбэйт чем слово «Git» в заголовке.
dmrt
13.01.2017 02:07Я как раз в последнее время мучаюсь вопросом: помогает ли чтение серьёзной художественной литературы, от разных авторов по-немногу, по одной, две книги хотя бы, написанию более качественных программ и вообще желанию творить, программировать?
Daniro_San
13.01.2017 09:09Увлечение чтением вообще очень развивает человека, в разных сферах. Думаю и к программированию это тоже относится.
lair
13.01.2017 12:29Кому-то помогает, кому-то нет.
А зачем вы вообще мучаетесь этим вопросом?
dmrt
13.01.2017 12:34Потому что в последнее время вместо того чтобы читать технические тексты и кодить я читаю художественную литературу и интуитивно подозреваю, что это мне поможет даже больше.
Но может быть я ошибаюсь?
Я вообще хотел бы прочитать еще книжек 20 хотябы, за несколько месяцев.
И хотел бы вообще научититься читать быстрее, одна книга за 3-4 дня, тогда я смогу больше узнать и так же смогу быстрее читать технические тексты, откидывать не нужное, а то понятно, что техническую я читаю еще медленнее сейчас. Возможно потому что не умею фильтровать.lair
13.01.2017 12:39Но может быть я ошибаюсь?
Вы ошибаетесь. Это, знаете ли, рассуждение формата "последнее время вместо работы я отдыхаю, и подозреваю, что мне это поможет даже больше". Если вы все время работаете, то иногда отдыхать — поможет. Но если вы хотите всю работу заменить на отдых — работать вы перестанете (логично, черт возьми).
В данном случае аналогия практически точна: (профильная) техническая литература — это (для вас) работа, художественная — это отдых (для вас). Если вы программист, конечно. В этих терминах и думайте.
Я вообще хотел бы прочитать еще книжек 20 хотябы, за несколько месяцев.
20 книжек. За несколько месяцев. Зачем?
И хотел бы вообще научититься читать быстрее, одна книга за 3-4 дня
Худлит? Зачем?
dmrt
13.01.2017 12:47Думал прочитать 20 основных авторов, изучить их стили, точки зрения на мир, способ изложения, в общем изучить 20 отдельных миров, обдумать это, затем приступить к программированию более интенсивно снова.
Потом возможно захочется снова почитать, вернуться к литературе, но не хочется возиться с книжкой два месяца, хочется освоить за 4 дня книгу и пробежаться по следующей серии книг.
Чтобы не быть однобоким, чтобы не сойти с ума от программирования и не ряхнуться в конце концов, чтобы не отпало желания программировать вообще, через пару лет. Книга — это ведь как общения с умным, опытным человеком.lair
13.01.2017 13:07+1Думал прочитать 20 основных авторов, изучить их стили, точки зрения на мир, способ изложения, в общем изучить 20 отдельных миров, обдумать это, затем приступить к программированию более интенсивно снова.
Я уж не знаю, кого вы считаете "двадцатью основными авторами", но изучить "стиль автора, точку зрения на мир, способ изложения" — это задача не на 3-4 дня, и даже не на неделю. Люди годами этим занимаются.
но не хочется возиться с книжкой два месяца, хочется освоить за 4 дня книгу и пробежаться по следующей серии книг.
Нельзя "освоить" (хорошую художественную) книгу за четыре дня. А "пробежаться по серии книг" — это еще смешнее.
Чтобы не быть однобоким, чтобы не сойти с ума от программирования и не ряхнуться в конце концов, чтобы не отпало желания программировать вообще, через пару лет. Книга — это ведь как общения с умным, опытным человеком.
Вы же не пытаетесь общаться с умным, опытным человеком в режиме "за час познакомился и все"? Так зачем с книгами так поступать?
dmrt
13.01.2017 13:40Я не правильно выразился, скорее просто скажем так я выделил для себя 20 авторов, которых мне нужно прочитать, на мой взгляд.
Просто в юности когда все читали разные книги, я их не читал и теперь хочется все это наверстать как можно быстрее. Причем я понимаю, что эффект будет скажем лишь через год или два. И на этот базис я через год смогу опереться.
Я вот например пытался даже переводить книгу и понял, что у меня даже самым корявейшем переводом занимает тучу времени и вообще врят ли до конца доведу дело.
В общем хочется с помощью книг приучить себя больше времени заниматься, быстрее и эффективнее все делать.lair
13.01.2017 13:42Просто в юности когда все читали разные книги, я их не читал и теперь хочется все это наверстать как можно быстрее.
Будьте морально готовы к тому, что это "как можно быстрее" — это годы. Не "эффект будет через годы", а "на чтение уйдут годы".
Если вы, конечно, хотите прочитать, а не "пробежаться".
dmrt
16.01.2017 11:19Если интересно, вот кстати примерный список, примерно двадцати книжек, которые желаю прочесть:
Камю — «Чума», «Посторонний».
Стивенсон — «Странная история доктора Джекила и мистера Хайда»
Гашек — «Похождение бравого солдата Швейка»
Кафка — «Замок», «Прцесс», «Превращение»
Гюго — «Отверженные»
Оруэлл — «1984»
Джон Кинг — «Человеческий панк»
Селин — «Путешествие на край ночи»
Ф. Искандер — «Сандро из Чегема», «Детство Чика»
Аксенов — «Ожог»
Сорокин — «День опричника»
Матвеева — «Перевал Дятлова»
Акунин — «Алмазная колесница»
Ну и много еще конечно есть в очереди. Как это все успеть прочитать — даже не представляю.
azShoo
13.01.2017 13:26На самом деле довольно спорное утверждение. Худлит это, безусловно, не профильное, но всё же развитие.
И тут сильно зависит от того, что человек ожидает получить после прочтения книги.
Мне, например, чтение художественной литературы знатно помогает при последующей генерации сценариев для своих проектов. А техническая литература помогает не меньше, но в рамках уже конкретной реализации этих сценариев.
А иногда и просто читаешь условную фантастику и собираешь себе какую-нибудь софтину, навеянную каким-нибудь нейроинтерфейсным ассистентом в книге.
И тут нужен баланс, т.к. иметь имею, но не знать как её воплотить не сильно полезнее, чем понимать реализацию, но не обладать идеей её применения.lair
13.01.2017 13:33На самом деле довольно спорное утверждение. Худлит это, безусловно, не профильное, но всё же развитие.
Ну так много чего "не профильное, но развитие". Худлит. Non-fiction. Театр. Кино. Музыка. Путешествия. Спорт. Оно от этого работой не становится (ну, для тех, для кого это не профильное).
Если хотите, можете думать не в терминах "работа-отдых", а в терминах "работа-общее развитие-отдых". Аргументация в моем посте от этого не изменится.
azShoo
13.01.2017 14:13Так я и не утверждаю, что «развитие» == «работа».
Я говорю о том, что «не рабочее развитие» вполне себе может помогать работе, пытаясь оспорить ваше утверждение что «если не работа — > то отдых, соответственно работе оно не может помогать».
В зависимости от ситуации «не рабочее развитие» может давать больше профита, чем развитие профессиональное. В этом тезис.
vlanko
13.01.2017 10:30А ведь Джордан тоже начинается с черного всадника…
Так что главное в работе программиста — довести работу до конца.
mrguardian
13.01.2017 11:52При чем тут великий писатель и какая-то вшивая телефония? Кликбейт на хабре, докатились.
lair
Искусство перевода, блин.
"How is Writing Lord of the Rings Like Writing Software?" -> "Толкиен использовал Git. Подробности под катом"
Нет, Толкиен не использовал Git. Он вообще не использовал систему контроля версий. Он просто писал вариант за вариантом — как это делают многие авторы.
mwambanatanga
Зато если бы в заголовке не было слова git, я бы даже не открыл эту статью.
Idot
И это оправдание?!
Спаммеры так любят делать!
ganqqwerty
политкорректное название для спамеров — email-marketing specialist'ы
ilyuxa
Классический кликбейт.
eyeofhell
Статья интересная? :)
hardex
Нет.
eyeofhell
Значит у нас не получилось. Но это не значит, что не будем пытаться :) У нас большой утренний RSS для чтения…
poxu
Это точно. Переводчики в последнее время пишут к статьям эпиграфы, которых нет в оригинале, добавляют туда картинки для привлечения внимания, которых нет в оригинале, вставляют туда слова, которых нет в оригинале. Это очень сильно раздражает.
Я пробовал делать замечания — либо игнорируют либо говорят, что замечания только в личку и вообще не лезь, ведь в главном то переводчик прав. Неприятно это.
eyeofhell
Кроме заголовка и вступления все остальное — качественный перевод максимально близко к тексту. Мы старались.
poxu
Я вычитал перевод и, наверное лучше всего можно передать моё впечатление о нём с помощью вот этот отрывка.
Вот оригинал:
А вот ваш перевод:
В предложении про идею, слова lesson, dramatic и deep элегантно проигнорированы. reconfirmation означает не просто подтверждение, а подтверждение в очередной раз. Смысл сохранён, конечно, но изрядная часть эмоциональной нагрузки устранена.
Но тут я ещё могу понять — для того, чтобы хорошо перевести — надо искать хорошие эквиваленты для dramatic и deep и всего такого. Это напряжно и вообще.
Но вот дальше идёт на английском:
И переводится ну явно
А у вас переведено
Все системы зачем-то заменено на любая система. Чем это мотивировано? На русском звучит одинаково, усилий, чтобы перевести, не нужно совсем. Но почему-то написано не так, как написал автор, а так, как захотел переводчик.
Такие дела.
eyeofhell
Наташу вы запугали, поэтому напишу я, как один из авторов перевода. Я читаю очень много технических блогпостов на английском, RSS каждое утро стабильно выдает 200+ айтемов. И что я заметил: более высокий уровень эмоциональности. Все эти «deep and dramatic reconfirmation» — они по факту отражают меньший уровень эмоциональной напряженности. С полной уверенностью могу сказать, исходя из общего эмоционального градуса повествования, если бы мы перевели «еще одно глубоко драматическое подтверждение» — это было бы совсем не то, о чем писал автор :)
Так что я за адаптированные переводы с учетом культуры, языка, вот этого всего. По факту все что мы переводим это «пересказ своими словами». Прочитал, понял идею, пересказал, используя свой опыт и видение айти. Потом отдал коллегам на почитать-поправить. И на Хабр.
Это плохо? Идея не передана? Эмоциональный окрас поменялся? Я зря назвал Толкиена «Профессором»?
poxu
Вот и я о том же. Тут просто так не переведёшь, тут думать нужно. В качестве шпильки воткну, что глубоко драматическое переводится как deeply dramatic. Не deep and dramatic. И я в общем-то не против даже адаптированного варианта. Я бы одобрил даже такой перевод, как "окончательно и бесповоротно".
А я за перевод, который не уничтожает культурный контекст и багаж автора.
Напишите собственную статью, не отмечайте её, как перевод и сошлитесь на англоязычную статью, как на источник знаний.
Так и скажите, что идея вам понятна и вы пересказываете, используя свой опыт и видение айти. По-моему беспроигрышный вариант.
А если вы позицинируете текст, как перевод, качественный и максимально близкий к тексту — такие как я будут отмечать, что переводить All systems как любая система это может и качественно, но определённо не максимально близко к тексту.
Ну и коротко по вашим вопросам.
Я считаю, что можно гораздо лучше.
Идея передана. Если бы она была не передана это был бы вообще не перевод.
Да, изменился.
Вот это интересный вопрос. Нужно посмотреть, называют ли его "Профессором" в англоязыных текстах и если да, то зря. Если нет — ещё можно обсудить.
P. S.
Тут я перечитал написанное и мне показалось, что по вашему мнению качественный перевод это перевод, который передаёт смысл оригинала.
На мой взгляд, большинство айтишников понимают английский язык на том уровне, чтобы уловить смысл написанного. Мне вот от хорошего перевода хочется, чтобы он передал нюансы, которые мне не доступны.