Книга Уолтера Айзексона «Инноваторы»

innovatoryЯ обожаю читать про историю науки и развитие различных технологий, особенно, когда дело касается информационных технологий. Качественных книг на эту тему еще недавно было не так много, но в последнее время ситуация стала выправляться. В основном за счет переводных книг, но все же. На сегодняшний день любимой книгой по истории информационных технологий у меня была книга Стивена Леви «Хакеры. Герои компьютерной революции», которая очень подробно описывает развитие компьютеров, начиная с конца 50-ых годов прошлого века и до 1980-ых годов. И вот недавно вышла книга, которую в своем личном рейтинге я готов поставить рядом с «Хакерами» — это книга Уолтер Айзексона «Инноваторы» или ее полное название «Инноваторы. Как несколько гениев, хакеров и гиков совершили цифровую революцию» (да, любят историки от IT слово «революция»).

Уолтер Айзексон в России известен в первую очередь как автор жизнеописания Стива Джобса, хотя кроме этого он написал биографии Эйнштейна, Франклина и Киссенджера. Его книгу про Стива Джобса я еще не читал, поскольку ее выход совпал с моментом, когда мне попалась книга Янга и Саймона «iКона», и в тот момент читать вторую книгу подряд на эту же тему не хотелось.

В отличие от книги «Хакеры», которая охватывает лишь несколько десятилетий, Айзексон решил написать историю развития информационных технологий, начиная со времен Бэббиджа и его разностной машины, Ады Лавлейс, которая считается первой программисткой, и до появления компании Google с ее оригинальным алгоритмом поиска, который придумали Ларри Пейдж и Сергей Брин.

Читать далее ‘Книга Уолтера Айзексона «Инноваторы»’ »

Книга Сэма Ньюмена «Создание микросервисов»

book_sozdanie_mikroservisovВ последнее время я решил прокачать свои знания в той области, которую называют DevOps (от слов development и operations) — области, объединяющей в себе разработку, тестирование и развертывание программного обеспечения. Недавно я уже писал обзор очень интересной книги на эту тему — Непрерывное развертывание ПО. В продолжение этой темы мне попалась довольно свежая книга Сэма Ньюмена «Создание микросервисов», вышедшая в этом году.

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

Читать далее ‘Книга Сэма Ньюмена «Создание микросервисов»’ »

Пост про книги «Как пасти котов» и «Путь камикадзе»

Некоторое время назад попались мне две книжки про организацию работы программистов — «Как пасти котов» Дж. Ханка Рейнвотера и «Путь камикадзе» Эдварда Йордона. Эти книги написаны в первую очередь для менеджеров (в хорошем смысле этого слова) или тех, кто руководит группой разработчиков, и хотя мне это пока не особо актуально, я считаю, что такие книги полезно читать, чтобы задуматься об организации личного процесса разработки.

Начнем с книги Дж. Ханка Рейнвотера «Как пасти котов», которая написана в первую очередь для бывших программистов, которых внезапно назначили руководить другими программистами. Название этой книги родилось из сравнения программеров, которые часто являются интровертами-индивидуалистами, с котами, которые гуляют сами по себе, однако руководителю нужно организовать работу этих индивидуумов таким образом, чтобы они сообща все вместе двигались к определенной цели — созданию качественного программного обеспечения.

kak_pasti_kotov

Автор этой книги рассматривает работу новоиспеченного начальника (или, если угодно, менеджера) с разных сторон, начиная с вопроса «как с этим жить», как привыкнуть к роли лидера и руководить теми людьми, с которыми вы еще вчера за кружкой пива обсуждали код и вели холивары, и заканчивая тем, как научиться понимать вышестоящее руководство.

Читать далее ‘Пост про книги «Как пасти котов» и «Путь камикадзе»’ »

Книга Дж. Хамбла и Д. Фарли «Непрерывное развертывание ПО»

neprerivnoe_razvertivanie_po

За последнее время накопилось много прочитанных книг, о которых хочется написать обзоры. Все-таки полтора часа, проводимые в метро ежедневно, способствуют чтению, может быть не всех книг, но достаточного их количества.

В этом посте речь пойдет о книге, которую я прочитал последней, и которая заставила по-новому взглянуть на разработку проектов, которыми я занимаюсь. Это книга Джеза Хамбла и Дэвида Фарли «Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ». Сама книга уже довольно старая, ее русский перевод вышел в 2011 году и, похоже, что оригинал был издан в том же году, но почему-то до этого я про нее ничего не слышал и наткнулся на нее случайно.

