Получи случайную криптовалюту за регистрацию!

Человек и машина

Логотип телеграм канала @manandthemachine — Человек и машина Ч
Логотип телеграм канала @manandthemachine — Человек и машина
Адрес канала: @manandthemachine
Категории: Технологии
Язык: Русский
Количество подписчиков: 1.92K
Описание канала:

Авторский блог Карена Товмасяна.
Идеи, слова поддержки и критики отправляйте мне - @ThomasStorm.
С предложениями рекламы не обращайтесь.
I do not speak on behalf of my employer.

Рейтинги и Отзывы

3.33

3 отзыва

Оценить канал manandthemachine и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

1

2 звезд

1

1 звезд

0


Последние сообщения 7

2021-10-05 12:03:52
#пятничное

Извините.
776 views09:03
Открыть/Комментировать
2021-10-04 10:41:21 #жиза #люди

Не пост, но предложение к обсуждению.

Периодически нарываюсь на дедов, кто со снисхождением отзывается о "молодых": мол они пишут код, не подумав и не оценив ситуацию, а вот в их время нужно было 1000 раз все обмозговать, прежде чем браться за клавиатуру.

Ни в своей работе, ни в своем окружении я такого поведения не встречал. Имплементации предшествует долгие процессы сбора требований, проектирования, выверки... написание кода не является первоочередной активностью. Себя к дедам не отношу.

Написание кода - интересный и медитативный процесс, но чем серьезнее решаемая задача, тем больше нужно кодить "на бумажке" и меньше на компьютере - цена ошибки высока.

Но это мое видение. Собственно, дискас.
559 views07:41
Открыть/Комментировать
2021-10-01 13:17:15 #машины_aws

Амазонщики часто с нетерпением ждут re:Invent. Оно и понятно - самые большие и громкие анонсы происходят именно там.

Однако есть громкие заявления - и прошедшее мероприятие явно дает понять, в каком направлении двигается AWS - и есть оглушительно тихие.

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

Первое: поддержка Graviton2 в AWS Lambda. AWS крайне заинтересован перевести часть своих клиентов на собственные процессоры, и поддержка их в FaaS как нельзя лучше помогает запустить в собственную среду не только бизнес, живущий на виртуальных машинах и контейнерах, но и тех, кто практикует FullStack Serverless. Это эволюционный путь и он ожидаем (все всё понимают).

Второй анонс куда интереснее - AWS выкатил CRUDL API для управления жизненным циклом своих ресурсов. Я не буду раскрывать всех тонкостей его работы: мои коллеги и евангелисты из AWS тусовки куда лучше с этим справятся, да и CRUD’ами сейчас никого не удивить. Для себя отмечу, что идемпотентность API реализованная через передачу клиентского токена, ИМХО, крайне сомнительная затея.

Самый сок не в этом. Глядя на спецификацию ("TypeName": "AWS::Lambda::Function"), становится понятно, что обращения идут не абы куда, но в CloudFormation Registry - что тоже вполне себе логичный ход, удовлетворяющих всех Оккам их бритвы.

Особой фишкой релиза Cloud Control API является интеграция с Pulumi и Terraform. AWS не в первый раз демонстрирует свою готовность работать совместно с ISV - это помогло появится таким прекрасным продуктам как OpenSearch (оставим за скобками, что стало с компанией Elastic, мы же потребители). Однако теперь, что Pulumi, что Terraform будут заинтересованы добавить поддержку не-AWS сервисов в Cloud Control API - а значит они будут разрабатывать необходимые провайдеры для CloudFormation Registry… Что экономит силы самого AWS и дает им поддержку внешних поставщиков в CloudFormation и CDK. (все всё понимают)

