В мире больших данных
301 subscribers
47 photos
1 video
5 files
56 links
Полезные заметки о системном анализе в мире больших данных. Если вам интересны Big Data, DWH, SQL и как навести порядок в данных — заглядывайте. Будет интересно и по делу.

Автор: @JuliaMur
Download Telegram
Стратегические вопросы: как видеть общую картину
Фрэнк Сесно "Как узнать всё, что нужно, задавая правильные вопросы". Ч.3

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

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

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

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

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

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

Один из важных уроков этой главы: необходимо настаивать на том, чтобы сложные стратегические вопросы были заданы. Даже если это неудобно. Даже если кажется, что все и так всё понимают.

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

Эти вопросы помогут не утонуть в бесконечных правках и "а давайте ещё вот это добавим". Они держат в голове общую картину и понимание куда мы идём и зачем.

В следующей части автор расскажет об эмпатических вопросах — тех, что помогают понять людей.
#книги #фрэнксесно
4🔥4
Знаете, в чём разница между знаниями, умениями и навыками? Вот вам отличная иллюстрация с котиками, которая объясняет это лучше любых определений 😊 (да-да, нагло переработанная картинка с лошадью)

Сколько бы курсов по ... (подставь нужное) мы ни проходили, сколько бы книг ни читали, мы остаёмся на уровне милого котика из чёрточек до тех пор пока не начинаем что-то делать. Делать что? Брать и писать код, проектировать витрины, строить звездолёты пайплайны, ... Раз за разом пробуя полученные знания применять.

Знания — это базовый минимум. Прочитал статью по Airflow? Прошёл курс по Spark? Изучил паттерны дата-моделирования? Отлично! Но пока сам не откроешь IDE и не напишешь первые Х строк, ты так и не поймёшь, как всё работает на практике. В век ИИ и легкодоступности знания (как набор фактов) так вообще несколько обесценились.

Умения — появляются с практикой. Когда ты уже что-то делаешь. Да, может 70% времени гуглишь болтаешь с gpt, совершаешь тысячи нелепых ошибок и (вдруг) постоянно заглядываешь в документацию. Раз за разом натыкаясь на проблемы, ты учишься их решать, тем самым выходя за рамки "знаний" из книжки или курса. То есть на этом этапе ты уже сталкиваешься с проблемами и заставляешь мозг думать. Если выйти за рамки кода, то здесь также помогает обсуждение и проговаривание в группе и с экспертами. Важно заставить мозг не просто принимать и запоминать факты, но и применять их, изучать и смотреть под разными углами.

А вот навыки — это когда всё отточено до автоматизма. Видишь задачу и уже предполагаешь варианты решения, например, знаешь, где могут быть узкие места запроса ещё до его запуска. Проектируешь модели данных с заделом на будущее, так что не придётся переделывать через месяц. То, что раньше заняло бы день, решаешь за час. Просто потому что руки уже знают, что делать. Как почистить зубы перед сном)

Чтобы знания и умения превратились в навык, нужно пробовать снова и снова, пока это не станет привычным действием (снова это набившее оскомину Повторение — мать учения). Навык появляется только со временем и практикой (и развитием критического мышления, конечно же). И только с приходом навыков мы выходим на путь профессионализма ↗️

Тут есть и задел на размышления, все ли умения превращаются в навыки и все ли навыки "качественные". Ведь можно оттачить до автоматизма и некачественные действия, считая их правильными 😈 На мой взгляд корень тут в том, что строить свою базу в любом случае нужно на знаниях. Постепенно углубляя их, чтобы понимать не только HOW, но и WHY. То есть обучение — это не прямая, а циклический бесконечный процесс.

#размышления
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1031
Лучшее - враг хорошего?
или нет ничего более постоянного, чем временное.

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

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

Стремиться к качественным процессам нужно (и, безусловно, обкладывать всё проверками), но не всегда возможно сделать это в моменте и это стоит принять как данность. Какие-то доработки попадут в бэклог из которого никогда не выберутся.

Что думаете на этот счёт?
👍7
Эмпатические вопросы: понять человека, а не только задачу
Фрэнк Сесно "Как узнать всё, что нужно, задавая правильные вопросы". Ч.4

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