Основная идея книги заключается в том, что при разработке программного обеспечения (не важно, пишете вы десктопные приложения или веб-сервисы), сборке и развертыванию программ нужно уделять не меньшее внимание, чем написанию основного кода. Главная мысль в книге, которую пропагандируют авторы — это создание конвейера сборки и развертывания приложений. Что представляет из себя этот конвейер? После каждого изменения, отправленного, в репозиторий, сервер непрерывной интеграции (Continuous Integration, CI) должен выполнять последовательность определенных действий, тестируя код на каждом шаге, и немедленно сообщать об обнаруженных проблемах программистам. Последовательность действий выглядит таким образом (картинка взята из книги).

conveyer

Читать далее ‘Книга Дж. Хамбла и Д. Фарли «Непрерывное развертывание ПО»’ »

Книга Алана Купера «Психбольница в руках пациентов»

psi
Эта книга Алана Купера уже давно была у меня на примете, однако прочитать ее удалось лишь недавно. И знаете, давно я не получал такого удовольствия от чтения. В целом книга посвящена тому, почему интерфейсы программ или других устройств, в которых содержится процессор, такие сложные и не логичные с точки зрения обычного пользователя. Автор в начале книги на примерах доказывает, что в каком бы предмете не появился процессор, он начинает вести себя как настольный компьютер в худшем смысле этого слова — начинает обрастать ненужными функциями, тормозить и виснуть. Это справедливо и для фотоаппаратов, и для автомобилей, и для военных кораблей.

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

Вся книга написана с иронией над программистами, но очень точно раскрывает причины поведения этих забавных существ. Алан Купер делит людей на два вида: хомо сапиенс и хомо логикус (т.е. программистов) и пытается доказать, что последним ни в коем случае нельзя доверять создание интерфейсов, потому то основные мотивы действий у людей и программистов различаются. Например, обычному хомо сапиенс нужно, чтобы предмет просто работал и выполнял свою функцию, он не хочет задумываться о том, как он устроен внутри. Хомо логикус же, напротив, желает полностью контролировать поведение предмета или программы, он готов пойти на некоторые неудобства использования программы, если они позволят полностью держать программу под наблюдением и контролем. Поэтому он будет инстинктивно добавлять в интерфейс множество настроек и индикаторов, которыми можно будет тонко настраивать программу под себя, но что абсолютно не будет использовать обычный пользователь.
Читать далее ‘Книга Алана Купера «Психбольница в руках пациентов»’ »

Книга Хуана Диего Гоше «HTML5 для профессионалов»

Хуан Диего Гоше "html5 для профессионалов"Решил я освежить свои знания в области сайтостроительства и упорядочить для себя обрывочные сведения относительно HTML5 и всего, что с ним связано. Статьи в интернете обычно рассказывают о какой-то одной особенности нового стандарта, а хотелось почитать что-то, где описывались бы все нововведения HTML5 по сравнению с HTML4 в одном месте.

Перебирая различные книги, я наткнулся на книгу Хуана Диего Гоше «HTML5 для профессионалов», которая в оригинале называлась «HTML5 for Masterminds, 2nd Edition», и на ее обложке красовался мозг в баночке. В переводе книга издана в 2015 году, а оригинальная вышла в 2012 году.

HTML5 for Masterminds
Свою задачу книга выполнила на 100%, ее содержание полностью сфокусировано на новых возможностях HTML5. Хотя книга и называется «HTML5 для профессионалов» (по крайней мере в переводе), но автор все-таки добавил пару глав, где коротко рассказывает основы HTML и JavaScript, но не более того, что понадобится для понимания примеров из книги. И даже когда он пишет про основы HTML, он сразу отмечает моменты, где по идеологии HTML5 отличается от HTML4. С первых же примеров он начинает использовать такие структурные теги как <header>, <nav>, <section>, <aside> и <footer> (хотя для меня эти теги уже были знакомы, но, пожалуй, самое понятное описание того, какие теги для каких элементов сайта рекомендуется применять, попалось именно в этой книге.), а заодно пишет, как изменилась семантика (смысл) старых HTML-тегов, таких как <i>, <b> и др.

Читать далее ‘Книга Хуана Диего Гоше «HTML5 для профессионалов»’ »

Книга Уильяма Зинсера «Как писать хорошо. Классическое руководство по созданию нехудожественных текстов»

