Итоги блогогода 2017

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

У вас нет времени на фигню, если хотите стать профессионалом. Время человеческой жизни конечно и не так уж велико. Из него время осознанной разумности работы мозга ещё меньше. Из него время, доступное для развития, ещё меньше. Из него время, которое вы тратите на подходящее (голове, характеру, историческому моменту, etc), ещё меньше. Как распорядиться этим огрызком — ответственность сугубо ваша. Важно в дальнейшем понять и принять следующее: причины, по которым вы решили потусить в баре с друзьями вместо более профитного занятия, интересуют только вас. Фразы типа «не, ну не могу ж я всё время работать[ и потому не знаю и не умею X, Y, Z]» заставляют собеседующих и работодателей только плечами пожимать. Вон в соседнем кабинете собеседуют Петю, Петя не тусил с друзьями, Петя знает и умеет X, Y, Z, Петя будет нанят. Вы же отправитесь в бар жаловаться на злобных дядек. Злобным дядькам от этого ни холодно, ни жарко.

У всего, относящегося к профессии, должен быть профит. Новые знания, новые умения, новые деньги. Если вам по занятной советской инерции успели вложить в голову некоторое отвращение (или стеснение) к словам «профит», «выгода» и т.п., назовите другим словом — «польза». До того, как чем-либо заниматься, сформулируйте цель и пользу от достижения цели. Максимально честно. Если хочется тупо с братанами побегать в стрелялке, не надо формулировать «изучение групповой геймификации в целях прогнозирования рыночного спроса на элементы игровой механики». Цель не формулируется? Скорее всего, вы собираетесь заняться фигнёй.

Профессионал — человек, обладающий глубокими знаниями и умениями в избранной области, AND актуализирующий и пополняющий знания и умения, AND зарабатывающий своими знаниями и умениями на жизнь. Я таких знаю. На их фоне несколько смешно и жалко выглядят «специалисты», находящие миллиард причин НЕ знать и НЕ уметь и НЕ хотеть. Да, смешно и жалко. Даже извиняться не буду. Пусть вас и много таких, знайте, хватает и другой породы. А вас однажды заменят автоматы, которые будут работать точнее и быстрее. Как вариант, появятся инструменты, которыми делать вашу работу сможет и дворник. К тому идёт.

Работу сейчас вы всё равно найдёте. Или не потеряете. И даже можете на текущем месте выстроить карьеру. Время такое. Вроде и плодят разработчиков миллионами, а всё равно задач выше маковки. Потому в диалогах и жарких дискуссиях занятная ловушка. Человек удачно сел в кресло. Вот нужен был его работодателю «нажиматель квадратных кнопочек». Потом middle нажиматель. Затем senior нажиматель. Ну а что? Стабильный бизнес. Роботы пока не умеют, дешевле выращивать специализированные растения в собственных горшках. Потом пытаешься обосновать такому нажимателю узость, шаткость и общую ущербность его позиции, но… он же SENIOR KNOPOCHKA DEVELOPER. У него оклад верхней четверти рынка. Весь его удачный опыт говорит об обратном. А ему впаривают про какие-то алгоритмы, структуры данных, сборщики мусора, Linux, мониторинг и прочее. Ха. Ха. Ха. Нажимать квадратные кнопочки — вот настоящее дело. Не получается дискуссия. Так вот, рекомендую хоть раз в квартал задумываться, не превратились ли вы в такое же существо в кадке.

Программист должен быть рациональным. Как и разработчик. Мы инженеры. Всё, с чем мы работаем, так или иначе, но в итоге измеряется линейкой. Субъективность и «я не знаю, но мне кажется…» возникают от незнания и лени. Никого не интересует, в какую мякотку вас в детстве покусали PHP, C++, Java, ZooKeeper, MongoDB, линейная алгебра и т.п. Это инструменты. Вы либо уместно их применяете, либо многозначительно шепчете «мне кажется», что по факту обычно означает «понятия не имею, а даже погуглить палец не поднимается». Суворов расстреливал каждого второго за «не могу знать», а стоило бы и за другое.

Солженицын ни разу не относится к любимым моим авторам, но слова его от этого менее верными не становятся:

Инженер?! Мне пришлось воспитываться как раз в инженерной среде, и я хорошо помню инженеров двадцатых годов: этот открыто светящийся интеллект, этот свободный и необидный юмор, эта лёгкость и широта мысли, непринуждённость переключения из одной инженерной области в другую и вообще от техники к обществу, к искусству. Затем эту воспитанность, тонкость вкусов; хорошую речь, плавно согласованную и без сорных словечек; у одного немножко музицирование; у другого немножко живопись; и всегда у всех — духовная печать на лице.

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


Да, стройно и цельно совместить всё сложно. Но если не пытаться, то ничего и не будет. А бесплодное барахтанье уныло. С наступающим вас. Барахтайтесь плодно.