Я не отношу себя к левакам, которые требуют от всех и вся “зарегулировать” AWS, дабы он не подгибал всю индустрию под себя. Защитить ИТ от монополизации - задача конкурентов AWS, а так же самих предприятий-потребителей. Каждое предприятие должно принимать решение с откупом: или инвестировать в свою собственную инфраструктуру - и речь не только о железе и ЦОДах, но и собственных инфраструктурных продуктах - или готовиться к долгосрочному стратегическому партнерству с поставщиком облачных услуг.
507 viewsedited  10:17
Открыть/Комментировать
2021-09-27 13:43:46 #люди

Наконец-то к теме, с которой все началось.

Итак берем какую-то стратегическую проблему, из нее берем тактическую проблему - что-то, что можно измерить. Если вы работаете в платформенной/инфраструктурной команде, то лучшая метрика - либо масштаб, либо расходы, либо “возможность” (дать техническую возможность для бизнеса делать Х). В непродуктовых командах, инженеры чаще всего сами обозначают проблемы и способы их решения. И чем серьезнее проблема, тем серьезнее способ.

Тут стоит сделать небольшую отсылку на пару постов назад и вновь процитировать Генриха Альтшуллера: “Система идеальна, когда ее нет, а ее функция выполняется.” Казалось бы, что может быть лучше для предприятия, чем использовать уже существующие инструменты и системы для решения новых задач?

В этом и есть одна из первых серьезных проблем: нельзя получить повышение, просто взяв уже существующее и натянув на него проблему (Как вы думаете, почему у Google так много мессенджеров?) . Карьеристы это прекрасно понимают. Бизнес это прекрасно понимает. И бизнес, чтобы блокировать злоупотребление креативным подходом, имеет при себе штат инженеров-“дедов”, которые задают каверзные вопросы: “А почему не хотите использовать Y? А чем вас не устраивает Z?” Карьеристу нужно найти такую (дополнительную) проблему, что не может решиться уже существующей системой. Из чего растут ноги второй серьезной проблемы: если такой проблемы нет, ее нередко придумывают!

Помните тот стикер-пародию O’Rly “Solving imaginary scaling problems”? Приблизительно так это и работает.

Третья проблема - большие проекты не подтверждают и не проверяют умение инженера работать с несколькими командами. По факту, инженеру достаточно заручиться поддержкой своего менеджера (или менеджера своего менеджера), который выделит ему необходимое количество людей. Несложно договориться с людьми, которых тебе “выдали”, согласитесь?

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

Отсюда четвертая проблема: не всегда можно проверить “честность” этих метрик, и более того - берутся только те метрики, что изменились в плюс. Многие знают гигантскую историю Dropbox о том, как они построили свои ЦОДы и уехали из AWS, сэкономив миллионы миллиардов. Есть и обратные истории, как компании залетали в AWS, точно так же экономя миллиарды миллионов. Мы не знаем, нельзя ли было добиться того же эффекта внутренними оптимизациями (мой опыт эксплуатации собственных инфраструктур и облаков подтверждает, что чаще всего можно).

И пятая, в продолжение: учитывая сроки планирования, разработки, имплементации и запуска проекта, мы не можем знать наверняка, что все вложенные силы и инвестиции отбились. А значит мы не знаем, можно ли было направить столько ума и таланта на что-то более весомое и полезное для предприятия.

---

Выводов из этого поста делать не стоит. В конце концов, благодаря инициативным кадрам the Big Tech задает тренды индустрии, выпускает свои проекты в Open Source и дает компаниям меньшего размера выходить на больше рынков и объемов подготовленными. Цитируя своего приятеля: “Все, что сейчас решается в FAANG, будет решаться и в других компаниях через несколько лет.”

С другой стороны, не все общеизвестные системы появились на свет из-за карьерных аппетитов их изобретателей. Сысоев хотел ускорить Apache; Миловидов вряд ли придумал ClickHouse ради бесплатной ипотеки от Яндекса (хотя кто знает?); Роб Пайк явно сидел достаточно высоко в Google, когда придумывал Golang; Гвидо ван Россум решил “ускорить” Python, потому ему наскучила пенсия, и в Microsoft ему сказали взять себе любой проект по душе.