Четвёртая глава фокусируется на эмпатических вопросах, которые помогают понять, что заставляет людей действовать, думать, бояться и чувствовать. Такие вопросы идут (по крайней мере должны, в этом секрет) из искреннего интереса к собеседнику, а не какой-то личной выгоды.

Ключевой метод эмпатического подхода — "смена перспективы". То есть мы должны мыслить не "как бы я себя чувствовал на его месте?", а "интересно, что при этом чувствует он?". Это попытка увидеть мир глазами другого человека, понять его образ мысли и эмоции не со стороны собственного мнения.

Сесно описывает несколько техник для установления эмпатического контакта:
1. Начните с общих вопросов.
2. Используйте простые открытые вопросы (например, "Как дела?", "Как ты себя чувствуешь сегодня?"), выбирая темы, в которых собеседник чувствует себя спокойно.
3. Слушайте не только слова, но и язык жестов (ага, и это в мире онлайн-чатиков 😈). Обращайте внимание на тон голоса, язык тела, выражение лица, паузы. Если заметили сильную эмоцию — отреагируйте и задайте сочувственный вопрос: "Что тебя сейчас больше всего беспокоит?".
4. Держите доверительную дистанцию. Проявляйте интерес, но сохраняйте определённую дистанцию, чтобы не судить собеседника и оставаться объективным.
5. "Расскажи больше". Этот простой вопрос-просьбу часто используют терапевты, чтобы побудить людей раскрыться.

Мне кажется, при работе с данными эмпатия особенно важна, когда мы собираем требования, занимаемся приоритезацией задач или разбираемся, почему бизнес недоволен результатом. Эмпатические вопросы помогают понять контекст и мотивацию: "Что тебя беспокоит больше всего?", "Расскажи, как ты сейчас работаешь с этими данными?", "Что для тебя будет идеальным результатом?". То есть такой разговор - это не просто формальный сбор требований, а построение доверия и понимание реальной задачи, которая может отличаться от формулировки в тикете. Никогда не стоит забывать, что мы работаем с людьми )

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

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

#книги #фрэнксесно
👍7
"Системный анализ" — от слова "систематизация" или "система"?

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

Спойлер: системный анализ от слова "система".

В системном анализе мы внедряем сложные вещи, рассматривая их как часть системы. То есть как набор элементов, которые связаны между собой и работают вместе ради какой-то общей цели. Этот не "разложить всё по полочкам" (что как раз ближе к систематизации), а понять как система работает. Какие есть связи, как влияют друг на друга разные компонетны, где есть узкие места.

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

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

Поэтому, кстати, временные решения "на коленке" так больно кусаются 😅 Думаешь "вот тут подправлю", а система-то работает целиком, а не кусочком кода — и вот на завтра в других местах всё посыпалось.

А вы задумывались над этой разницей? Или для вас это было очевидно с самого начала?

#soft_skills #размышления
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6💯33
Вопросы, наводящие мосты: как разговорить того, кто не хочет говорить
Фрэнк Сесно "Как узнать всё, что нужно, задавая правильные вопросов". Ч.5

Вам знакомы ситуации, когда коллега из другой команды на встрече сидит с каменным лицом и отвечает односложно? Тут эмпатические вопросы в лоб не помогут, а могут ещё больше разозлить. Перед нами задачка посложнее — разговорить человека, который не особо хочет с тобой разговаривать.

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

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

Автор описывает несколько условий для успешного "наведения мостов":
- Твёрдо знайте, чего хотите добиться. Поэтому сначала формулируйте цель разговора, а только потом начинаем говорить.
- Избегайте "тревожных кнопок". Не начинаем с обвинений (типа "почему вы до сих пор не предоставили данные?"), иначе человек встанет в оборону, и всё — продуктивного диалога не будет.
- Не обвиняйте, а спрашивайте. Начинайте с того, что беспокоит собеседника, выясняйте причины его действий.
- Демонстрируйте понимание и поддержку. Будьте терпеливы, не торопитесь, выражайте понимание ("да, понимаю, у вас сейчас завал").

Сесно приводит опыт эксперта по оценке угроз, который работает с потенциальными террористами и киллерами (экстремальный случай, но техники везде применимы). Вот три его ключевые методики:
1. Успокаивающие вопросы и "когнитивная лёгкость". Для начала нужно снизить напряжение и перевести мозг собеседника в режим "автопилота", когда он легче принимает решения и раскрывается. Как? Начать разговор с чего-то нейтрального — что не связано напрямую с проблемой. Это расслабляет.

