Junior — роскошь

.. а не ресурс разработки Junior — человек, которому вы не можете выдать задачу сложностью выше некоторого уровня, если хотите, чтобы задача была решена в нужные вам сроки. Таким макаром в разных монастырях один и тот же человек может быть ранжирован не одинаково. В Кукусофте он middle, в Почтоваре он junior, а в учреждении для общественного воспитания детей дошкольного возраста и вовсе senior. Зависит от задач и сроков.
Ещё три исходящих пункта.
Раз. Джуниор (впрочем, как и любой другой) интересен тогда, когда для него есть фронт задач его уровня. Иными словами, стоимость их решения адекватна.
Два. Джуниор интересен тогда, когда из него хотят и могут [почти] любой ценой сделать что-нибудь другое. Характерно для больших компаний, выращивающих себе кадры, особенно штучные (тот же ШАД Яндекса примером).
Три. Джуниор интересен тогда, когда интересен не задачами и не ростом. Бывают занятные схемы. Скажем, вы аутсорсер, по контракту оплачивают работу с учётом занятых на проекте голов, выгодно эти головы набрать и демонстрировать. Это Вася. У него димплом МГУ, он джавист, уважаемый Джон Смит, похлопайте Васе и перечислите нам очередной транш. Что там за знания у Васи, чем он реально занят… никого не волнует. Такие схемы обсуждать не будем, достаточно того, что оно бывает и к разработке не относится.

Ещё ремарка про стоимость джуниоров. Давайте на пальцах следующую формулу зарплаты изобретём (почти по рынку, хоть для красоты округлил): J(unior) = n, M(iddle) = 2*J, S(enior) = 2*M. Это вот зарплата. Но работодателя интересует стоимость решений. Если junior делает софт 4 месяца, а senior тот же софт за 1 месяц, видим смешное: junior выпустил продукт на три месяца позже при senior’ной стоимости решения.
Слишком чистенько. На деле живые джуны делают ещё дольше и требуют ещё больше вложений. Они перетягивают на себя внимание middle+ (code review, консультации). Плохо интегрируются с нужной бюрократией (тексты коммитов, тикеты в JIRA). Плохо понимают командную работу (тусить в изоляции, забив на состояние мира вокруг — штатное состояние). Понимание ответственности на нуле (для них часто по воображаемым последствиям примерно равны «мама, я застелил постель» (не застелил) и «Аристарх Петрович, я протестировал все изменения перед выкаткой» (не все, не протестировал)), что добавляет рандома в production.
Всё это вместе с исправлением, обучением и банальным надзором замедляет работу остальных, что влияет на стоимость уже их решений. И, что прикольно, всё это в какой-то момент может оказаться пустотой — то вдруг оказывается, что чувак не подходит профессии. Или у него прошло увлечение и теперь он хочет на лыжах кататься. Или просто зайку не ценят и потому зайка уходит в монастырь. Или начитался про успешные стартапы и уходит в загул пилить Super Duper ToDo Tracker, который обязательно поглотит рынок.

Также нередко джуниоров, если они прям юные, надо учить:

  • жить («Сань, давай в будний вечер ты не будешь бухать до похмелья с утра, тебе два критикала срочно разрулить»),
  • общаться («Олег, заказчик не твой друзяшка со двора, давай не бычить и вообще полезно быть вежливым»),
  • взрослеть («Стёп, ты же обещал? Обещал. Не выполнил и знал заранее, что не выполнишь. Давай в следующий раз ты подойдёшь и скажешь заранее, что не успеваешь, чёт придумаем»)
  • и матереть («Филь, вот чего ты молча в пол смотрел? Тебя Иваныч сожрать собирался шоле? Нет. Голову поднять, факты озвучить, логикой задавить, в глаза смотреть спокойно, задачу не ты просрал, не тебе отвечать»).

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


