2015-02-26

Мысли об энетерпрайзе

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

Я с самого начала карьеры работал в стартапах, где явно виден вклад каждого и нет лишних людей. Каждый раз когда сталкиваюсь с большими компаниями, меня разрывает противоречие: с одной стороны whatever man has done, man can do - это конечно круто, но стартап не запустит ракету в космос (ок, если конечно CEO не Элон Маск) или не построит супертанкер в силу объемов работу с другой стороны с такой чудовищной неэффективностью работы удивительно, как компания вообще двигается куда-то (достигнув тысячи человек, учреждение становится административно самодостаточным и может само генерировать себе работу). Все помнят историю, как банк снимал табличку.

Общие мысли

Джобс любил цитировать заключительную фразу из энциклопедии "Stay hungry, stay foolish". Непередаваемый драйв работы в компании на этапе "Давай-Давай" и унылое болото зрелых из которых хочется сбежать туда, где адреналин и сражение. Этот переход просто ощущается физически. Да вы стали самыми большими и сильными, но остановились в развитии, рано или поздно придет технология, которая сделает вас ненужными.

2 pizza team может двигаться быстро и не тратить время на бесконечных совещаниях, очень мало людей, способных доставить письмо Гарсиа. Команда из таких людей способна свернуть горы.

2015-02-12

Базовые императивы

Любое существо во Вселенной отличит добро от зла.
Спорить с идейными оппонентами совершенно неблагодарное занятие. Однажды в адекватной и цивилизованной дискуссии мы прошли всю цепочку расуждений: мне понятно это утверждение, но откуда оно берется - пока не уперлись в фундаментальное противоречие. Оно не откуда не бралось, его невозможно вывести, просто у меня это так, а у оппонента иначе. Это был базовый императив "делай так", аксиома в геометрии из которой выводятся и доказываются все остальные теоремы.

2015-02-09

Про языки и DSL

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

2015-02-05

Последний кольценосец

В недавнем интервью Джон Р. Р. Мартин задался вопросом о вселенной Властелина Колец: Философия «Властелина колец» очень средневековая: если король — хороший человек, то его земли будут процветать. В подлинной же истории все не так просто. Толкиен может сказать, что Арагорн воцарился на троне, правил сотню лет, был мудрым и благородным. Но он не задается рядом вопросов. Какой была налоговая политика Арагорна? Содержал ли он регулярную армию? Какие меры он предпринимал во время наводнения и неурожая? А как он поступил со всеми этими орками? К концу войны Саурон сгинул, но орки-то — нет, они попрятались в горах. Прибег ли Арагорн к планомерному геноциду и истребил их? И даже малышей-орков в их крошечных орочьих колыбельках? В настоящей жизни настоящим королям приходится решать насущные жизненные проблемы. Просто быть хорошим парнем недостаточно. Ты должен принимать непростые, очень непростые решения. Порой то, что казалось правильным выбором, оказывается полной противоположностью и хватает тебя за задницу.

Так вот, Кирилл Еськов, давным давно ответил на вопрос, перевернув с ног на голову историю Средиземья, и написал книгу о послевоенной борьбе за власть Эльфийского государства, Объединенного королевства и остатков мордорской цивилизации. Книга знатно припекла толкиенистам. Эльфы у него ретрограды, желающие заморозить статус-кво в мире Арды, Мордор - молодая цивилизация, выбравшая путь технологии и совершив несколько ошибок (засоление почв из-за неправильной ирригации) была вынуждена вступить в войну чтобы обезопасить продовольственные поставки по Итилиенскому тракту. Назгулы - тайное братство, стоящее на страже технологии и противостоящее Белому Совету. Умбар - морская,торговая цивилизация. Дунаданы - местные северные князьки, а Денетор и сыновья - мудрые правители. С точки зрения Еськова, трилогия Властелина Колец - эпос, написанный победителями. Первая часть, введение - переосмысление трилогии, дальше идет крутейший шпионский роман. Подробнее можно посмотреть в вики.

Итог, мир Арды чересчур черно-белый, Еськов мощно его раскрасил. Всегда полезно взглянуть с противоположной стороны.

2015-01-29

Редактирование истории в git

Этот пост что-то вроде Advanced mercurial но для git. Рано или поздно все сталкиваются с двумя проблемами: у меня куда-то пропали коммиты и я запушил не туда. Во втором случае есть простой случай, когда никто не успел спулить и когда неправильный кормит у всей команды. Все опасаются применять команды с ключами --hard и --force, но это совсем не страшно, если понимаешь, что все обратимо и ты понимаешь чего хочешь достичь этими командами.

Концептуальное отличие от mercurial: в git коммит обязательно должен принадлежать бранчу (без бранча коммит становится detached head), а бранч может быть только один. В mercurial ветки могут быть анонимными, более того может быть несколько веток с одним именем. Чтобы коммит стал виден, должен существовать путь до него из какого-либо бранча. То самое отличие кроны и корневой системы (почему-то именно такая аналогия приходит в голову). В mercurial чтобы коммит был доступен должен существовать путь до него от 0-го коммита, а имена и прочее это мелочи. Соответственно и можно четко проследить начало и конец любой ветви, в отличии от git, где коммиты эфемерные дельты болтающиеся по узлам DAG. Хорошо это или плохо - зависит от, но в централизованной разработке мне больше импонирует mercurial с долгоживущими и вполне материальными ветвями, хотя это не значит что там нельзя редактировать историю - дельта алгебра везде одна. Git же заточен именно под распределенность и множество центральных узлов - помимо ветки foo-branch, обязательно есть origin/foo-branch или another/foo-branch с четким разделением откуда приехал коммит - в mercurial же именование веток сквозное по всем репозиториям, если стянули изменения то они уже ваши и отделить где чьё не получится.

Дальше пойдет описание трех сценариев в демке с github. Демка пошагово демонстрирует работу Алисы и Боба с общим репозиторием. Запускаем, читаем комментарии, жмем батон. Демка должна работать на unix-like системах где есть bash. Кстати, ознакомьтесь со статьей tonsky - прольет свет на внутренности git.