2. Вопросы без вопросительных знаков. Это вопросы-указания: "Расскажи подробнее", "Объясни мне это". Они выражают интерес, но не воспринимаются как допрос. Человек чувствует поддержку, а не давление. Утверждения тоже работают: вместо "Ты специально тянешь время?" лучше "Похоже, у тебя сейчас много задач одновременно".

3. Эхо-вопросы. Это когда ты повторяешь одно важное слово или конец фразы собеседника (тут почти НЛП). Например:
— Я не могу использовать вашу витрину, она вообще не работает!!!!
— Не работает?
— Да, там нет разбивки по регионам, а мне это нужно для отчёта.
И человек сам продолжает объяснять, что именно не так. Простой, но работаюший приём.

Мне кажется, эти техники могут быть полезны и в работе, и в жизни. Вместо прямого "почему вы игнорируете мою задачу?" можно спросить "расскажи, как сейчас идут дела с ...?" или "похоже, у вас сейчас много приоритетов одновременно?". И дальше — слушать и задавать эхо-вопросы.
Да и в жизни это работает не хуже. Когда близкий человек явно чем-то расстроен, но не говорит — можно попробовать не давить ("ну что опять случилось-то?!"), а начать издалека, дав ему пространство для разговора.

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

Работает ли эта история всегда? Мне кажется, есть такая оборона, которую не пробить любыми вопросами 😅 Но учиться и пробовать точно стоит.

#книги #фрэнксесно
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥322
В завершении года совсем не осталось времени и энергии) хочется уже просыпаться как можно позже, неторопясь читать книжки, гулять и заниматься какой-нибудь не важной, но радостной ерундой 🐱🐱🐱 Забавно, как мозг может цепляться за календарные даты, когда ему удобно, ведь по факту 31 декабря не особо отличается, к примеру, от 31 марта.

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

А у вас какие планы на длинные праздники (если вы работаете в РФ)? 😑

P.S. настроение "давайте после НГ" рановато, но уже включилось на полную

#life
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄7
В тему "отсутствия энергии". На днях пожаловалась тренеру, что "твой спорт лишает меня последних сил" 😈 (у меня с детства тяжелые отношения со спортом, но здоровья для теперь стараюсь заниматься регулярно).

А потом пошла и сдала анализы, по которым у меня оказался латентный дефицит железа (в числе прочего). Перед тренером пришлось извиниться 😬 а самой пойти в аптеку, да записаться к врачу.

К чему это всё. Когда вам кажется, что у вас нет сил — причина может быть физической.

Не забывайте делать регулярные чекапы и берегите себя.

#life
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
🎄🎄🎄 не забудьте начать новый год с качественного отдыха 😇

Всем весёлых праздников и хорошего настроения 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
19🎄52
Эти праздники слишком длинные и, если вы не знаете чем заняться и что посмотреть, рекомендую не бежать к успешному-успеху, а отдохнуть и залипнуть в новый сериал от создателя «Во все тяжкие» — Pluribus (на ру «Одна из многих»). Мы посмотрели ещё до праздников на одном дыхании. Это микс научной фантастики, хоррора, роуд-муви и драмы с элементами черного юмора. А для тех, кто работает с данными, есть отдельный бонус — сериал буквально для нас. Ну, в каком-то смысле 😅

Итак, почему да. Когда то Винс Гиллиган заставил меня переживать за учителя химии, варящего мет ☠️ поэтому вопрос смотреть или нет не стоял)

Завязка звучит как типичный зомби-апокалипсис: странный космический сигнал и выведенный на его основе вирус, молниеносно поразивший человечество. А вот дальше начинается странное, заражённые не торопятся превращаться в монстров. Они становятся.. счастливыми. Прямо невыносимо, до приторности счастливыми. И добрыми. А ещё ужасно эффективными. Все они объединяются в коллективный разум, тут же прекращают войны и попутно пытаются решить экологические проблемы.

Но, естественно, заразились все, да не все. Главная героиня — ворчливая писательница с иммунитетом к вирусу. Единственный хмурый человек в море улыбающихся лиц. И вот тут начинается самое вкусное: смотришь и не понимаешь, а кто здесь злодей. Всеобщее счастье, которое отнимает твоё «я» или упрямая тётка, которая портит всем кайф? Играет её Рэа Сихорн — Ким из «Лучше звоните Солу». Гиллиган писал эту роль специально для неё, и она здесь просто огонь 🔥