Теперь подумайте и себе честно ответ: нафига всё это работодателю? Обычной софтварной конторе от гаражика до «это здание всё наше». Не приюту. Не благотворительному фонду. Не школе для одарённых детей. Не яростной молотилке кадров, в которой в день сто страниц копипасты. Вот нафига? Middle и senior выгоднее. Головняка с ними заметно меньше. Рандома в проде заметно меньше. Ставить их на путь истинный тоже проще, бойцы уже биты жизнью, могут гонор в карман спрятать и таки сделать то, что надо, а не «я так вижу». Прогноз работы с ними тоже проще — если до middle добрался, есть куда толкать и выращивать. Потому в общем случае джуниоров не нанимают. Убыточно. Проблемно. Результат не спрогнозировать. Нафиг надо.
Исключения бывают, безусловно (особенно когда у исключения «глаза горят», учебники от зубов отлетают и в анамнезе годный код на GitHub’е, тут прям удовольствие смотреть, как талант раскрывается). Но меня подбешивает, когда на голубом глазу говорят «а чё, ну наберите роту джуниоров, воспитайте, вот вам и будут кадры». Нет, спасибо. Сами набирайте. Все люди хорошие, братья, друзья и ромашки, но иногда полезнее тикеты вовремя закрывать, а не переоткрывать по десять раз, выполняя гражданский долг матери Терезы.
PS. Конечно, вы не такой junior. Это какие-то другие такие. А вы самый умный, самый хороший, самый клёвый junior в мире.

Профессиональная самооценка

Один из неловких моментов: человек считает себя senior’ом, а ты по итогам считаешь, что он в лучшем случае серединка middle, и вот надо как-то это обосновать. Неудобно всё это, травмирующе для обеих сторон. Лучше, когда человек оценивает себя адекватно, актуально, объективно. Чтобы после десяти «не знаю» и «не помню» не собеседующего странным считал, но задумался о повышении квалификации.
Сузим контекст. Пусть Java (язык), JDK (библиотеки), JVM (виртуальная машина). Как джависту понять, на каком уровне он всё это знает?

Во-первых, сертификация. У Oracle три уровня: Associate (junior), Professional (middle), Master (senior). Попробуйте их сдать. Как вариант, можно купить mock certification у Enthuware и потренироваться. Или осилить книги вроде OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808 или OCA Java SE 8 Programmer I Certification Guide. После чтения задуматься: да, обо всём этом спрашивают и всё это считается нужным для подтверждения уровня. Если вы не согласны и можете несогласие аргументированно оформить в текст, напишите в Oracle. Быть может, к вам прислушаются.
Слышал мнение, что никто сертификацию не сдаёт, никому не надо и т.п. Так вот, количество сертифицированных приближается к миллиону. Последнюю статистику нагуглить не удалось, но вот текст от Oracle времён семёрки: Java Programmer Certification: Java SE 7 Certified Programmers И да, работодатели тоже с интересом смотрят на сертификат.

Во-вторых, собеседования. Если вы являетесь senior’ом, для вас не составит труда за несколько месяцев пройти senior собеседования в top 20 работодателей. Вроде бы мороки много, но уверяю, оно того стоит. Сначала может оказаться больно и обидно, но после здравого размышления всё становится на свои места. И, грубо говоря, либо 20 человек признают ваш уровень, либо вы спуститесь на землю. Ну или затаите обиду непризнанного гения, что тоже бывает.
В top надо идти потому, что у них есть выбор, а вокруг десятки разработчиков, с которыми можно сравнить. И если местные senior’ы среди ночи легко ответят на вопрос «как выглядит integer underflow в Java», сам собою формируется некоторый стандарт уровня. Вы не можете на подобное отвечать? Окей, возможно, вы и senior, но не нашей мануфактуры.

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

В-четвёртых, конференции. Их полезно смотреть и слушать. Умные люди отбирают доклады умных людей, чтобы умные люди послушали. Послушайте и вы. После каждого доклада говорите вслух: «озвученная тема не нужна, не интересна, никто не использует, да что за бред вообще, это не надо знать». Чем менее смешной вам будет казаться эта фраза, тем дальше вы от senior Java, например.
Понимаю, тот ещё показатель. Но умиляет же, когда Шипилёв, например, собирает сотни слушателей, зал впитывает, статьи пишутся, софт делается, а потом мимоидущий senior expert guru Java developer роняет, шо то никому не надо. В общем, на этом оселке тоже не мешает после всего остального сверить себя с внешним миром.