Книги: The Busy Coder’s Guide to Android Development

busy
Mark L. Murphy.
The Busy Coder’s Guide to Android Development.
CommonsWare, 2017.
Во-первых, речь о версии книги 8.8 (о чём на обложке и сказано), это важно. Во-вторых, и здесь я пока успел прочитать 300+ страниц, но предварительно дальше полистал, чтобы устаканить мнение.
Пожалуй, если кому (мне) требуется чуть ли не единственный почти полный учебник / справочник разработки под Android, то вот оно. 4400+ страниц текста и скринов, на которых понятным языком рассказывается буквально всё. Постепенно, последовательно, с нужной детализацией. Т.к. книга электронная, обновляется постоянно, уже всё переписано для Android Studio 3.x, например. Актуальные ссылки и примеры, актуальный код (на который не желтеет инспектор).
Есть нюанс. Если предыдущий учебник больше для практиков (сначала пишешь код, потом думаешь и читаешь), то этот больше для теоретиков (сначала читаешь, потом думаешь и пишешь код). Мерно впитываете тонну информации.
Да, это хорошая книга. Рекомендую тем, кто не забивается от многабукав в уголок, чтобы поплакать. Чёт детальный обзор не получается, ибо ну… брать и читать, чё. Тот случай, когда не к чему докопаться.

 

Книги: Android Programming: The Big Nerd Ranch Guide

android
Bill Phillips, Chris Stewart, Kristin Marsicano.
Android Programming: The Big Nerd Ranch Guide.
Big Nerd Ranch Guides, 2017.
Сам я читал русское издание, которое почему-то называется «Android. Программирование для профессионалов» — перевод норм, хоть на словах вроде «субклассировать» глаз дёргался. Но не дочитал.
Если не углубляться в детали, есть два типа разработчиков — одни получают знания через теорию, другие через практику. Книга для практиков. Вы начинаете делать проекты, проходя все стадии, по пути получаете объяснения.
Собсно, ~350 страниц я этим и занимался. Честно и кропотливо выполнял каждое упражнение, чесал репу над разницей между Android Studio (книга вышла до 3.x, потому разница есть), перечитывал пояснения. Потом остановился. Авторы не успевают дать все нужные пояснения. Да, у вас на руках приложение, которое работает. Некоторые его части вы уже хорошо понимаете, в некоторых плаваете, но мне не понравилось то, что уже к середине далеко не самой сложной книги есть части проектов, в которых я ну совсем плаваю и бездумно вбиваю код. А откладывать и нырять в документацию, чтобы каждый такой вопрос несколько дней рыть… да как-то пока интереснее найти хороший учебник. Потому прервался.
В своём жанре и для своей аудитории книга всё-таки хорошая. Написана достаточно легко, код за парой исключений неприятия не вызывает, последовательность изложения присутствует. Но всё-таки не моё. Если до вас знание доходит через пальцы, а не через глаза, попробуйте, может подойти.

 

Книги: Java Lambdas and Parallel Streams

lambdas
Michael Müller.
Java Lambdas and Parallel Streams.
Apress, 2016.
Книга из категории «прочёл, но не хотел обзирать». Для галочки отмечу всё же.
Cобирался быстро за несколько поездок в метро поднять в памяти пару тем около Java streams попутно с лямбдами. Вместо этого уныло листал сумбурный текст обо всём на свете. Миша, ну блин, тебе выдали 60 осмысленных страниц под узкую тему. Так какого фига? Автор попытался упаковать лямбды, default, Optional, стримы и коллекторы в небольшую книжечку. И не справился. Начинающим не хватит введения. Продолжающим слишком мало примеров (и без того бестолковых, надо сказать). Углубляющимся не хватит глубины.
Тратить на неё время не стоит.

 

Android vs iOS

Не войны ради, но для себя кратко зафиксировать момент.
Купил в учебных и разработческих целях средненижнего уровня андроидофон (Xiaomi Redmi Note 4X 4/64). Подивился тому, что за смешные (относительно iPhone) деньги он умеет [почти] всё, что мне нужно, так, как мне нравится. Задумался. Следующим смартфоном решил взять какой-нибудь флагман 2018 года с хорошей камерой. Фактически это будет финальный шаг ухода от продуктов Apple, пусть нынешний рабочий конь iPhone 6S мне и годен весьма, исключая чудеса на лёгком морозе. Первым шагом была непокупка MacBook при смене ноута в мае, взял один из мощных Lenovo (о чём не пожалел, пусть батарейка у него и дикое гуано).
Т.к. утомился уже освобождать память верой и правдой служащего читалкой iPad Air, почесал репу и купил на его место среднего уровня андроидопланшет (Huawei MediaPad M3 8.4 64GB LTE).