Ещё меня зацепил темп. Здесь нет экшена, это медленное и вдумчивое кино. В нём много тишины, деталей и долгих сцен. На мой взгляд для праздничного залипания на диване как раз то, что нужно.

При этом я люблю, когда сериал не даёт готовых ответов. А поразмышлять здесь есть о чём.

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

А ещё было особенно забавно ловить параллели. Коллективный разум собирает в себя воспоминания всех поглощённых людей — это же настоящее хранилище данных с единым источником правды, на основе которой он генерит «правильные» ответы и даже идеальных собеседников под предпочтения конкретного человека. Мир в сериале — это человечество после нормализации: эффективное, оптимизированное, усреднённое, не содержащее никаких выбросов и аномалий. Только вот аномалии — это и есть живые люди со своей индивидуальностью.

В общем, рекомендую 🚀

#life
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥2
Первый рабочий день: вспоминаем Git за 2 минуты

Пишешь в терминале git stahs... и понимаешь, что руки что-то помнят, а вот голова пока не очень? 😅

Знакомо? Тогда вот быстрая разминка для тех, кто работает с dbt, airflow или просто хранит SQL-скрипты в репозитории (а если не держите, то это знак начать).

6 полезных git-команд на каждый день:
🔵 git stash / git stash pop
Позволяет временно «отложить» незакоммиченные изменения, переключиться на другую ветку (например, если нужен срочный хотфикс, а коммитить незаконченный код не хочется), а потом вернуть всё обратно через pop. Главное потом не забыть, что и зачем спрятал (тут поможет `git stash list`).

🔵 git commit --amend
Позволяет изменить последний коммит, например, исправить сообщение или добавить забытые файлы. При этом старый коммит заменяется новым — в истории ветки останется один коммит вместо двух. Важно: если коммит уже запушен, после amend понадобится git push --force

🔵 git log --oneline --graph
Выводит историю коммитов в компактном виде с визуализацией веток. Помогает быстро понять, что вообще происходит в репо, когда возвращаешься после перерыва.

🔵 git reflog
История всех действий, даже после reset. Если случилась ситуация "я что-то нажал и оно исчезло" — вам сюда.

🔵 git switch / git restore
Современная замена старому доброму checkout. switch используется для веток, а restore для файлов, так у нас меньше путаницы.

🔵 git diff --staged
Показывает, что именно уйдёт в коммит. Полезно проверить перед тем, как нажимать enter 🤝

Типичный сценарий с stash:
# пилишь фичу, вдруг в чате: "прод лежит, нужны срочные правки!"
git stash -u -m "new feature" # прячем незаконченное
git switch -c hotfix-branch # переключаемся на хотфикс
# ..фиксим баг, коммитим, пушим...
git switch feature-branch # возвращаемся к фиче
git stash pop # достаём отложенные изменения
# продолжаем как ни в чём не бывало


А что вы забыли после длинных выходных?

#git
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥2
Ну что, ребят, как работается после праздников? 😵
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8😁622
Раньше SQL-разработчики жили без оконных функций. Как они выживали 👀? Натолкнулась тут на задачку и хочу с вами её разобрать.

Условие простое: есть таблица с одним столбцом Element (значения A, B, C, D, E, F), нужно добавить колонку ID с числами от 1 до 6. Выглядит просто - пишем ROW_NUMBER() OVER (ORDER BY element) или RANK() .. и идём пить кофе. Но есть нюанс, использование окошек запрещено, у нас на руках только базовый SQL.

Такие задачки любят давать на собеседованиях, потому что они проверяют не знание синтаксиса, а понимание того, как вообще работает SQL под капотом.

А решение на самом деле простое: идея в том, чтобы соединить таблицу саму с собой и для каждого элемента посчитать, сколько элементов идут до него (включая его самого):


SELECT
t1.element,
COUNT(t2.element) AS id
FROM elements t1
JOIN elements t2
ON t1.element >= t2.element
GROUP BY t1.element
ORDER BY id;


Логика такая: для A условию >= A удовлетворяет только сам A, поэтому COUNT = 1. Для B подходят A и B, поэтому COUNT = 2. И так далее.

