воскресенье, 31 июля 2016 г.

Роберт Мартин. Идеальный программист. Как стать профессионалом разработки ПО


Однажды увидел в книжном магазине эту книгу. Полистал. Меня заинтересовали в первую очередь байки из жизни автора. Решил почитать и заказал книгу в веб-магазине.

После прочтения оказался несколько разочарованным. Дело в том, что баек, заинтересовавших меня, в этой книге не так уж и много. Конечно, в книге есть и много другого интересного материала, но книга закончилась быстрее, чем я удовлетворился полученной информацией. Наверное дело в том, что у Роберта Мартина свои собственные представления об идеальном программисте. Я бы сказал, что идеальным программистом он считает профессионального программиста. И вот что он вкладывает в это понятие. В его понимании профессиональный программист помимо 40 рабочих часов в неделю должен тратить ещё 20 часов в неделю на самообучение. Профессиональный программист не обещает сделать то, для чего ему придётся пренебречь процедурами привычного для него цикла разработки. По его мнению, досрочно работу можно выполнить либо урезав необходимый функционал, либо работая сверхурочно. Сверхурочная работа может длиться не более двух недель непрерывно и не должна проводиться в ущерб семье. Если нет возможности отбросить часть функционала и нет возможности работать сверхурочно, то профессионал должен ответить твёрдым отказом. Ни в коем случае нельзя пытаться выполнить работу досрочно в ущерб качеству кода. Роберт Мартин является ярым сторонником подхода к разработке через тестирование и, в частности, заявляет о том, что ни в коем случае не будет отказываться от этого подхода в угоду срочности. Разработка через тестирование увеличивает эффективность работы и поэтому отказ от этого подхода будет равносилен признанию, что этот подход не приносит никакой пользы, а только затягивает разработку.

Кроме достаточно известного подхода к разработке через тестирование, в книге встречаются и несколько необычных мыслей. Одна из таких мыслей заключается в том, что в процессе работы нужно избегать состояния потока. В состоянии потока работается легко и можно проработать много часов подряд. Кажется, что это самое продуктивное состояние, но автор считает, что в этом состоянии притупляется острота ума и можно легко увлечься реализацией плохо продуманного решения. Поэтому состояния потока нужно избегать. Лучшим способом избежать состояния потока Роберт Мартин считает парное программирование. Кроме того, парное программирование позволяет находить выходы из тупиков, учиться у коллег их образу мыслей и их приёмам работы, а также знакомиться с чужим кодом.

Самый необычный совет, который я встретил в этой книге - это выполнение упражнений по программированию. Вы спросите, а что же тут необычного? Необычно тут то, что автор предлагает выполнять время от времени одни и те же упражнения. Смысл упражнения в этом случае заключается не в поиске решения, которое ранее уже было найдено, а в том, что при выполнении упражнения тренируются навыки использования инструментов и языка программирования. Короткие упражнения, выполняемые в одиночку, называются "ката". В паре можно выполнять упражнения "вадза". В этом случае один напарник пишет тест, а другой пишет код, который пройдёт тест. Потом напарники меняются местами. В группах больше двух человек можно выполнять упражнения "рандори". В этом случае первый человек пишет тест и передаёт упражнение следующему участнику, чтобы тот написал код для этого теста и новый тест для следующего участника. Названия "ката", "вадза" и "рандори" взяты из дзюдо.

Автор пользуется и рекомендует другим использовать для разработки следующие инструменты:
  • IntelliJ - интерактивная среда разработки,
  • git - система контроля версий,
  • Pivotal Tracker - система учёта задач,
  • XUnit - инструмент модульного тестирования,
  • FitNesse - инструмент интеграционного и компонентного тестирования, автором которого является сам Роберт Мартин,
  • Jenkins - система непрерывной интеграции.

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

воскресенье, 24 июля 2016 г.

Нурали Латыпов, Анатолий Вассерман. Острая стратегическая недостаточность


В книге Анатолия Вассермана "Чем социализм лучше капитализма" встретил ссылки на эту книгу. Поскольку меня интересует стратегическое планирование экономики страны и геополитика, решил приобрести и ознакомиться.

Для начала хочется сказать про обложку книги и иллюстрации в ней. Обложка книги кажется смешной и нелепой только с первого взгляда. На самом деле, если присмотреться, то можно понять смысл. На кремлёвской стене написано "Острая стратегическая недостаточность" - это диагноз, поставленный авторами всей России и людям, сидящим за кремлёвской стеной. Авторы голой грудью встают на защиту страны, предлагая в этой книге различные направления, который могли бы лечь в основу долговременной стратегии страны. Внутри самой книги в начале каждой главы и по тексту встречаются забавные рисунки в журнально-газетном стиле. В книге имеется отдельный блок цветных таких же забавных рисунков, без относительности к тексту книги. Авторами всех рисунков является Нурали Латыпов.