В-пятых, определение. Подумайте и последовательно сформулируйте собственные определения senior, middle и junior. Именно в таком порядке. Опишите обязательные знания и умения уровней. Только честно и злобно. Словно перед вами сто кандидатов, надо нанять двоих и от этих двоих зависит, выйдет ваш бизнес на IPO завтра или через год. Сделали? Ожидаемо примените к себе. Всё хорошо? Теперь то же объективно примените ко всем своим знакомым разработчикам. Откалибруйте шкалу, попробуйте посмотреть на каждого через оценку его знаний в каждой области. И снова примеряйте к себе.
Надеюсь, что вы определили уровни не через скорость гугления неизвестного. И здорово, если вам хватило мудрости не определять через «о, я не умею в рекурсию, значит, настоящим senior’ам рекурсия не нужна».

Всё это я в какой-то степени прошёл. Разве что собеседований мне хватило и трёх, чтобы понять, что после двухлетнего перерыва был самоуверенным бревном, а не Java senior’ом. Правда, сейчас тоже вряд ли потяну полновоенное собеседование, ведь есть ещё Spring, Hibernate, NoSQL, RDBMS, алгоритмы, Linux, сети… Да-да, всё то, что вы обязательно нагуглите, если вдруг понадобится. ^_^

О самостоятельности, часть I

Сначала про обычный фейл руководителя: делать всё самому. А если и не самому, то оценивать сделанное строго с позиции «как бы это сделал я». Начинающие (особенно из технарей) с этой грабли начинают, после чего либо стремительно умнеют, либо стремительно уходят из руководства (что тоже равно «умнеют»), либо становятся тем, что вроде бы должны изгонять — проблемой.
Если руководитель умнеет, он старается выделить самостоятельных бойцов и делегировать им задачи. Иначе говоря, не делает то, что могут (и/или для чего были наняты) другие. Не потому, что ленивый, но потому, что у него задач на тыщу человек, можно лопнуть лягушечкой на глобусе.
И вот тут начинается интересное. Какие качества должны быть у потенциально самостоятельного бойца (часть I)? Что такое самостоятельность и где её границы (часть II)? Как ею создать коллектив и как развалить (часть III)?

В этой части обойдусь интуитивным пониманием термина, т.к. требования к кандидатам от формализации не изменятся. Сами же требования подам через отрицание.
Во-первых, не надо давать тем, кто не хочет, пусть и может. Относится ко всему, конечно, работает и тут. Если делаешь что-то против воли, толку не будет, пусть вам и кажется, что вознаграждаете человека. Для него это наказание.
Следствие: практики «никто другой не согласился» и «только ты можешь спасти планету» плохи и далеки от оптимальности.
Во-вторых, не надо давать самостоятельность в области деятельности, в которой человек не разбирается достаточно для ожидаемого уровня решений. Это не значит, что ворота в стене Трампа только для возвысившихся senior’ов — junior вполне может получить собственную песочницу. Важна прямая зависимость между площадью песочницы и знаниями/умениями.
Следствие: хороший руководитель в ключевых областях знает и умеет больше подчинённых.
Следствие: при правильном процессе невежа никогда не получит право на решение.
В-третьих, не надо давать тем, кто не готов к негативной стороне ответственности. Отдельная и большая тема, но упомяну. Важна причиняемым вам ущербом в случае ошибок, которых вы могли объективно избежать. Поленился? Протупил? Мало знаешь? Проигнорировал инструкцию? Вплоть до увольнения с занесением в трудовую (что крайность, но нужна и вполне применяется). Не готов? Сиди кодером дальше, пиши по указке.
Следствие: очевидно, дети (и не всегда таковые по биовозрасту) к ответственности редко готовы. Массовая инфантилизация сдвигает взросление всё дальше со всем вытекающим, потому даже 30-летнего кандидата на песочницу требуется оценивать как 20-летнего лет сто назад (про Гайдара вспомнили, ага).
В-четвёртых, не давать тем, кто не готов принять всё, включая скучное или неприятное. Когда вы впервые получаете своё первое (пусть и съёмное) жильё, в «контракт» самостоятельности включается и уборка, и платежи, и воспитание соседей, и ежедневная готовка и прочее. В разработке та же фигня. Чем больше песочница, тем больше в ней работы с людьми, тестирования, сбора и обработки требований, документирования и остального, не шибко любимого разработчиками.
Следствие: кандидат на самостоятельную песочницу должен разбираться (и понимать нужду в) не только в разработке.