Ещё один вариант оформления через коррелированный подзапрос (не надо так делать в проде!):

SELECT
element,
(SELECT COUNT(*) FROM elements t2 WHERE t2.element <= t1.element) AS id
FROM elements t1
ORDER BY element;


Подводные камни о которых часто забывают:
Во-первых, без ORDER BY результат недетерминирован — в SQL нет «естественного порядка» строк, это фундамент реляционной теории.
Во-вторых, если в реальных данных будут дубликаты, вы получите одинаковые номера, причем это будет похоже не на чистый RANK, а со сдвигом. А чтобы получить логику DENSE_RANK, придётся использовать COUNT(DISTINCT t2.element).
В-третьих, производительность O(n²) — на больших таблицах это будет очень больно 👾.

Проверьте, self-join работает в 10–25 раз медленнее, чем ROW_NUMBER(). Поэтому в проде для таких задач используем оконные функции. А вот для понимания механики и для собеседований такое решение самое то (но не забываем упомянуть о моментах выше).

А вы встречали подобные задачи на интервью? Какое решение предложили бы?

#sql
Please open Telegram to view this post
VIEW IN TELEGRAM
53👍2🔥1
Заканчивается вторая рабочая неделя, а я всё ещё ощущаю себя примерно так 🫠 Вот так разгрузила голову в праздники 😬

Работаю сейчас над исправлением большой чужой мешанины из кода витрины (в перерывах между asap-задачами), которую не успела доделать в декабре. Вам знакомо это чувство, когда открываешь скрипт и первые минут пятнадцать просто пытаешься понять, что тут происходит и почему оно вообще работает? А потом ещё минут двадцать, почему оно НЕ работает.
Спасает только одно: в декабре, разбирая этот код, я всё документировала, каждую правку и всякие "а, вот почему тут так" или "а это тут зачем?". Сейчас читаю эти записи и благодарю себя 🙏

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

Хороших выходных! Как вы — уже 🚀 или пока 🐢?

#life
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5💯1
0.012% викинга

Давно увлекаюсь генеалогией, и как-то решила сдать ДНК-тест. Захотелось понять, откуда у меня способности кайфовать как от идеально поднявшегося бисквита, так и от часов ковыряния в legacy без потери веры в человечество. Когда открыла результат, почувствовала себя как тот мужик из моей любимой рекламы. Он тоже сдал ДНК-тест и узнал, что на 0.012% викинг. От счастья он хватает меч, вздымает его к небу и рычит так, что сам Один его услышал. И да, спойлер: где-то в глубине веков мои предки по прадеду тоже скандинавы.

Так вот. Ноль целых ноль-ноль-двенадцать процента — ведь это даже не погрешность, по сути это пыль на весах. Но мужик теперь точно ВИКИНГ и попробуй ему это оспорь 😈

И тут ловлю себя на мысли: так мы же с данными часто делаем ровно то же самое. Конверсия выросла на 0.3%? Круто, A/B-тест успешен, катим фичу в прод, пока никто не спросил про статистическую значимость. Метрика чуть дрогнула после релиза? О, корреляция есть, значит точно наша заслуга, презентуем руководству. Выборка из тридцати человек? Да ладно, тренд же виден невооружённым глазом. А то, что через неделю всё вернётся к прежним значениям... ну, это уже будет другой спринт и другие графики. DQ проверка упала? Ну, наверное, порог был слишком строгий для этого источника, ослабим немного и всё позеленеет 👻

Данные-то не врут. А вот мы иногда приходим к ним с готовым ответом и сами ищем, за что зацепиться 😏

Признавайтесь, у кого тоже просыпался внутренний викинг при виде нужной цифры в отчёте? 😉

#life
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7🤡1
Очередная #средамемов и давайте сегодня будут мудрые мемы.
🔥2😁2
В мире больших данных
Photo
Каждый раз, когда кто-то спрашивает, почему дэш ещё не готов, хочется показать эту картинку.