Теперь о самой книге. Книга является структурированным сборником статей. Как сборник статей она обладает недостатком, свойственным такой форме подачи - в ней довольно много самоповторов. Самый частый повтор - это рассуждения о минимальном количестве населения, необходимого для создания достаточно самостоятельной передовой экономики. Чтобы окупить разработку и производство сложных товаров, существенную долю в цене которых составляют затраты на разработку и проектирование, нужно иметь много покупателей. Тогда доля расходов на разработку будет достаточно низкой по отношению к доле стоимости производства большой партии товаров. В Европе это количество населения оценивается в 400 миллионов человек, а на постсоветском пространстве - в 200 миллионов человек. Разница обусловливается тем, что на постсоветском пространстве зарплаты инженеров не такие высокие, как на западе. Приготовьтесь к этой мысли - она будет повторяться не один раз. Целая череда повторов встречается в описании проекта международных атомных электростанций для снабжения европейских и азиатских государств, которые предлагается разместить на территории Казахстана, а электричество от них передавать по сверхвысоковольным линиям электропередачи постоянного тока.

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

Кратко перечислю то, что мне запомнилось из предложений авторов по стратегическому развитию страны.

Во-первых, это создание единой экономической зоны между Россией, Казахстаном, Белоруссией и Украиной. Поскольку с интеграцией Украины в этот проект ещё на момент написания книги в 2012 году уже были проблемы, в качестве возможной ограниченной альтернативы на её место рассматривалась Турция.

Во-вторых, одно из стратегических направлений - это развитие атомной энергетики. Атомная энергетика считается авторами самой экологически чистой, безопасной и экономически выгодной. Если излагать упрощённо, то экологически чистая она потому, что радиоактивных выбросов АЭС порождают гораздо меньше, чем угольные ТЭЦ. Безопасная, потому что за всю историю АЭС от них пострадало значительно меньше людей, чем от тепловой энергетики. Приводятся расчёты, что в тепловой электроэнергетике при различных обстоятельствах ежегодно погибает в среднем два человека. Экономически выгодна она потому, что, например, солнечные панели за весь период эксплуатации не вырабатывают столько энергии, сколько потрачено на их изготовление. Особое внимание нужно уделить созданию замкнутого ядерного цикла, чтобы по максимуму использовать запасы урана-238 и тория, в то же время сведя ядерные отходы к минимуму.

В дополнение к развитию атомной электроэнергетики авторы предлагают проект создания в пустынях Казахстана сотен атомных энергоблоков для выработки энергии для разных стран. Мотивируется это предложение тем, что в Казахстане уже проводились ядерные испытания и место это было выбрано для испытаний не просто так - оно находится вдали от населённых пунктов и сельскохозяйственных угодий, поэтому возможные аварии не смогут принести большой ущерб. Далее, предлагается для большей безопасности даже заглубить реакторы под землю на глубину до 4 километров. На такой глубине даже ядерный взрыв реактора не приведёт к сколь-нибудь заметному ущербу на поверхности. В Казахстане был реализован проект экибастузской ГРЭС, работающей на местном высокозольном угле. Уникальность этой ГРЭС была в том, что для неё разрабатывалась высоковольтная линия электропередач на постоянном токе. Напряжение постоянного тока должно было составлять 1500 кВ, что должно было значительно снизить потери по сравнению с высоковольными линиями электропередач переменного тока с напряжением 500 кВ, используемых и сейчас. Для передачи электроэнергии от атомных электростанций в различные страны предлагается использовать именно такие ЛЭП. Предлагается разрабатывать этот проект как международный, чтобы в нём использовались лучшие технические наработки, привлекались инвестиции со всего мира, а дальнейшая эксплуатация тоже была бы совместной.

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

Здесь стоит ещё упомянуть вопрос Южных Курил. В книге предлагается сделать курильские острова зоной общего с Японией экономического хозяйствования, потребовав от Японии взамен юридического признания курильских островов территорией России. Авторы на примере острова Шпицберген поясняют, что реально имея юридическое право устанавливать на территории Курил законы экономической деятельности, можно будет постепенно фактически вытеснить с островов и хозяйственную деятельность Японии, получив в конечном счёте полный суверенитет над островами.