Что в итоге? Самостоятельность для тех, кто:

  1. Хочет её получить.
  2. Достаточно квалифицирован.
  3. Созрел для ответственности.
  4. Понимает и принимает выход за границы разработки.

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

Продолжение следует.

Элементы античности

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

Расширение файла в три символа. В 1974 году в свет вышла операционная система CP/M, в которой имя файла могло состоять из восьми символов, точки и трёх символов. Потом пришёл MS-DOS, взявший то же ограничение (как и дисководы A: и B:, кстати). Так и повелось.
80-символьные строки. Самое бесячье, когда начинают впаривать как аксиому. У нас тут давно широкие мониторы и шрифт меняется кеглем, но раз в 1928 году IBM выпустили перфокарты с 80 колонками, давайте продолжать.
QWERTY и ЙЦУКЕН. В 1870-х базовая раскладка латиницы завоевала мир с помощью печатных машинок Ремингтона. Ну а наш ЙЦУКЕН, видимо, «появился» в начале XX века. Если у вас были какие-нибудь фантазии на тему исследований частотности символов, органичности и т.п., то нет, ничего такого. Просто так получилось. А даже если и было, то за почти 150 лет человечество немножко изменилось. Но не раскладки клавиатур.
Байты и биты. Ребёнком меня это здорово удивило и удивление не прошло. До 1964 года в мире был бардак. Количество битов в байте колбасило в зависимости от фантазии производителя конкретного железа. Но тут IBM выкатили IBM System/360 с его 8-битным байтом. Казалось бы, ещё одна машина, и шо? Да, ещё одна. Только ставшая мегапопулярной, завалившая собою рынок, вышедшая на государственные уровни. Потому у нас 8 бит в байте, привет. Будь компьютер менее удачным, могло быть 4 или 16 (думаю, от степени двойки не удрали бы).
Итая, житая, катая. Вы же привыкли для целочисленных переменных использовать имена i, j и k? Так вот, история мутная. В 1954 году появился первый мануал по FORTRAN’у и сказано там буквально следующее:

fortran

Думаю, это и есть то, что повлияло на разработку. А вот на сам FORTRAN, похоже, повлияли обычаи математиков, которые в какой-то мере сформировал Рене Декарт работой La géometrie 1637 года (тут детальнее).

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

algol

Почти все языки, что приходят вам на ум в первую минуту, отнаследованы в итоге от ALGOL. Также лет на 20..30 этот язык стал стандартом de facto для описания алгоритмов в научной литературе (вон на скрине почти всё должно быть вам понятно, а ведь почти 60 лет). Как мне нравится думать, почти всё в программировании придумали в 50..60-х, а мы наблюдаем за волнами разных реализаций одного и того же.

Против goto. Кто не сталкивался, тому повезло, но с 1968 года поднялась волна против goto (заодно и switch достаётся), да такая, что название эссе стало нарицательным в программировании: Considered harmful. Возможно, не будь этого эссе, современные языки (и современные программисты) выглядели бы иначе. А так… круги по воде до сих пор идут. Напоследок напомню, Дейкстра допускал использование goto в машинных кодах [читай “на низком уровне”]:

Later I discovered why the use of the go to statement has such disastrous effects and did I become convinced that the go to statement should be abolished from all «higher level» programming languages (i.e. everything except —perhaps— plain machine code).

Это несколько отличается от привычного у фанатиков полного неприятия, согласитесь.


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

Про выбор андроидофона

Эссе для тех, кто твёрдо решил купить именно андроидофон в начале 2018 года. Я долго изучал и выбирал, пришёл к годному варианту. Может, кому из прочитавших путь пригодится.

Сначала сформулировал требования. Мне нужен боевой смартфон. То, что постоянно таскается в куртке, в рюкзаке, в руках, болтается на столах. Отсюда и набор.
Во-первых, не сверхдорогой и не уникальный. Если разобьётся, я не должен мужественно глотать слёзы и постить фоточки погибшего артефакта в соцсеточки. Комфортный потолок цены — 35К рублей. Плюс-минус пара тысяч. Ну ок, максимум 40К, но это вот прям если на душу железка ляжет. Так отвалились топовые Samsung, всякие Gresso и Huawei в Porsche Design, а также неадекватный по цене Google Pixel 2.
Во-вторых, должна быть влагозащита. Не хочу в морось на каждый слой капелек думать, не помрёт ли телефон. Так отвалились OnePlus 5/5T. Жаль, но номинально у них защиты почему-то нет вообще.
В-третьих, без этого новомодного закругления экрана. Отношусь к тем, кого бесит. Так снова отвалился Samsung S8 и пара интересных моделей других производителей.
В-четвёртых, камера. Очень важный для меня пункт. Много фотографирую и хочу, чтобы в смартфоне совокупность {сенсор, оптика, алгоритмы} выдавала нужный мне результат (потому и надо смотреть много фото, а не только считать числа). Перечитал множество статей, пересмотрел множество фотографий, намедитировался на отчёты DxOMark. При кажущемся разнообразии на рынке мало игроков, у которых всё в сумме хорошо. Samsung S8 (отвалился ранее), Huawei Mate 10, HTC U11, Sony Xperia (перебор цены), Google Pixel 2 (перебор цены), Xiaomi Mi6 (внезапно), OnePlus 5/5T (с некоторыми косяками, но всё равно отвалились по защите).
В-пятых, если наличие или отсутствие 3.5 не особо волнует, то возможность воткнуть карту памяти считаю одной из ключевых (предположим, мне есть чем заполнить). Так отвалился Xiaomi Mi6. Что любопытно, на форумах Xiaomi попадаются чуваки, сначала покупающие телефон и карточку, а потом спрашивающие, мол, а куда?
В-шестых, вычислительный запас начинки. Чтобы в потенциале хоть пару лет мне хватало на всё. Так отвалилось всё, у чего не 6GB оперативки и не Snapdragon 835 процессором (ну или эквивалент). Игры почти никак не волнуют, но обычно в паре с этой конфигурацией идёт и графика нормальная, потому как-то не парился совсем. Так вылетел LG V30+, который не попал в цену, не выстрелил ранее камерой, да ещё и в топовом флагмане ставит 4GB RAM, что теперь штатно даже в китайских нефлагманах (при этом уже и 8GB попадается). Странный ход, учитывая, что Android 7.x с обычной загрузкой обычными приложениями отгрызает 2GB+ со старта.
В-седьмых, экран. Строго говоря, на практике вполне хватает 1920×1080 (FullHD), но после того, как ознакомился с экранами большей плотности, субъективно захотелось всё-таки не FullHD. Для глаз отличие есть. Фиг уловишь, не сформулируешь, а есть. Это срезало чуть ли не половину актуального рынка.
В-восьмых, отзывы пользователей. Начитался Я.Маркета и офигиллиард страниц форума на 4pda. Таким образом накопил понимание pros и cons всякого в чужих руках — от глюков софта до лёгкости перепрошивки. Тут снова пожалел, что отвалился OnePlus 5/5T. Будь защита, были бы близки к идеалу. Обращал внимание на отзывы о царапучести стекла, качестве сборки, количестве брака, сервисных центрах и т.п. В общем, если предыдущие пункты достаточно объективны, то в этом набивал субъективность.
В-девятых, прогноз развития. Одни компании считают смартфоны основным бизнесом, другие равным, третьи побочным. Одни задирают цену маркетингом, другие близки к себестоимости. Одни выпускают полноценные версии прошивок с удобным окружением, другие ляпают абы было. Из всей совокупности происходит субъективное впечатление будущего. Скажем, у Sony всё хорошо, N лет делают одни и те же плоские кирпичики, поклонники довольны. А вот Lenovo колбасит в экспериментах. Если мне понравится текущая модель, хочу, чтобы через год-другой мог купить похожую следующую, а не странный разворот ряда на 180 градусов.
В-десятых, ваще полная субъективность. Могут спросить, а где Meizu? Не зашло. Взять тот же флагманский Meizu Pro 7 Plus. Есть бесполезный второй дисплей, но нет NFC. На ряде тестов показывает странную скорость внутренней памяти. Не хочу. Или вот Nokia. В конце 2018 года обещают выпустить чудо из чудес, а пока ничего интересного. Или ASUS — как-то… ничем не цепляющие смартфоны.