Потому что между "у нас есть данные" и "у нас есть полезный график" лежит бездна, в которой живут не только падающая Kafka и коллега, который решил "чуть поэкспериментиовать" в юпитере. Там ещё обитает легаси-код без документации, написанный людьми, которые давно ушли из компании, и теперь никто не знает, почему в запросе WHERE status != 3. Там API-источник, у которого нет нормальных ключей для отслеживания изменений, зато есть лимиты на запросы и любовь к внезапной смене формата ответа. Там "временный костыль" 2016 года, который теперь стал почему-то критическим компонентом системы 👍 И там же рядом источник, который молча поменял схему данных, потому что "а мы не знали, что вы это используете".

Самое смешное, что к этому хаосу даже привыкаешь. И когда всё вдруг работает без инцидентов, начинаешь нервничать, что может что-то сломалось и просто алерты не дошли? У нас, к слову, на этот случай приходит утренняя отбивка: All done! все процессы отработали, данные обновлены, за ночь ничего не упало. Без неё я бы, наверное, не могла спокойно пить утренний кофе 😅

А у вас какая любимая "мозоль" в мире данных?
Please open Telegram to view this post
VIEW IN TELEGRAM
💯6😁3🔥1
Дисциплина, конечно, прошла мимо меня 😄 в черновиках 1000 и 1 пост, но ни один из них не дописан на уверенные 100% и, соответственно, не запощен.

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

Убедила ли я себя? Честно? Не особо 😀 Но пишу, да и долги по книжным конспектам пора отдавать. Так что.. поехали 🚀

P.S. в тему дисциплины вспомнилось, как много лет играла за дисциплин-приста в WoW, хилила в рейдах как боженька и не знала печали 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
8🏆6🤪3🔥21
Знаете, какая фраза чаще всего дорого обходится компании? "Работает — и ладно" 🥂

Результат есть, да и дашборд вроде выводит корректные данные, какие-то dq проверки отбегали — ну красота же. Но где-то в это время система сканирует 300+ столбцов вместо трёх, разворачивает пятнадцать условий LIKE там, где справилось бы одно регулярное выражение, и три раза читает одну и ту же таблицу, потому что так написалось и на маленьком семпле данных работало шустро. В облаке всё это превращается в чёрную дыру, куда буквально улетают деньги — каждое лишнее сканирование, каждое вычисление прямо в условии JOIN, каждый ненужный DISTINCT тихо утекают кредитами. С on-premise примерно та же история, только счёт приходит очередями, перегруженным сервером и дашбордами, которые "ну грузятся долго, но это норм, мы привыкли".

Спойлер: это не норм 🙂

Сейчас ещё популярна идея, что можно особо не заморачиваться — оптимизатор же умный, а уж ИИ и подавно напишет нормальный производительный код, только вопрос правильно сформулируй. Отчасти это правда (пока у вас запросы на 25 строк). Но понимать, что происходит внутри системы в момент выполнения запроса, всё равно нужно — хотя бы для того, чтобы оценить, что тебе написали, и не тащить в прод красиво выглядящий, но дорогой запрос.

Поэтому оптимизация, за которую я регулярно топлю — это не занудство и не перфекционизм, а базовое понимание механики. Именно оно позволяет не просто писать SQL, а понимать, чего это стоит системе.

А вы доверяете ИИ писать запросы в прод — или всё-таки смотрите, что там внутри? 👀

#sql #dwh
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👀3
Этот мем — точная копия одного рабочего дня, который я, кажется, прожила уже раз двести 😄

Прилетает задача от аналитика: перевести в прод витрину из песочницы. Звучит невинно, ровно до тех пор пока не откроешь sql-файл и не увидишь там две тысячи строк кода без единого комментария, документации и даже намёка на то, зачем здесь этот хитрый self-join и почему применён именно этот фильтр.

Начинаешь погружаться в чужую логику, разбираться, строить гипотезы, проверять, вносить правки (потому что не учли особенности некоторых данных), документировать 👀 но тут прилетает правка поверх старого кода: "Юль, я тут кое-что поправил, берём в работу этот вариант". Потом вторая... потом кто-то выше вообще меняет концепцию, и оказывается, что половину сделанного надо откатить (Галя, у нас отмена!). А ты к этому моменту уже не очень помнишь, с чего вообще начинала, потому что в процессе три раза переписала логику агрегации (спасибо git, который помнит за тебя, конечно).

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

Поэтому в таких задачках половина работы это не SQL, а детективное расследование чужих намерений (иногда своих собственных, что ещё веселее 🙃).

А сколько строк было в вашей самой страшной витрине из песочницы?

#work
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52😁1💯1