Уильям Зинсер. "Как писать хорошо"Все мы иногда сочиняем тексты. Кто-то ограничивается короткими заметками в соц. сетях, кто-то ведет блог и пишет большие посты, для некоторых сочинение статей — работа, а кому-то хватает служебных и объяснительных записок на работе. В любом случае, раз мы что-то пишем, значит хотим, чтобы кто-то прочитал наше творение, а еще лучше, чтобы он понял то, что мы хотим донести до читателя, кем бы он ни был: заказчиком, начальником или посетителем сайта. Для тех, кто сочиняет подобные тексты и предназначена книга Уильяма Зинсера «Как писать хорошо. Классическое руководство по написанию нехудожественных текстов». Ее автор — американский писатель, журналист и преподаватель, который делится своим умением и видением того, как сделать так, чтобы вашу статью в газете или заметку в блоге дочитали до конца, а не переключились на что-то другое после первых двух предложений.

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

Книга «Как писать хорошо» в оригинале переиздавалась девять раз. Впервые она вышла еще в 1976 году, после чего периодически, с интервалом в несколько лет, печатались новые издания с поправками и дополнениями. Русский перевод основан на издании, вышедшем на английском языке в 2006 году, через 30 лет после первого издания. Не многие книги могут похвастаться такой историей.

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

Читать далее ‘Книга Уильяма Зинсера «Как писать хорошо. Классическое руководство по созданию нехудожественных текстов»’ »

Книга Уэса Маккинни «Python и анализ данных»

python-dataНедавно в нашей группе во Вконтакте мне задали вопрос о том, какие книги я могу посоветовать про применение Python в научных исследованиях. Как раз в это время я собирался начинать читать книгу Уэса Маккинни «Python и анализ данных» и пообещал, что о ней будет отзыв в блоге. Сегодня я выполняю это обещание.

Когда речь заходит про языки программирования для научных вычислений, то обычно вспоминают MATLAB, а в последнее время все больше появляется упоминаний языка R, который в первую очередь ориентирован на статистические расчеты. При этом Python с некоторыми библиотеками вроде NumPy и matplotlib отлично подходит для научных расчетов и во многих случаях могут успешно заменить MATLAB, который, к тому же, является достаточно дорогой программой, а Python и все упомянутые в книге библиотеки являются с вободными и вы можете их скачать без угрызения совести. Это здорово, что на русском языке вышла подобная книга (на английском языке книги про научные вычисления на Python мне попадались).

Сразу хочу предупредить, что «Python и анализ данных» — это описание инструментов, а не алгоритмов, про алгоритмы я могу посоветовать книги «Программируем коллективный разум» и «Алгоритмы интеллектуального интернета». Уэс Маккинни, автор книги «Python и анализ данных», является создателем известной библиотеки для обработки временных и табличных данных pandas, поэтому не удивительно, что большая часть книги посвящена этой библиотеке,

В этой книге Уэс описывает основные возможности нескольких инструментов и библиотек, которые предназначены для анализа и обработки данных: IPython, библиотеки NumPy, matplotlib и, конечно, pandas.

Читать далее ‘Книга Уэса Маккинни «Python и анализ данных»’ »

Про книгу Майкла Нейгарда «Release it!»

Release it!

На днях дочитал замечательную книгу Майкла Нейгарда, которая в переводе называется «Release it! Проектирование и дизайн ПО для тех, кому не всё равно». В оригинале книга имеет название «Release it! Design and Deploy Production-Ready Software», и знаете, русскоязычный вольный перевод названия лучше отражает суть книги, по крайней мере развертыванию (deploy) приложений на сервере посвящена лишь одна последняя (из 18) глава.

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

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

Читать далее ‘Про книгу Майкла Нейгарда «Release it!»’ »

Про язык Go и книгу «Programming in Go»

Талисман языка Go

В последнее время все больше стало появляться статей про язык программирования Go, который разрабатывается в стенах Google. Чтобы посмотреть, что это за зверь, прочитал книгу Марка Саммерфильда (Mark Summerfield) «Programming in Go. Creation Application for the 21th Century» из серии Develorep’s Library. Когда я писал этот пост, узнал, что эта книга в 2013 году была издана и на русском языке, но я читал ее английскую версию.

Прежде чем писать про книгу, расскажу про особенности языка Go. Я не буду давать оценки тому или иному решению, который предлагает язык, поскольку пока не напишешь на каком-нибудь языке серьезную программу, глупо его критиковать — каждый язык программирования требует настройки на «свою волну». Я постараюсь все особенности языка описать на пальцах, используя минимум кода.

Читать далее ‘Про язык Go и книгу «Programming in Go»’ »