Неважным для себя посчитал следующее:

  • Как сказал уже, чип графики — мне не особо надо, а в выбранном диапазоне почти у всех норм by default.
  • Толстый аккумулятор — бОльшую часть времени провожу либо дома, либо на работе. Там есть розетки. Современный смартфон при штатном использовании (не танчики 8 часов подряд) спокойно живёт пару суток на одной зарядке, проверял. Этого хватит.
  • Дизайн задника — чехол всё скроет. Мало того, что он защищает железку и повышает ухватистость, так ещё и позволяет не любоваться отпечатками пальцев на всяком прекрасном с переливами.
  • Внешний звук — есть люди, всерьёз обсуждающие качество звучания музыки из динамиков смартфона и наличие или отсутствие ЦАП. Удачи им. Когда мне понадобится хороший мобильный звук, куплю специализированный плеер, полно их.
  • Двойная камера — как по мне, штука интересная, но учиться её правильно делать и использовать будут ещё с год. Пока это баловство.
  • Свистелки-сопелки — второй дисплей на заднике, реакция на сжатие, распознавание лица, датчик загазованности воздуха и т.п. Всем этим интересно поиграть пару дней, потом забрасываешь. Действительно полезные штуки через год появляются уже у всех.

Достаточно проанализировать свой последний год использования смартфона, чтобы вычленить реально нужное и отшелушить бесполезное.


Что осталось? Две модели. Huawei Mate 10 и HTC U11 128GB. Хоть монетку бросай. Монетка попала на HTC. Довольно любопытная компания, многим засветившаяся в истории Android, но в последние годы ушедшая с громкой сцены. Они всё ещё делают смартфоны. Они всё ещё дружат с Google. Google за $1.1 миллиард купил 2К+ сотрудников HTC R&D для разработки. Они делают Google Pixel 2. Они несколько последних лет выпускали трешак под своей маркой и демонстрировали все варианты провального маркетинга. Но внезапно выпустили крайне удачный U11 (не путать с другими U!).
Отличный фотонабор. Отличный дисплей 2560×1440. Топовый на данный момент процессор. 6GB RAM, 128GB internal у флагмана линейки. Вполне удобоваримая оболочка с оперативным выходом обновлений. Аккумулятора хватает для жизни. И при этом в декабре почему-то вместо обычных 45К рублей продаётся за 36К, что в сумме с другими финтифлюшками победило.
Фактически сейчас за адекватную цену можно купить гармоничный набор железа, который потом прошить удобной оболочкой. Правда, надеюсь, у HTC дела наладятся и вот этот годный флагман среднего звена не оказался случайной удачей.
Уф. Как-то так.

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

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

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

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

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

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

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

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

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

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


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

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 просто слёзы.