Что хочу отметить… ну, тут важно то, что отметить хочу после многих лет игнорирования мира Android. Это было оправданно, т.к. [на фоне Apple] производители выпускали либо смешную фигню, либо равный по железу продукт, но с бестолковыми и глючными оболочками на тормозном Android’е.
Во-первых, оно уже не тормозит (на Xiaomi сейчас Android 6.x, на Huawei 7.x). Возможно, если бы интересовался мобильными играми, обнаружил бы разницу, но не интересуюсь. Более того, пока не обнаружил задачу, на которой работает медленно. Разве что Google Books (вместо iBooks) долго добавляет книгу, но есть подозрение, что толкает её в облако и ещё чем-то занят.
Во-вторых, память. Ура, я могу воткнуть microSD! А могу и не воткнуть. Или воткнуть, а потом выткнуть и воткнуть ещё куда-нибудь. Могу взять обойму карточек со всеми хорошими сериалами в 1080p, например. Как и наушники, кстати, хаха.
В-третьих, не вижу разницу. Безусловно, есть люди, на слух определяющие материал кабеля и ламповость звука, но я перестал видеть положительную в сторону Apple разницу в важном мне железе. Вон тот же Huaweu выше. У него дисплей IPS 2560×1600 с плотностью 359. Честно пару минут уродовался, пытаясь увидеть пиксель. Не увидел. Под большим углом я книги не читаю и фильмы не смотрю. Яркость и прочее регулируются. Так нафига мне iPad’ы, у которых та же плотность ниже, например?
В-четвёртых, андроиды более честны в цене. Купил на днях в док-станцию четыре кабеля Lightning. 6K рублей. Купил пять кабелей micro-USB (из них один 2-метровый). 1250 рублей. Все кабели гоняют данные и заряжают железки. Окееей… Читали про себестоимость iPhone X? 357$. БОльшая часть комплектующих с тех же заводов, что у остальных игроков (STMicroelectronics, Samsung, AMS, Sony, Broadcom и т.д.). Сверхдизайн? Дык в бампере этот дизайн фиг увидишь, ибо железка десятки тысяч стоит, а бампер пару тысяч. Крутость iOS? А в чём (спасибо за возможность примерить виртуальный вазон от IKEA в реальный угол комнаты, но нет)? Инфраструктура от Apple? Дык это, она сама по себе платная от облачного хранилища до iTunes. Хитрокрутые алгоритмы в приложениях, да и сами приложения огого? Да вроде как другие тоже не спят (та же Sony в области фотомодулей или Lenovo с их занятным движем с конструктором). Короче, в случае с Android’ами я понимаю, откуда цена, а в Apple чем дальше, тем больше чую только маркетинговый хайп и компенсацию того, за что я платить не хочу (ну вот не нужна мне Siri, потому, если включаете её разработку в продажу, мне грустно).
В-пятых, чувство свободы выбора. Android — сотни моделей. Камерофоны есть. Планшеты есть. Топовые смартфоны есть. Планшетики для детей. Копеечные планшеты (можно прикрутить на стену у стола в качестве monitoring dashboard). Сверхзащищённые модели [для Бундесвера]. Бабушкофоны и Vertu (всегда любил мнение, что Android’ы у нищебродов, ага). У меня не выбор между старым айфоном и новым айфоном — это вообще не выбор. Я и в самом деле могу внятно под себя подобрать предмет.
В-шестых, чувство свободы владения. Ткнул куда-нибудь (Linux, Windows, macOS) — работает. Захотел перепрошить — перепрошил (сам дурак, если кирпичнул). Захотел поставить себе левый софт с кучей вирусов с сайта в какой-нибудь Зимбабвии — поставил. Упороться ящиком кьянти, сделать свою сборку OS со скриптами на Brainfuck и постоянным мониторингом 100-мильной зоны вокруг датчиками сопряжённых с тобою биороботов? Сел и сделал! Это, блин, моя железка теперь. И софт в ней будет тот, что мне нравится, там, где мне хочется. Как минимум, могу на любой чих её затюнить, как оказалось.
В-седьмых, удобство. Пожалуй, последнее пока из списка. Так вот. Android удобен. Раньше был бякой. Кажется, в Google тогда вообще не задумывались о том, что андроидофонами могут пользоваться люди, у которых всего две руки со всего лишь десятью пальцами, при этом в верхнем плечевом поясе прикручены. А как вспомню HTC с какой-то их экспериментальной оболочкой, так вздрогну. А сейчас норм. Куча разного софта разной степени удобства. Мегатонна настроек. Интеграция со всяким. Правда, я пока только несколько «штук» изменил, остальное by default устраивает.

Такие дела.
PS. На всякий случай: упомянутые выше конкретные модели не реклама и не рекомендация, если нужен близкий к универсальному аппарат. Камеры у обоих туфта, а внешний звук у Xiaomi просто слёзы.