В-четвёртых, предлагается заняться разработкой месторождения редкоземельных металлов Томтор в Якутии. Редкоземельные металлы, так же как уран, рассеяны в земной коре и в чистом виде не встречаются. Но в разных местах они встречаются в разных концентрациях. Естественно, что чем выше содержание добываемых элементов в породах, тем более рентабельной будет добыча. В качестве иллюстрации важности редкоземельных металлов в книге приводится несколько примеров, иногда не связанных с этими металлами напрямую. Например, легирование алюминиевых сплавов 0,2-0,3% скандия повышает прочность сплава до характеристик, сходных со сталью. Напыление иттрия на детали двигателей внутреннего сгорания позволяет увеличить их износостойкость в 400-500 раз. Я лично могу привести ещё один пример - эрбий используется в оптических усилителях сигнала. В общем, дело в том, что редкоземельные металлы обладают самыми разными свойствами и находят применение в разных областях техники, при чём по массе нужно их не так много. Ежегодная потребность мирового производства в некоторых из них составляет несколько десятков тонн, а цена их может многократно превышать цену той же массы золота. В настоящее время крупнейшим поставщиком редкоземельных металлов является Китай. Но на месторождении в Томторе концентрация редкоземельных металлов значительно выше, так что у России есть все шансы стать первым мировым поставщиком этих металлов.

В-пятых, авторы сетуют на то, что ЕГЭ и болонская система портят систему образования, доставшуюся в наследство от Советского Союза и бывшую когда-то лучшей в мире. Они предлагают отменить ЕГЭ и перестать ориентироваться на преподавание конкретных знаний и навыков, вернувшись к преподаванию целостной картины мира и сосредоточив внимание на преподавании принципов. По аналогии с существовавшими в СССР школами олимпийского резерва предлагается создать школы нобелевского резерва, создав систему образования, целенаправленно воспитывающую будущих нобелевских лауреатов.

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

воскресенье, 17 июля 2016 г.

Яков Кедми. Базнадёжные войны


Однажды на Youtube я посмотрел несколько передач с участием Якова Кедми. Он показался мне экспертом с трезвой оценкой международной политики. В дальнейшем я не раз смотрел передачи с его участием и только уверялся в собственной оценке его компетентности. В одной из передач с участием Евгения Сатановского я услышал об этой книге. По словам Сатановского, в книге имеется много нелицеприятных оценок Израильского истеблишмента. Я заинтересовался и захотел её прочитать.

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

Книга представляет собой мемуары. Чуть больше половины книги следует в хронологическом порядке. Яков Кедми - советский еврей Яша Казаков, решивший эмигрировать в Израиль в 1967 году. По советским законам того времени эмиграция разрешалась только тем, кто получал приглашение от прямых родственников. У Якова таких родственников в Израиле не было, однако это его не остановило. Он подал аппеляцию в вышестоящую инстанцию, намереваясь использовать все законные возможности для выезда. Понимая, что при излишней настойчивости его могут арестовать и спрятать подальше, параллельно он занялся поиском возможности заявить о своём желании на Западе. Это увлекательная история, в процессе чтения которой мне было трудно оторваться от книги и я читал её запоем.

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

В 1973 году случилась Война судного дня, когда египетские и сирийские войска выдвинулись в сторону Израиля. В неразберихе, несмотря на запрет службы в танковых войсках, он всё-же попал в танковый батальон с Эхудом Бараком. Воевал на южном фронте, дойдя до города Суэц в Египте.

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

Оставшаяся часть книги состоит скорее из описаний различных любопытных случаев, немного - оценке политических фигур России и в значительно большей степени - оценке политических фигур Израиля. Если судить по тому, что было сказано о российских политиках, то скорее всего и оценка израильских политиков является столь же объективной и не предвзятой.

Очень запомнилось сравнение профессионализма Бориса Ельцина и Беньямина Нетаньяху. Я очень отрицательно отношусь к Ельцину, но читая это сравнение я неожиданно для себя впервые испытал определённую гордость за Ельцина. В отличие от Нетаньяху, Ельцин готовился к дипломатическим визитам по подготовленным для него материалам и мог вести беседу, даже не заглядывая папку с материалами, потому как всегда знакомился с ними заранее. Для Нетаньяху было в порядке вещей вообще не заглядывать в подготовленные материалы, для него было гораздо важнее общение с журналистами, нежели собственно дипломатический визит.

