Forwarded from DevFM
Вдохновившись выступлениями прошлых лет, побывал тут на ArchDays 2024.
Были доклады поверхностные – за всё хорошее, против всего плохого, были доклады, где люди просто плохо готовились к выступлению или рассказывали сырой материал.
Однако удалось послушать и два хороших выступления:
▫️Замечательный своей концептуальностью доклад Александра Поломодова про архитектуру Т-Банка, в процессе которого было множество полезных отсылок, которые он опубликовал у себя в канале, и куда можно уже врываться и изучать.
▫️И очень практический доклад Виталия Минко на тему архитектурных принципов. Как только доклад появится на ютубе, обязательно сделаю пост о нём. А пока от него же доклад с одной из прошлых конференций на тему Технического радара. В нём затрагиваются темы: что такое Технический радар, для чего он нужен, когда и как его внедрять в своей компании.
#systemdesign
Были доклады поверхностные – за всё хорошее, против всего плохого, были доклады, где люди просто плохо готовились к выступлению или рассказывали сырой материал.
Однако удалось послушать и два хороших выступления:
▫️Замечательный своей концептуальностью доклад Александра Поломодова про архитектуру Т-Банка, в процессе которого было множество полезных отсылок, которые он опубликовал у себя в канале, и куда можно уже врываться и изучать.
▫️И очень практический доклад Виталия Минко на тему архитектурных принципов. Как только доклад появится на ютубе, обязательно сделаю пост о нём. А пока от него же доклад с одной из прошлых конференций на тему Технического радара. В нём затрагиваются темы: что такое Технический радар, для чего он нужен, когда и как его внедрять в своей компании.
#systemdesign
Telegram
Книжный куб
"Архитектура в Т-Банке: вчера, сегодня, завтра" на конференции ArchDays 2024 (Рубрика #Architecture)
Сегодня в 15.40 я выступаю на конференции ArchDays с докладом "Архитектура в Т-Банке: вчера, сегодня, завтра", в котором я расскажу про развитие подходов…
Сегодня в 15.40 я выступаю на конференции ArchDays с докладом "Архитектура в Т-Банке: вчера, сегодня, завтра", в котором я расскажу про развитие подходов…
Forwarded from что-то на DL-ском
Вчера на reading club приятно обсудили статью Anthropic о интерпретации LLM. Закину слайды своего обзора ниже👇 . Выписала самые важные моменты и выводы статьи на мой взгляд
А ещееее, очень рада, что число людей, читающих канал, перевалило за 3к😍
🤗 Линк на слайды
А ещееее, очень рада, что число людей, читающих канал, перевалило за 3к
Please open Telegram to view this post
VIEW IN TELEGRAM
Google Docs
Reading club Interpretation
Scaling Monosemanticity Extracting Interpretable Features from Claude 3 Sonnet overview
Forwarded from Карьера в FAANG
В прошлом посте я показал несколько простых инструментов для написания performance review документа, который будет читаем и понятен оценивающим его людям. Закончив с формой, пора поговорить о содержании.
Инструмент 3: артефакты
Большинство пакетов при чтении вызывает мысль: ууух, понаписал-то! Каждый норовит описать себя супергероем. Настоящего супергероя же отличает одна критически важная деталь -- пруфы. Каждый факт нужно подтверждать таким пруфом, которые еще называют артефактами. Имплементировал фичу? Прикрепи PR. Придумал дизайн? Прикрепи дизайн документ. Пишешь, что фича была важна? Прикрепи оживленные дискуссии. Пишешь, что поднял метрики? Прикрепи графики (а еще лучше ссылки на систему мониторинга). Пишешь, что починил критический баг? Прикрепи пользовательские жалобы. Вся информация, которая не подкреплена артефактами, считается hearsay, и, в теории, не учитывается при принятии решения. На практике же, сбор пруфов ляжет на плечи вашего менеджера, причем в кратчайшие сроки, пока заседают комитеты. Стоит ли удивляться, что он плохо справится с этой задачей.
Разумеется, чтобы прикреплять артефакты, нужно собирать артефакты. Это очень удобно делать в баг-трекере: создаешь себе задачу и дампишь в нее все ссылки и важную информацию по мере работы над проектом. А уж список проектов за полгода-год запомнить обычно не составляет труда, хотя можно и создать задачу с задачами.
Собрать артефакты -- простая часть. Вот вы своим улучшением серверного фреймворка уменьшили p90 latency на 10% на всех серверных приложениях вашей команды. Сделали скриншоты метрик latency "до" и "после", красиво показав снижение в момент деплоя вашего изменения. Сделали еще скриншот долгосрочной стабильности новых значений в течении недели. И уже потираете руки, как вас отблагодарят за это бонусом! Однако, рано радоваться. Да, вы собрали артефакты, подтверждающие ваше заявление об улучшении. Но вы не собрали самого главного артефакта, который дает ответ на вопрос: и чо?
Невозможно отрицать, что снижение p90 latency на 10% -- это улучшение. Но есть не менее важный второй вопрос: а насколько это лучше? Если вы разрабатываете рекламную платформу с 1M QPS, то это революционная технология. А если batch сервис, который вызывается раз в неделю, то это эквивалент сэкономленных пяти центов в год. Вторая половина артефактов должна подтвердить, что ваши улучшения действительно полезны, и насколько. Как это сделать? Пока не изобретен объективный прибор, измеряющий пользу, для этого мы пользуемся коллективным мнением более опытных коллег. Иначе говоря, пользу подтверждает артефакт под названием peer feedback. Вы просите коллег, которые считаются экспертами в том деле, в котором вы считаете, что принесли пользу, подтвердить и квантифицировать эту пользу. Да-да, комментарии от коллег собираются исключительно для решения этой задачи. Написание коллегами хвалебных поэм кандидату совершенно бесполезно, и игнорируется при принятии решений. В фидбэке должно быть написано: "признанный эксперт X в домене Y подтвердил, что достигнутый кандидатом результат Z в домене Y действительно важен и сложен на уровень L".
Итого, кандидат должен предоставить артефакты, подтверждающие достижение результата; коллега-эксперт должен предоставить артефакт (peer feedback), подтверждающий ценность и сложность этого результата, а также вклад кандидата в этот результат. Менеджер кандидата же должен всех напрячь, и убедиться, что на все эти вопросы есть нужные ответы.
Меня часто спрашивают, что делать, если артефакты собрать сложно? Кандидат что-то отрефакторил, ну и что тут измеришь? Во-первых, если есть коллега-признанный эксперт в этой системе, то его фидбэк -- это уже вторая половина необходимых артефактов. Но на одних словах не выедешь, действительно нужна еще первая половина. Но тут все максимально просто: если просто ваш пулл реквест сделал жизнь кучи людей проще, то он и есть необходимый артефакт, подтверждающий проделанную работу. Чтобы выглядеть совсем хорошо, можно приложить статистику вызовов вашего кода командами тех коллег, которые подтверждают важность этой работы.
Инструмент 3: артефакты
Большинство пакетов при чтении вызывает мысль: ууух, понаписал-то! Каждый норовит описать себя супергероем. Настоящего супергероя же отличает одна критически важная деталь -- пруфы. Каждый факт нужно подтверждать таким пруфом, которые еще называют артефактами. Имплементировал фичу? Прикрепи PR. Придумал дизайн? Прикрепи дизайн документ. Пишешь, что фича была важна? Прикрепи оживленные дискуссии. Пишешь, что поднял метрики? Прикрепи графики (а еще лучше ссылки на систему мониторинга). Пишешь, что починил критический баг? Прикрепи пользовательские жалобы. Вся информация, которая не подкреплена артефактами, считается hearsay, и, в теории, не учитывается при принятии решения. На практике же, сбор пруфов ляжет на плечи вашего менеджера, причем в кратчайшие сроки, пока заседают комитеты. Стоит ли удивляться, что он плохо справится с этой задачей.
Разумеется, чтобы прикреплять артефакты, нужно собирать артефакты. Это очень удобно делать в баг-трекере: создаешь себе задачу и дампишь в нее все ссылки и важную информацию по мере работы над проектом. А уж список проектов за полгода-год запомнить обычно не составляет труда, хотя можно и создать задачу с задачами.
Собрать артефакты -- простая часть. Вот вы своим улучшением серверного фреймворка уменьшили p90 latency на 10% на всех серверных приложениях вашей команды. Сделали скриншоты метрик latency "до" и "после", красиво показав снижение в момент деплоя вашего изменения. Сделали еще скриншот долгосрочной стабильности новых значений в течении недели. И уже потираете руки, как вас отблагодарят за это бонусом! Однако, рано радоваться. Да, вы собрали артефакты, подтверждающие ваше заявление об улучшении. Но вы не собрали самого главного артефакта, который дает ответ на вопрос: и чо?
Невозможно отрицать, что снижение p90 latency на 10% -- это улучшение. Но есть не менее важный второй вопрос: а насколько это лучше? Если вы разрабатываете рекламную платформу с 1M QPS, то это революционная технология. А если batch сервис, который вызывается раз в неделю, то это эквивалент сэкономленных пяти центов в год. Вторая половина артефактов должна подтвердить, что ваши улучшения действительно полезны, и насколько. Как это сделать? Пока не изобретен объективный прибор, измеряющий пользу, для этого мы пользуемся коллективным мнением более опытных коллег. Иначе говоря, пользу подтверждает артефакт под названием peer feedback. Вы просите коллег, которые считаются экспертами в том деле, в котором вы считаете, что принесли пользу, подтвердить и квантифицировать эту пользу. Да-да, комментарии от коллег собираются исключительно для решения этой задачи. Написание коллегами хвалебных поэм кандидату совершенно бесполезно, и игнорируется при принятии решений. В фидбэке должно быть написано: "признанный эксперт X в домене Y подтвердил, что достигнутый кандидатом результат Z в домене Y действительно важен и сложен на уровень L".
Итого, кандидат должен предоставить артефакты, подтверждающие достижение результата; коллега-эксперт должен предоставить артефакт (peer feedback), подтверждающий ценность и сложность этого результата, а также вклад кандидата в этот результат. Менеджер кандидата же должен всех напрячь, и убедиться, что на все эти вопросы есть нужные ответы.
Меня часто спрашивают, что делать, если артефакты собрать сложно? Кандидат что-то отрефакторил, ну и что тут измеришь? Во-первых, если есть коллега-признанный эксперт в этой системе, то его фидбэк -- это уже вторая половина необходимых артефактов. Но на одних словах не выедешь, действительно нужна еще первая половина. Но тут все максимально просто: если просто ваш пулл реквест сделал жизнь кучи людей проще, то он и есть необходимый артефакт, подтверждающий проделанную работу. Чтобы выглядеть совсем хорошо, можно приложить статистику вызовов вашего кода командами тех коллег, которые подтверждают важность этой работы.
Forwarded from DeepSchool
Детекторы текста на основе трансформеров
В новой статье из цикла про OCR мы погрузимся в задачу детекции текста и познакомимся с решениями на базе трансформеров.
Сегодня мы узнаем:
- какие актуальные бенчмарки существуют для задачи детекции текста
- почему первый трансформерный детектор DETR не подходит для детекции текста
- какие изменения в архитектуре детектора помогли получить SOTA-результаты на актуальных Scene Text Detection датасетах
Читайте новую статью по ссылке: https://deepschool-pro.notion.site/a1f2b9a395844218977e1c95bac85d5e?pvs=4
В новой статье из цикла про OCR мы погрузимся в задачу детекции текста и познакомимся с решениями на базе трансформеров.
Сегодня мы узнаем:
- какие актуальные бенчмарки существуют для задачи детекции текста
- почему первый трансформерный детектор DETR не подходит для детекции текста
- какие изменения в архитектуре детектора помогли получить SOTA-результаты на актуальных Scene Text Detection датасетах
Читайте новую статью по ссылке: https://deepschool-pro.notion.site/a1f2b9a395844218977e1c95bac85d5e?pvs=4
deepschool-pro on Notion
Детекторы текста на основе трансформеров | Notion
Автор: Булат Бадамшин
Forwarded from LLM под капотом
Самый частый комментарий про исходники решения - победителя Enterprise RAG Challenge звучит примерно так:
Я и сам удивился. Не ожидал, что checklists в сочетании со structured outputs - это настолько мощная связка, что может вытягивать сразу десятки-сотни сущностей из документа за раз.
Удивление было уже давно, целый месяц назад (это вечность по современным меркам 😂). А сейчас уже в ряде проектов у нас сложные пайплайны переделаны под эту связку. Сложными они были раньше, теперь скучные, и это хорошо.
Основная сложность теперь не в написании кода, а в написании такого дерева Structured Output объектов, чтобы оно работало как Checklist, заполняя который последовательно, мы приходим к правильным выводам.
Получается прямо захардкоженный Chain-of-thought, который выполняется одним запросом! Причем в нем можно сразу закладывать ветвления и выделять места для дополнительных рассуждений (см ниже).
Поэтому я сейчас всех консультируемых клиентов с подходящими кейсами тороплю - пробуйте эту связку. Времени она тратит немного, а вот разработку может сократить заметно. Ну и код становится скучным и эффективным. Все, как мы любим.
Пара подсказок сразу:
(1) Не используем function calling syntax для передачи structured output, а передаем response_format
(2) gpt-4o-2024-08-06 работает хорошо. Вроде даже на Azure она уже есть со structured output.
(3) порядок полей очень важен! Они заполняются последовательно. Сначала можно ставить наводящие вопросы или даже давать место для размышлений (например, List[ThinkStep]).
(4) Там, где нужно делать классификацию, используем Literal. Опциональные поля помечаем как Optional, используем смело Dict/List. Ну и вообще знакомимся с фишками из Typing, которые поддерживает OpenAI API.
(5) Optional + вложенный класс - это возможность для GPT в рамках для Chain-of-thought пройтись по опциональной ветке размышлений. Еще есть anyOf, но так далеко с программированием на constrained decoding автомате я пока не заходил 😁
(6) Там, где важен формат ответа, ставим описание и примеры в Field. Это GPT тоже увидит. Можно повторить в названии и в описании. Например:
Понятно, что подход не универсальный. Но в продуктовых задачах для бизнеса такие самодельные ChainOfThought могут решать очень много задач одним запросом.
Тогда получится мой любимый вид продукта с LLM под капотом - когда снаружи он работает на одном уровне с передовыми решениями своего сектора, а то и лучше. Но у него есть маленький секрет - вместо монструозно сложной конструкции из кучи разных технологий (RAG/LangChain/Hybrid search/Agents итп) там просто пара простых и эффективных использований LLM. В итоге AI кода в решении - 5%, а все остальные 95% - это обычные интеграции, интерфейсы.
И такие типы продуктов очень важны для маленьких компаний и стартапов. При необходимости роста не нужно искать и нанимать редких ML специалистов. Код же простой и он на 95% обычен. Тут нужно искать обычных Front-End, Back-End и Full-stack итп. И нанять их можно будет сильно проще, т.к. зовут их не в обычный продукт, а в модный LLM-driven. Выигрывают от этого все.
Только вчера фаундер одного MedTech стартапа сказал, что после такого описания (с приоритизацией кейсов под этот паттерн) у него стратегия развития поменялась кардинально. И теперь pre-seed раунд на пару миллионов евро не выглядит недостижимым.
В общем, паттерн простой и мощный. Особенно, если приоритизировать кейсы, где он сработает хорошо (такие есть в каждой отрасли), а конкурентам оставлять более сложные.
Ваш, @llm_under_hood 🤗
PS: Я писал раньше про кейс с новой AI Platform для клиента. И он тоже теперь сильно использует этот паттерн на "одну кружку чая".
Заварил чайник, чтобы сесть разобраться в исходниках. К концу первой кружки удивился, что так мало кода.
Я и сам удивился. Не ожидал, что checklists в сочетании со structured outputs - это настолько мощная связка, что может вытягивать сразу десятки-сотни сущностей из документа за раз.
Удивление было уже давно, целый месяц назад (это вечность по современным меркам 😂). А сейчас уже в ряде проектов у нас сложные пайплайны переделаны под эту связку. Сложными они были раньше, теперь скучные, и это хорошо.
Основная сложность теперь не в написании кода, а в написании такого дерева Structured Output объектов, чтобы оно работало как Checklist, заполняя который последовательно, мы приходим к правильным выводам.
Получается прямо захардкоженный Chain-of-thought, который выполняется одним запросом! Причем в нем можно сразу закладывать ветвления и выделять места для дополнительных рассуждений (см ниже).
Поэтому я сейчас всех консультируемых клиентов с подходящими кейсами тороплю - пробуйте эту связку. Времени она тратит немного, а вот разработку может сократить заметно. Ну и код становится скучным и эффективным. Все, как мы любим.
Пара подсказок сразу:
response = client.beta.chat.completions.parse(
model="gpt-4o-2024-08-06",
messages=messages,
response_format=ChainOfThoughtPydanticClass
)
(1) Не используем function calling syntax для передачи structured output, а передаем response_format
(2) gpt-4o-2024-08-06 работает хорошо. Вроде даже на Azure она уже есть со structured output.
(3) порядок полей очень важен! Они заполняются последовательно. Сначала можно ставить наводящие вопросы или даже давать место для размышлений (например, List[ThinkStep]).
(4) Там, где нужно делать классификацию, используем Literal. Опциональные поля помечаем как Optional, используем смело Dict/List. Ну и вообще знакомимся с фишками из Typing, которые поддерживает OpenAI API.
(5) Optional + вложенный класс - это возможность для GPT в рамках для Chain-of-thought пройтись по опциональной ветке размышлений. Еще есть anyOf, но так далеко с программированием на constrained decoding автомате я пока не заходил 😁
(6) Там, где важен формат ответа, ставим описание и примеры в Field. Это GPT тоже увидит. Можно повторить в названии и в описании. Например:
class Size(BaseModel):
width: float
height: float
size_inches: Optional[Size] = Field(None, description="Dimensions in inches (width, length)")
Понятно, что подход не универсальный. Но в продуктовых задачах для бизнеса такие самодельные ChainOfThought могут решать очень много задач одним запросом.
Тогда получится мой любимый вид продукта с LLM под капотом - когда снаружи он работает на одном уровне с передовыми решениями своего сектора, а то и лучше. Но у него есть маленький секрет - вместо монструозно сложной конструкции из кучи разных технологий (RAG/LangChain/Hybrid search/Agents итп) там просто пара простых и эффективных использований LLM. В итоге AI кода в решении - 5%, а все остальные 95% - это обычные интеграции, интерфейсы.
И такие типы продуктов очень важны для маленьких компаний и стартапов. При необходимости роста не нужно искать и нанимать редких ML специалистов. Код же простой и он на 95% обычен. Тут нужно искать обычных Front-End, Back-End и Full-stack итп. И нанять их можно будет сильно проще, т.к. зовут их не в обычный продукт, а в модный LLM-driven. Выигрывают от этого все.
Только вчера фаундер одного MedTech стартапа сказал, что после такого описания (с приоритизацией кейсов под этот паттерн) у него стратегия развития поменялась кардинально. И теперь pre-seed раунд на пару миллионов евро не выглядит недостижимым.
В общем, паттерн простой и мощный. Особенно, если приоритизировать кейсы, где он сработает хорошо (такие есть в каждой отрасли), а конкурентам оставлять более сложные.
Ваш, @llm_under_hood 🤗
PS: Я писал раньше про кейс с новой AI Platform для клиента. И он тоже теперь сильно использует этот паттерн на "одну кружку чая".
Forwarded from LLM под капотом
OpenAI Swarm - пример мультиагентной системы
OpenAI написали целую статью про организацию агентов и открыли небольшой фреймворк с примерами - Swarm.
Под капотом нет ничего сверхъестественного. Каждый агент - это своя небольшая рутина с собственным контекстом и набором инструментов.
Для красоты они еще добавляют TriageAgent, который может переключать между нужными агентами:
Под капотом простой код, который конвертирует описания активных агентов в промпты, а все переключения между агентами и вызовы их инструментов упаковываются как вызовы стандартных OpenAI tools. В методичке все очень хорошо расписано, а сам код можно посмотреть на Github.
Концепция агентов - простых функций, со своим контекстом и набором инструментов работает очень хорошо. Помните, я в Марте писал про AI Ассистента для международной компании?
Там технически была как раз такая реализация, я построил Knowledge Map для продукта в виде структуры агентов и инструментов, которые необходимы для обработки запросов пользователей.
У каких-то агентов были инструменты в виде FTS поиска, какие-то знали, в каких папках искать, у третьих в контекст был встроен FAQ. А на входе стоял Triage Agent. Но тогда я еще не умел пользоваться tools/structured output, и в коде было много ненужных промптов и костылей. Сейчас это делается еще проще.
А как в ассистенте заранее знать, какие будут вопросы, чтобы подготовить армию агентов? Да просто смотреть на предметную область и задавать вопросы! В своем примере (который основывается на куче опыта) ребята из OpenAI же откуда-то узнали, что нужен TriageAgent/RepairsAgent/SaleAssistantAgent и RefundAgent?
(на самом деле паттерны повторяются из компании в компанию аналогично тому, как в компаниях повторяются должности и организационные структуры)
Кто еще смотрел этот код? Что думаете?
Ваш, @llm_under_hood 🤗
OpenAI написали целую статью про организацию агентов и открыли небольшой фреймворк с примерами - Swarm.
Под капотом нет ничего сверхъестественного. Каждый агент - это своя небольшая рутина с собственным контекстом и набором инструментов.
refund_agent = Agent(
name="Refund Agent",
instructions="You are a refund agent. Help the user with refunds.",
tools=[execute_refund],
)
def transfer_to_refunds():
return refund_agent
sales_assistant = Agent(
name="Sales Assistant",
instructions="You are a sales assistant. Sell the user a product.",
tools=[place_order],
)
Для красоты они еще добавляют TriageAgent, который может переключать между нужными агентами:
triage_agent = Agent(
name="Triage Agent",
instructions=(
"You are a customer service bot for ACME Inc. "
"Introduce yourself. Always be very brief. "
"Gather information to direct the customer to the right department. "
"But make your questions subtle and natural."
),
tools=[transfer_to_sales_agent, transfer_to_issues_and_repairs, escalate_to_human],
)
Под капотом простой код, который конвертирует описания активных агентов в промпты, а все переключения между агентами и вызовы их инструментов упаковываются как вызовы стандартных OpenAI tools. В методичке все очень хорошо расписано, а сам код можно посмотреть на Github.
Концепция агентов - простых функций, со своим контекстом и набором инструментов работает очень хорошо. Помните, я в Марте писал про AI Ассистента для международной компании?
Там технически была как раз такая реализация, я построил Knowledge Map для продукта в виде структуры агентов и инструментов, которые необходимы для обработки запросов пользователей.
У каких-то агентов были инструменты в виде FTS поиска, какие-то знали, в каких папках искать, у третьих в контекст был встроен FAQ. А на входе стоял Triage Agent. Но тогда я еще не умел пользоваться tools/structured output, и в коде было много ненужных промптов и костылей. Сейчас это делается еще проще.
А как в ассистенте заранее знать, какие будут вопросы, чтобы подготовить армию агентов? Да просто смотреть на предметную область и задавать вопросы! В своем примере (который основывается на куче опыта) ребята из OpenAI же откуда-то узнали, что нужен TriageAgent/RepairsAgent/SaleAssistantAgent и RefundAgent?
(на самом деле паттерны повторяются из компании в компанию аналогично тому, как в компаниях повторяются должности и организационные структуры)
Кто еще смотрел этот код? Что думаете?
Ваш, @llm_under_hood 🤗
Forwarded from Quant Valerian
Founder mode
У Пола Грэма вышел небольшой пост.
Коротко. Инвесторы постоянно советуют основателям компаний использовать стандартные менеджерские подходы, которые зарекомендовали себя. В особенности это касается этапов масштабирования компаний.
И вот чел из Airbnb рассказал, как они послушали этих советов, обосрались, потом стали делать по-своему и теперь у них самый длинный FCF на этом побережье.
Суть вот этого собственного метода в том, что основатель микроменеджит всех и вся. Ну, если быть точнее, то, конечно, только самые важные в данный момент кусочки. Причём, микроменеджмент заключается не в поклёвывании сотрудников, а в том, что чувак лезет разбираться в продукте до последнего винтика. Буквально может прийти к сварщику и выяснять, почему он варит именно этим газом (этот пример я сам придумал).
Что я думаю?
Думаю, что иногда круто работает. Помню, что Маск где-то рассказывал, как он не мог нормальногорокет саентиста главного инженера в SpaceX найти. И ему пришлось самому книжки про ракеты читать, разбираться.
Похожую историю мне рассказывали про Теслу, что Маск там влез к чувакам, которые хотели датчик дождя ставить и сказал, что это нафиг не надо и дорого, пусть камеры дождь детектируют.
Есть и ещё прилично примеров, когда основатель "на раздаче в рестике стоит". И такие компании успешны. Предприниматель видит, где можно оптимизировать, у него максимально широкая картина, видение, стратегия — всё в его голове. Он действительно может придумать какие-то фишки на каждом уровне, где разберётся. Так что, может это и работает, не знаю.
Зато могу представить и минусы такого подхода, особенно, если ты не основатель, но решил "act as an owner", так же HR'ы учили, да?))
Во-первых, это требует охренительно много времени — разбираться во всём. Тебе за это не платят (ну, разве что ты относительно крупный акционер).
Во-вторых, если ты наёмный сотрудник, то скорее всего тебя наняли закрывать определенную область. Если ты будешь учить электриков крутить шурупы отверткой, то скорее всего вместо тебя работать будет некому, там что-то просыпется, вреда будет больше, чем пользы.
В-третьих, ты ж не основатель! У тебя в голове нет вот этих всех кусочков паззла. Ещё, вероятно, у тебя мозги работают не так, как у предпринимателя — не велик шанс, что даже с полной картиной стратегии и видения компании, ты что-то там придумаешь эдакое.
В-четвертых, если ты наёмный менеджер, лезешь через голову своих директов к непосредственным исполнителям, то это ломает иерархию. Ты подрываешь доверие людей к их начальнику (своему репорту). Ты демотивируешь их начальника (своего репорта). Ты путаешь карты (меня это больше всего бесит) — руководитель попросил одно, думает, что оно там делается, тут пришел ты, всё поменял, а руководитель живёт в своём маня-мире, получается.
Когда это делает основатель, оно воспринимается как-то по-другому. Не могу вербализовать, в чем разница, но чувствую, что она есть.
Тем не менее, думаю, что менеджеру тоже было бы полезно понимать, кто, что, как и почему делает у него там в командах. Это как программисту полезно знать устройство ОС и компьютеров, и что там этот фреймворк под капотом делает, когда вот эту аннотацию ставишь.
Короче, там и Грэм в примечании пишет, что наёмным менеджерам не надо так себя вести, и я так считаю (хотя первая интенция была попробовать, когда прочел, да ).
А что думаете вы?
У Пола Грэма вышел небольшой пост.
Коротко. Инвесторы постоянно советуют основателям компаний использовать стандартные менеджерские подходы, которые зарекомендовали себя. В особенности это касается этапов масштабирования компаний.
И вот чел из Airbnb рассказал, как они послушали этих советов, обосрались, потом стали делать по-своему и теперь у них самый длинный FCF на этом побережье.
Суть вот этого собственного метода в том, что основатель микроменеджит всех и вся. Ну, если быть точнее, то, конечно, только самые важные в данный момент кусочки. Причём, микроменеджмент заключается не в поклёвывании сотрудников, а в том, что чувак лезет разбираться в продукте до последнего винтика. Буквально может прийти к сварщику и выяснять, почему он варит именно этим газом (этот пример я сам придумал).
Что я думаю?
Думаю, что иногда круто работает. Помню, что Маск где-то рассказывал, как он не мог нормального
Похожую историю мне рассказывали про Теслу, что Маск там влез к чувакам, которые хотели датчик дождя ставить и сказал, что это нафиг не надо и дорого, пусть камеры дождь детектируют.
Есть и ещё прилично примеров, когда основатель "на раздаче в рестике стоит". И такие компании успешны. Предприниматель видит, где можно оптимизировать, у него максимально широкая картина, видение, стратегия — всё в его голове. Он действительно может придумать какие-то фишки на каждом уровне, где разберётся. Так что, может это и работает, не знаю.
Зато могу представить и минусы такого подхода, особенно, если ты не основатель, но решил "act as an owner", так же HR'ы учили, да?))
Во-первых, это требует охренительно много времени — разбираться во всём. Тебе за это не платят (ну, разве что ты относительно крупный акционер).
Во-вторых, если ты наёмный сотрудник, то скорее всего тебя наняли закрывать определенную область. Если ты будешь учить электриков крутить шурупы отверткой, то скорее всего вместо тебя работать будет некому, там что-то просыпется, вреда будет больше, чем пользы.
В-третьих, ты ж не основатель! У тебя в голове нет вот этих всех кусочков паззла. Ещё, вероятно, у тебя мозги работают не так, как у предпринимателя — не велик шанс, что даже с полной картиной стратегии и видения компании, ты что-то там придумаешь эдакое.
В-четвертых, если ты наёмный менеджер, лезешь через голову своих директов к непосредственным исполнителям, то это ломает иерархию. Ты подрываешь доверие людей к их начальнику (своему репорту). Ты демотивируешь их начальника (своего репорта). Ты путаешь карты (меня это больше всего бесит) — руководитель попросил одно, думает, что оно там делается, тут пришел ты, всё поменял, а руководитель живёт в своём маня-мире, получается.
Когда это делает основатель, оно воспринимается как-то по-другому. Не могу вербализовать, в чем разница, но чувствую, что она есть.
Тем не менее, думаю, что менеджеру тоже было бы полезно понимать, кто, что, как и почему делает у него там в командах. Это как программисту полезно знать устройство ОС и компьютеров, и что там этот фреймворк под капотом делает, когда вот эту аннотацию ставишь.
Короче, там и Грэм в примечании пишет, что наёмным менеджерам не надо так себя вести, и я так считаю (
А что думаете вы?
Forwarded from DevFM
When to write strategy, and how much?
Отличная статья Will Larson. Она посвящена созданию стратегии в инженерной команде с акцентом на выборе подходящего момента для её написания, определении оптимального объёма и способе внедрения.
В самом начале автор рассуждает о моментах, когда работа над стратегией действительно оправдана, таких как конфликт между командами или важные кадровые изменения, и объясняет, что не всегда правильным решением является создание стратегии "здесь и сейчас". Автор предлагает рассматривать три стратегических состояния: глобально согласованное, частично согласованное внутри команд и несогласованное, указывая, что разработка стратегии наиболее актуальна для ситуаций, когда команда находится во втором или третьем состоянии. Кроме того, если ситуация в компании ухудшается, но состояние стратегий ещё приемлемо, это может стать стимулом к началу работы над ними.
Следующим рассматривается вопрос оптимального количества стратегий. Автор рекомендует ограничивать количество одновременно разрабатываемых стратегий одной или двумя, чтобы обеспечить их успешное внедрение и избежать перегрузки организации. При этом подчеркивается важность постепенного роста стратегий и гибкого видения конечного результата, которое поддерживает принятие мелких шагов. На примере Uber: в какой-то момент возникла проблема надёжности сервисов и скорости их разработки. Для её решения была создана стратегия, направленная на обеспечение безболезненного деплоя и функционирования сервисов. Реализация этой стратегии постепенно привела к решению более глобальной исходной проблемы.
Далее самое интересное. Для внедрения стратегии нужно учитывать масштаб внедрения (команда или вся организация) и стиль изложения стратерии: запретительный (proscriptive, пример: "блокировать MR, если код не прошёл линтеры") или разрешительный (permissive, пример: "давайте использовать линтеры, вот основные правила, в каждой команде можно кастомизировать под себя"). Чем больше масштаб внедрения, например, на уровне всей компании, тем больше разрешительных пунктов должно быть. Иначе вряд ли стратегию получится внедрить.
Немаловажный момент, на который обращает внимание автор – оценка эффективности стратегии, а также её влияние на принятие различных решений.
Статья любопытная, как и многие другие от этого автора :)
#edu #systemdesign
Отличная статья Will Larson. Она посвящена созданию стратегии в инженерной команде с акцентом на выборе подходящего момента для её написания, определении оптимального объёма и способе внедрения.
В самом начале автор рассуждает о моментах, когда работа над стратегией действительно оправдана, таких как конфликт между командами или важные кадровые изменения, и объясняет, что не всегда правильным решением является создание стратегии "здесь и сейчас". Автор предлагает рассматривать три стратегических состояния: глобально согласованное, частично согласованное внутри команд и несогласованное, указывая, что разработка стратегии наиболее актуальна для ситуаций, когда команда находится во втором или третьем состоянии. Кроме того, если ситуация в компании ухудшается, но состояние стратегий ещё приемлемо, это может стать стимулом к началу работы над ними.
Следующим рассматривается вопрос оптимального количества стратегий. Автор рекомендует ограничивать количество одновременно разрабатываемых стратегий одной или двумя, чтобы обеспечить их успешное внедрение и избежать перегрузки организации. При этом подчеркивается важность постепенного роста стратегий и гибкого видения конечного результата, которое поддерживает принятие мелких шагов. На примере Uber: в какой-то момент возникла проблема надёжности сервисов и скорости их разработки. Для её решения была создана стратегия, направленная на обеспечение безболезненного деплоя и функционирования сервисов. Реализация этой стратегии постепенно привела к решению более глобальной исходной проблемы.
Далее самое интересное. Для внедрения стратегии нужно учитывать масштаб внедрения (команда или вся организация) и стиль изложения стратерии: запретительный (proscriptive, пример: "блокировать MR, если код не прошёл линтеры") или разрешительный (permissive, пример: "давайте использовать линтеры, вот основные правила, в каждой команде можно кастомизировать под себя"). Чем больше масштаб внедрения, например, на уровне всей компании, тем больше разрешительных пунктов должно быть. Иначе вряд ли стратегию получится внедрить.
Немаловажный момент, на который обращает внимание автор – оценка эффективности стратегии, а также её влияние на принятие различных решений.
Статья любопытная, как и многие другие от этого автора :)
#edu #systemdesign
Lethain
When to write strategy, and how much?
Even if you believe that strategy is generally useful,
it is difficult to decide that today is the day to start writing engineering strategy.
When you do start writing strategy, it’s easy to write so much strategy that
your organization is overwhelmed and…
it is difficult to decide that today is the day to start writing engineering strategy.
When you do start writing strategy, it’s easy to write so much strategy that
your organization is overwhelmed and…
Forwarded from adapt compete evolve or die
Эволюция ранних пабликов каггл:
2018 год: простая модель на 3 день
2020 год: oof модель + самоусреднение по фолдам на 3 день как стандарт, moёn
сейчас: ансамбль моделей по фолдам, с подбором весов на 3 день.
личная эволюция:
2017 год: 15 простых моделей на 3 день, среднее на лидерборде
2020 год: 2-уровневый стек сеток деревом на 3 день
2022 год: одна сетка по фолдам к концу соревнования
сейчас: отправляю эвристики без моделей спустя полтора месяца после начала соревнования
2018 год: простая модель на 3 день
2020 год: oof модель + самоусреднение по фолдам на 3 день как стандарт, moёn
сейчас: ансамбль моделей по фолдам, с подбором весов на 3 день.
личная эволюция:
2017 год: 15 простых моделей на 3 день, среднее на лидерборде
2020 год: 2-уровневый стек сеток деревом на 3 день
2022 год: одна сетка по фолдам к концу соревнования
сейчас: отправляю эвристики без моделей спустя полтора месяца после начала соревнования
Forwarded from Quant Valerian
Про навыки
В чате идёт обсуждение навыков low latency программирования и особенностей позиций в HFT фирмах. Имею кое-что сказать.
Мои специальные навыки начали развиваться в Дойче Банке.
Как сейчас помню, мне пришло письмо от рекрутинга с описанием вакансии, где требованиям были три года опыта и умение в low latency программирование на java. Я тогда сидел в Долгопрудном, в одном из корпусов Физтеха, заваривал в стакане тай пин хоу куй и деплоил на коммунальный веблоджик свои потуги. Я прочитал имейл с вакансией, тяжело вздохнул и закрыл вкладку.
Вообще-то, мне ОЧЕНЬ хотелось в ДБ. Там какие-то крутые штуки делают, low latency, gc-free, какой-то кнокаренси крутой. А у меня тут мрак с ejb 2, в котором я никак не могу толком разобраться. Только и остаётся, что читать статьи про перфоманс и пейперы про лок-фри алгоритмы.
Звонок. Рекрутер из дойче спрашивает, видел ли я вакансию. Конечно, видел, но я не подхожу: у меня даже банально трёх лет опыта нет, не то, что low latency там какие-то... Да это все не важно! Попробуйте, ничего не теряете.
А чо, так можно было?!
Сажусь на электричку с Новодачной до Беговой, подхожу к Nordstar. Эта башня из стекла и бетона вблизи производит впечатление! Я же сейчас в небоскрёб зайду!
В лифте закладывает уши, со временем привыкаешь.
Два молодых парня в переговорке просят меня рассказать, где тут ошибка в конкарент программе, как починить. Потом написать лок-фри стек. Судя по всему, они сами не больно-то опытные в этом деле, делаем неудачный заход, удивляемся вместе, переписываем по классике, без выпендрежа. А как в жвм код исполняется? А какие есть и как работают алгоритмы сборки мусора?
Выхожу измотанным. В общагу. Температура 37.5. Рекрутер пишет, что я прошёл.
Потом собесы, собесы, собесы с боссами. Наконец, я выхожу.
Вот моя новая команда. Эти ребята написали на сях машину для маркет-мейкинга опционов. Оказалось, что она настолько быстрая, что в алгоритм на краях волы добавили специально ожидание, пока первым выставится кто-то другой (иначе adverse selection).
А вон тот парень сделал проект по маркет дате, лучший в округе сервис по скорости. Будет моим тех лидом.
И мы писали и писали код, читали статьи и книги, собирали метрики с прода, тюнили gc, отдали фид какому-то азиатскому роботу, потом отдали фид дойчевской лучшей торговой машинке.
О, да у нас в пике 2к рпс! А мы держим SLO по латенси! Ещё и ставили четыре копии машинки в разных ДЦ — у нас хай лоад!
Показалось, что на одной машинке я научился делать уже все. Начал читать про распределённые системы. Ох уж этот paxos... Так, что там у нас: gfs, f-1, dynamo, spanner — круто, конечно, технологично, НО НЕ ТО, ЧТО У НАС. Вот, где реальные задачи! Пацаны вон в соседнем отделе на джаве коннектор писали, там 60мкс 99%%, а вы консистент хешинг и crdt мне тут заливаете.
Ушел в Револют. Так, ну сейчас посмотрим на ваш хайлоад, как никак 10 миллионов пользователей отмечаем! Умещаемся в один партиционированный постгрес. Пффф! Вот в трейдинге было! А тут...
Иду писать торговые приложения. Микробенчмарки, микрооптимизации, ipc, udp. Маркет дата обновляется с очень разной частотой, десятки форматов, бэктест система тормозит. Кассандра не вывозит тиковые данные... Какой дурак вообще сюда ее притащил! Кликхаус вроде ничего, другим ещё оперативки из интел оптана. У нас биг дата!
Пришёл в Яндекс. Че у вас тут? Веб сервисы? Пффф, халява! Я ТАКОЕ делал, а тут... Что? Латенси? Сколько сколько? 50 МИЛЛИсекунд? Это разве лоу латенси??
Мдааа, олимпиадники... Щас батя покажет, разойдитесь!
Инцидент. В смысле 40к рпс в одну ручку полилось? Откуда? А че делать? А че рпс-лимитер не режет? Какие бакеты? А почему 40% трафика этого дц на один хост летит? А как переделать? А почему автоматически нельзя это все? Аааа. Аа... АААААААА! Почему постгрес-то не отвечает? В смысле квота на диск кончилась? Чего, какой репак, че за блоат? Ваккум же выключили... А почему коннектов-то не хватает? В смысле ООМ из-за слишком большого документа? Не, подожди, у меня на монге же рид консерн был...
Че-то сложно, короче.
В чате идёт обсуждение навыков low latency программирования и особенностей позиций в HFT фирмах. Имею кое-что сказать.
Мои специальные навыки начали развиваться в Дойче Банке.
Как сейчас помню, мне пришло письмо от рекрутинга с описанием вакансии, где требованиям были три года опыта и умение в low latency программирование на java. Я тогда сидел в Долгопрудном, в одном из корпусов Физтеха, заваривал в стакане тай пин хоу куй и деплоил на коммунальный веблоджик свои потуги. Я прочитал имейл с вакансией, тяжело вздохнул и закрыл вкладку.
Вообще-то, мне ОЧЕНЬ хотелось в ДБ. Там какие-то крутые штуки делают, low latency, gc-free, какой-то кнокаренси крутой. А у меня тут мрак с ejb 2, в котором я никак не могу толком разобраться. Только и остаётся, что читать статьи про перфоманс и пейперы про лок-фри алгоритмы.
Звонок. Рекрутер из дойче спрашивает, видел ли я вакансию. Конечно, видел, но я не подхожу: у меня даже банально трёх лет опыта нет, не то, что low latency там какие-то... Да это все не важно! Попробуйте, ничего не теряете.
А чо, так можно было?!
Сажусь на электричку с Новодачной до Беговой, подхожу к Nordstar. Эта башня из стекла и бетона вблизи производит впечатление! Я же сейчас в небоскрёб зайду!
В лифте закладывает уши, со временем привыкаешь.
Два молодых парня в переговорке просят меня рассказать, где тут ошибка в конкарент программе, как починить. Потом написать лок-фри стек. Судя по всему, они сами не больно-то опытные в этом деле, делаем неудачный заход, удивляемся вместе, переписываем по классике, без выпендрежа. А как в жвм код исполняется? А какие есть и как работают алгоритмы сборки мусора?
Выхожу измотанным. В общагу. Температура 37.5. Рекрутер пишет, что я прошёл.
Потом собесы, собесы, собесы с боссами. Наконец, я выхожу.
Вот моя новая команда. Эти ребята написали на сях машину для маркет-мейкинга опционов. Оказалось, что она настолько быстрая, что в алгоритм на краях волы добавили специально ожидание, пока первым выставится кто-то другой (иначе adverse selection).
А вон тот парень сделал проект по маркет дате, лучший в округе сервис по скорости. Будет моим тех лидом.
И мы писали и писали код, читали статьи и книги, собирали метрики с прода, тюнили gc, отдали фид какому-то азиатскому роботу, потом отдали фид дойчевской лучшей торговой машинке.
О, да у нас в пике 2к рпс! А мы держим SLO по латенси! Ещё и ставили четыре копии машинки в разных ДЦ — у нас хай лоад!
Показалось, что на одной машинке я научился делать уже все. Начал читать про распределённые системы. Ох уж этот paxos... Так, что там у нас: gfs, f-1, dynamo, spanner — круто, конечно, технологично, НО НЕ ТО, ЧТО У НАС. Вот, где реальные задачи! Пацаны вон в соседнем отделе на джаве коннектор писали, там 60мкс 99%%, а вы консистент хешинг и crdt мне тут заливаете.
Ушел в Револют. Так, ну сейчас посмотрим на ваш хайлоад, как никак 10 миллионов пользователей отмечаем! Умещаемся в один партиционированный постгрес. Пффф! Вот в трейдинге было! А тут...
Иду писать торговые приложения. Микробенчмарки, микрооптимизации, ipc, udp. Маркет дата обновляется с очень разной частотой, десятки форматов, бэктест система тормозит. Кассандра не вывозит тиковые данные... Какой дурак вообще сюда ее притащил! Кликхаус вроде ничего, другим ещё оперативки из интел оптана. У нас биг дата!
Пришёл в Яндекс. Че у вас тут? Веб сервисы? Пффф, халява! Я ТАКОЕ делал, а тут... Что? Латенси? Сколько сколько? 50 МИЛЛИсекунд? Это разве лоу латенси??
Мдааа, олимпиадники... Щас батя покажет, разойдитесь!
Инцидент. В смысле 40к рпс в одну ручку полилось? Откуда? А че делать? А че рпс-лимитер не режет? Какие бакеты? А почему 40% трафика этого дц на один хост летит? А как переделать? А почему автоматически нельзя это все? Аааа. Аа... АААААААА! Почему постгрес-то не отвечает? В смысле квота на диск кончилась? Чего, какой репак, че за блоат? Ваккум же выключили... А почему коннектов-то не хватает? В смысле ООМ из-за слишком большого документа? Не, подожди, у меня на монге же рид консерн был...
Че-то сложно, короче.
Forwarded from Quant Valerian
А потом заказ железа: цпу, память, диски, сеть, юниты хранения, балансеры, базы, очереди, кэши, тиры надёжности, лимитеры, фаерволы. Практика что-то сильно разошлась с той теорией, которой я в своё время поглотил не мало.
Прохавал на инцидентах множество контринтуитивных практик. Начал проводить систем дизайн секции.
Теперь я прям хорошо вижу тех, кто не имеет опыта с распределёнными нагруженными системами. Видно тех, кто ботал теорию, но не нюхал пороху. Видно тех, кто теорию по верхам, но руками собирал пайплайны. Очень хорошо видно тех, кому проектировать такие системы впервой.
Я это к чему. Лоу латенси навыки действительно довольно специфичны и сложны. И не так много компаний, которым эти навыки нужны. Но хай лоад системы оказались нифига не проще и, на самом деле, не сильно мне специфичны. Не так много компаний в мире нуждаются в том, чтобы держать сотни тысяч рпс при отказе дата центра.
Прохавал на инцидентах множество контринтуитивных практик. Начал проводить систем дизайн секции.
Теперь я прям хорошо вижу тех, кто не имеет опыта с распределёнными нагруженными системами. Видно тех, кто ботал теорию, но не нюхал пороху. Видно тех, кто теорию по верхам, но руками собирал пайплайны. Очень хорошо видно тех, кому проектировать такие системы впервой.
Я это к чему. Лоу латенси навыки действительно довольно специфичны и сложны. И не так много компаний, которым эти навыки нужны. Но хай лоад системы оказались нифига не проще и, на самом деле, не сильно мне специфичны. Не так много компаний в мире нуждаются в том, чтобы держать сотни тысяч рпс при отказе дата центра.