Даже если из ста проектов только один принесет реальную пользу - разве это плохо?
868 views10:43
Открыть/Комментировать
2021-09-25 11:52:19 #люди

Это второй пост из трех. Я обещал вам уложиться в два, но как дописал второй, понял, что не влезаю.

Предыдущий пост вызвал ряд непониманий. Оно и видно, ведь я использовал некорректное действие "написать".

Безусловно, Staff+ бывают разные, как по "классификации", так и по становлению - и есть те, кого повышают за выслугу лет вкупе с коммуникативными талантами. Но я не знаю, как вы, а я тот еще мамкин карьерист и рассматриваю своих... конкурентов. Так что и писать буду о тех ребятах, которые идут вперед, а не ждут у моря погоды.

Итак, чтобы встать на ступень выше, нужно соответствовать должности выше. А Staff+ часто решают стратегические задачи и обладают авторитетом размером с целый бизнес юнит.

Надо понимать, стратегические задачи ставит руководство, и задачи эти чисто "бизнесовые": прибыль и продажи в плюс, издержки и расходы в минус. Инженеру такие метрики перевести в техническую задачу трудно, благо есть продуктовые менеджеры, которые из сухой цифры делают некую идею, которую инженер может превратить в решение.

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

В больших (технических) компаниях, как я уже говорил, процесс повышения бюрократизирован. Да, к нам эта вездесущая бигдата с вовлечённостью пришли куда раньше одноименного скандала, и номинант, перед отправкой своего резюме на рассмотрение суда присяжных комитета, занимается сбором данных (как его действия повлияли на компанию) и артефактов. Артефактами служит все релевантное, что попадется под руку: дизайн документы, pull request'ы, записи тренингов, документация, epic'и в JIRA.

Иначе говоря, раз отразил у себя в резюме, что от начала до конца вел проект, то будь добр предоставить подтвержденный архитектурный документ твоего авторства. Провел отличный тренинг? Запись с обратной связью. Имплементировал функциональность? Покажи код.

Вы, наверняка, догадались куда я клоню. Чтобы показать, как вы решаете стратегические задачи, надо бахнуть что-то стратегическое. Чтобы получить повышение, нужен не просто проект, а ПРОЕКТИЩЕ.

О том, как такие проектища появляются и к чему приводят - в понедельник. Обещаю!
476 views08:52
Открыть/Комментировать
2021-09-21 22:31:08 #люди

В предыдущем посте я упомянул career-driven development. Само название, безусловно, шутка, производная от *-driven development, например Test-Driven Development.

Это первый пост из двух. Прежде чем я раскрою мысль (и дам вам повод устроить ад в комментариях), я должен уточнить: CDD сам по себе не означает ничего плохого в моем видении.

Всем знаком термин “терминальная позиция”? В нашем ИТ-мирке это чаще всего senior engineer. Терминальная позиция - это та должность, до которой каждый, со временем, обязательно дойдет, если будет… просто работать. В среднем, такой путь занимает от 7 от 10 лет, 22-летних вундеркиндов в расчет не берем.

Почему же она терминальная? Потому что дальше идти наверх становится гораздо сложнее. В маленьких компаниях это вызвано отсутствием должностей (дальше только тимлид), в крупных - очень серьезным входным порогом.

Раскрою ситуацию с крупными конторами. В них процесс повышения в должности бюрократизирован и процедурен. Есть некая “матрица компетенций”, отражающая ожидания от специалиста и его вклада. Некто идет на повышение, специальные люди смотрят на его вклад и принимают решение, сопоставляя вклад номинанта с вышеназванной матрицей.

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

Вот тут и начинается загвоздка. Чем выше по должности вы пытаетесь пройти, тем больше становится масштаб! Если не перейти в менеджмент, дальнейшая линия развития после Senior это Staff+ (инженер-архитектор здорового человека, не путать с чуваками, которые кроме Visio и Outlook ничем не пользуются) - и если условный L5 (senior) делает что-то крупное, но в пределах своей команды, то L6 (staff) работает в проекции нескольких команд, влияя на несколько продуктов или на целые бизнес-юниты.