Один из интересных запомнившихся мне случаев - в 1998 году к Якову обратился сотрудник ФСБ с просьбой посодействовать серьёзной работе по борьбе с международным терроризмом. У него имелись материалы о деятельности Бен Ладена и его связи с чеченскими террористами, но западные спецслужбы не воспринимали информацию от ФСБ всерьёз и не хотели вести серьёзную работу по противодействию деятельности террористов. То есть, объективно, у США была возможность предотвратить теракты 11 сентября 2001 года, если бы они заблаговременно начали заниматься Бен Ладеном. Впрочем, если отвлечься от книги, я встречал информацию, что Бен Ладен был карманным террористом, финансируемым США через Саудовскую Аравию. Так что вполне естественно, что США игнорировали Бен Ладена, считая его "полезным", "своим" террористом, действующим на стороне США.

У "Натива" были постоянные конфликты с Министерством иностранных дел и Еврейским агентством - общественной организацией. Конфликты с первым в основном появлялись на почве определения внешней политики, а со вторым - из-за финансовых вопросов. Руководители Еврейского агентства интересовались в первую очередь получением дополнительного финансирования на реализацию различных проектов за границей.

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

воскресенье, 3 июля 2016 г.

Анатолий Вассерман. Чем социализм лучше капитализма

Во время библионочи приобрёл в Читай-городе такую книженцию:

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

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

В итоге, после прочтения у меня остались двойственные впечатления. С одной стороны, я не узнал ничего принципиально нового. С другой стороны, убеждённости в публично отстаиваемой автором позиции у меня поубавилось.

Во-первых, дело в том, что только к 2020 году, с учётом экстраполяции роста вычислительной мощи по закону Мура, все компьютеры на Земле достигнут мощности, необходимой для расчёта глобального плана. Однако, закон Мура уже приказал долго жить и экстраполяция до 2020 года справедлива с натяжкой.

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

В-третьих, судя по книге, план эффективнее рыночной экономики только тогда, когда он посчитан предельно точно. Некоторая продукция может быть изготовлена только поштучно, а расчётный план может диктовать производство дробного количества. В таких случаях округление промежуточных результатов может, по словам автора, оказывать значительное влияние на точность всего плана. Чтобы найти оптимальный план в таких случаях, нужно рассчитывать варианты плана, в одном из которых выполнено округление одного результата в меньшую сторону, а в другом - в большую. И так, для поиска оптимального плана нужно перебрать все варианты округлений. Так вот, малейшая неточность может привести к тому, что план может оказаться менее эффективным, чем рыночное саморегулирование. И только если план составлен точно, он будет оптимальнее рыночного саморегулирования. В условиях рыночного саморегулирования каждый вид продукции производится в избытке на 30-50%, а в условиях не точно рассчитанного плана эта ошибка может привести к снижению эффективности ещё в несколько раз. Кстати, эти невостребованные 30-50% закладываются в цену продукции так, чтобы выручка от скупленной части продукции покрывала убытки от производства невостребованной.

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

С другой стороны, всё-таки социализм неизбежен. Рыночная конкуренция заставляет каждое предприятие планировать своё производство, избавляться от малейших издержек. Понятно, что каждое предприятие введёт сначала строгий учёт всего и вся, а потом будет использовать эту информацию для дальнейшего снижения издержек. Работа неизбежно будет автоматизироваться, количество работников уменьшаться, а производимые изделия будут становиться более технологичными и дешёвыми в производстве. Дальше системы планирования разных предприятий начнут состыковываться друг с другом, так что появление заказа на производство автомобиля на одном предприятии скорректирует план добычи руды на другом предприятии. А уж если для добычи руды понадобится дополнительное оборудование, то и это будет учтено в планах предприятия, производящего это оборудование. В итоге, как круги на воде, по системам планирования будут расходиться всё новые и новые уточняющие условия и в конце концов в каждой из систем сформируется свой план. Вполне возможно, что эти предприятия будут интегрироваться между собой, так что в конечном итоге образуется несколько огромных плановых систем. И уже эти огромные системы волевым усилием можно будет объединить в единую систему, план для которой и будет потом рассчитываться централизованно и станет, наконец, действительно оптимальным.

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

В книге обратил внимание на упоминания писателей-фантастов:
  • Генрих Альтов, он же Генрих Саулович Альтшуллер - упомянут в контексте его знаменитого Алгоритма Решения Изобретательских Задач,
  • Александр Розов. Цикл "Конфедерация Меганезия" - упомянут в контексте экономики, построенной на основе алюминиевого стандарта (в противовес золотому стандарту),
  • Андрей Ходов. «Шарашка» попаданцев. Опередить Гитлера! - упомянут в контексте формировании национальной элиты,
  • Сергей Лукьяненко - является соавтором предложения по созданию "института организационных проблем переходного периода".