Становится понятно, что, чтобы стать Staff’ом, нужно писать не очередной микросервис, а что-то уровня Nginx/ClickHouse. Об этом в следующем посте.
646 views19:31
Открыть/Комментировать
2021-09-19 12:47:52 #машины_разное

Позвольте признаться: Карен, 31 с лишним годиков, с месяц назад открыл для себя ТРИЗ (Спасибо, Миша!)

Ранее я не интересовался вне-ИТ паттернами решения задач, посыпаю голову пеплом - тем интереснее читать "Найти идею" - вводный материал для тех, кто про ТРИЗ никогда не слышал.

Я приведу одну цитату, которая глубоко засела в голове и не дает покоя: "Система идеальна, если ее нет, а функция осуществляется."

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

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

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

Переиспользование, к слову, является препятствием для career-driven development. Но это тема следующего поста.
836 views09:47
Открыть/Комментировать
2021-08-20 18:38:39 #люди #пятничное

Shout, так сказать, out всем, кто считает себя страдающим от синдрома самозванца, кто делает идеальный продукт бесконечно долго, и кто считает, что надо срочно учить язык/технологию, иначе рыночек порешает.

Когда я покинул EPAM и заступил на службу в Uber, я принял для себя два сложных решения:
1. Я перестаю инвестировать свои ресурсы в изучение AWS
2. Я заметно сокращаю свое участие в публичной активности

Почему? Долгая и скучная история про смену приоритетов и закон Парето. Да и пост не про это.

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

Согласен с автором по всем пунктам.
467 views15:38
Открыть/Комментировать
2021-08-18 13:13:43 #машины_разное

Итак, благодаря Олегу Ковалову мы знаем, что NaN не равен NaN. А как насчет nil != nil?

Я еще осваиваюсь в мире сусликового программирования и частенько захожу в чужие Pull Request’ы учиться уму разуму. Однажды мое внимание привлек следующий кусок кода:

if err == nil {
return err
}

В комментариях затребовали незамедлительно заменить return err на return nil, указав, что так в Go делать ни в коем случае нельзя, и что “где-то выше” такой nil не будет интерпретирован как nil!

Я прихожу из змеиного мирка, где NoneType всегда NoneType, так что я пошел за советом к коллегам. Оказалось, что: 1) есть типизированный и нетипизированный nil (што); 2) nil-значения интерфейсов содержат не только само значение (nil), но и конкретный тип (*CustomError, например) (ШТО)!

Ну а error как раз Interface, так что вариантов прострелить себе руки, ноги, затылок и спину масса.

Такие дела. Прочитать подробнее можно тут:
- https://dave.cheney.net/2017/08/09/typed-nils-in-go-2
- https://golang.org/doc/faq#nil_error

Отдельное спасибо @sergdudk за разъяснение.
765 viewsedited  10:13
Открыть/Комментировать
2021-08-16 16:18:01 #машины_разное

Новая версия HTTP именуемая HTTP/3 обещает радикальное изменение в транспортной части протокола, которая предлагает альтернативу “медленному” TCP - QUIC.

Может показаться, что с TCP проблем-то и нет, и это будет частично правдой. В TCP достаточно функциональности, чтобы проталкивать как можно больше полезной нагрузки без overhead’а: fast-open, TCP windows, TSO/GSO и иже с ним. Однако следует помнить, что все дополнительные примочки строились как раз из-за того, что гарантии TCP заметно замедляют его работу!

Поначалу я подумал, что нас ждет очередной Connected UDP, но все оказалось куда интереснее.

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

Сам протокол очень молодой (и судя по RFC - невероятно дерзкий) и обещает стать “комплементацией” не только TCP, но и TLS!

Возможно я был неправ, когда написал, что самое интересное в индустрии уже придумали.
425 views13:18
Открыть/Комментировать