Pavel Bukhtik
Pavel Bukhtik
  • Видео 85
  • Просмотров 141 867
8 минусов работы продуктовым аналитиком. Или почему аналитика не для тебя
Я много работаю с людьми, которые хотят стать продуктовыми аналитиками.
И я часто сталкиваюсь с идеализированностью роли такого аналитика - «можно каждый день драйвить продукт инсайтами и влиять на развитие бизнеса».
А кто уже попробовал роль на боевых задачах и столкнулся с реальностью и нюансами, с которыми приходиться бороться каждый день - стремятся найти ту самую идеальную компанию и позицию без минусов.
Вместе с Алексеем Гавриловым, автором Телеграм-канала Only Analyst, мы решили записать видео о нюансах, которые поджидают любого продуктового аналитика на работе. И самое главное - что из этого следует, как с ними бороться и как к ним относиться.
Полезные материалы по продуктовой аналит...
Просмотров: 503

Видео

Собеседование на продуктового аналитика (mock-интервью)
Просмотров 22 тыс.Год назад
Собеседование на продуктового аналитика (mock-интервью)

Комментарии

  • @godai_official
    @godai_official 5 часов назад

    return Array.from(new Set(nums)).length !== nums.length

  • @zhiroslav
    @zhiroslav 13 часов назад

    Отличный выпуск, спасибо за беседу. Если говорить про боли, то, конечно, идеальных мест не бывает и действительно на российском рынке много компаний, в которых есть запрос на работу с данными и поддержку в принятии решений на данных, но при этом в них нет выстроенных процессов как в айти корпорациях. Получается, как только приходит продуктовый аналитик в компанию, на него нападают со всех сторон: продактам нужна разметка, аб-тесты, конверсия за вчера упала на 1% почему и что делать; топам и менеджерам нужен квартальный отчет по продукту и дашборды и т.д. и т.п. Все это усугубляется бесконечным адхоками, коммуникацией в разных мессенджерах с разными командами. На мой взгляд, как вы и упоминали, роль аналитика не столько в решении аналитических задач, а в создании культуры работы с данными и организации этой работы.

  • @vitalylim5732
    @vitalylim5732 День назад

    А если список четной длинны, тогда серелины нет. Этот способ не учитывает данный момент.

    • @kikvinn
      @kikvinn 14 часов назад

      По условию, если четная длина то нужно вывести второй в середине

  • @pavelbukhtik
    @pavelbukhtik День назад

    А каким из способов ты бы решил эту задачу?)

  • @Кирилл-д9т7с
    @Кирилл-д9т7с День назад

    Спасибо за видео подкаст.

  • @lipki582
    @lipki582 День назад

    Сам уже разработчик с опытом 3 года, однако иногда захожу посидеть на литкоде, расстраиваюсь и думаю, что я вообще бездарный разработчик😂

  • @Oleg-pq2cl
    @Oleg-pq2cl 2 дня назад

    Ещё проще: брать максимальную сумму от двух последних отрезков из единиц, всего один цикл O(N). Для [0,1,1,1,0,1,1,0,1] даёт 3 + 2 = 5 if num: right += 1 else: result = max(result, left + right) left, right = right, 0 и проверка если все едининцы: > return min(result, len(nums) - 1)

  • @BooJet
    @BooJet 2 дня назад

    Тем более мы знаем, что Яндекс - это та ещё помойка для прогеров

  • @DeadRabbitCanDance
    @DeadRabbitCanDance 2 дня назад

    Класс! Не верю, но я догадался. Я подумал надо в мап запихнуть по ключу и если количество совпадет - то все уникальные. Но если бы я не начал думать в эту сторону "извращенности" то начал бы с сортировки, цикл в цикле - это прям сразу понятно что так делать нельзя.

  • @DeadRabbitCanDance
    @DeadRabbitCanDance 2 дня назад

    А мне понравилось это решение.

  • @mercivboku
    @mercivboku 2 дня назад

    Есть компании, которые ближе к идеальным. Где аналитическая культура сразу выстроена как надо, сразу сделали нормальное двх, сразу нанимали крутых аналитиков, все давно уже устоялось. Там есть другая проблема: все низко висящие фрукты собраны. Даже средне висящие фрукты уже собраны. Гораздо сложнее в этом бизнесе придумать способ повлиять на метрики бизнеса, задачи становятся нетривиальнее, их приносят реже, больше надо придумывать самому, что ещё важного и полезного тут можно сделать, доказывать окружающим, что это вот вообще полезное и может принести результат. Это тоже может быть утомительным, сложным и фрустрирующим

  • @alextsi2924
    @alextsi2924 2 дня назад

    Можно ещё, конечно по памяти будет дороже в худшем случае х2 почти, если в самом конце будет дубликат, но по скорости быстрее сортировки. Это заюзать мапу. Ключ - число, значение - количество. Использовать putIfAbsent , если фолс , то выйти из алгоритма и вернуть true. В таком случае если у нас где-то вначале дубликат мы практически выиграем и в скорости и по памяти кратно раз

    • @sevaelunin
      @sevaelunin 2 дня назад

      Если не создавать мапу сразу под длину массива, то при худших сценариях вся экономия уйдет на перевыделение памяти и копирование в новую мапу.

  • @UnitXXVII
    @UnitXXVII 2 дня назад

    Класс!!!

  • @digital_maxim
    @digital_maxim 2 дня назад

    Медленный пройдет n/2 шагов и быстрый n/2 шагов. В сумме получается n шагов. Просто обойти список и поделить его на 2 получается менее заморочный n И еще большой вопрос как реализовано перепрыгивание быстрого указателя через элементы односвязного неиндексированного списка? В неиндексированных нельзя перепрыгивать через элемент. Если только это граф имеющий дополнительные связи. С двумя указателями по односвязному списку 1,5n получается. Медленный n/2 , быстрый все равно n пройдет. Где выигрыш?

    • @ilnar129
      @ilnar129 День назад

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

    • @digital_maxim
      @digital_maxim День назад

      @@ilnar129 быстрый указатель не может перепрыгивать через узлы. Поэтому он идет по каждому элементу списка. В итоге Быстрый пройдет все элементы, медленный - половину. 1,5n При наивном один указатель проходит все элементы. Делит их количество на 2 и получает сколько шагов надо пройти от начала списка до середины. Снова идет с начала списка до середины. 1,5n В итоге в любом случае получается 1,5n

  • @digital_maxim
    @digital_maxim 3 дня назад

    Оба указателя сделают одно и тоже количество шагов. Выигрыша нет.

    • @armansimonyan5772
      @armansimonyan5772 2 дня назад

      В одном случае 1.5n в другом n

    • @digital_maxim
      @digital_maxim 2 дня назад

      @@armansimonyan5772 медленный указатель сделает n/2 шагов и быстрый сделает n/2 В сумме они сделают n шагов. Плюс непонятно как быстрый указатель будет прыгать через элемент неиндексированного списка.

  • @Gregory-vc2vs
    @Gregory-vc2vs 3 дня назад

    Алгоритмические сложности алгоритмов: On^2 On*log(n) "Буквально в одну строчку"

  • @uudecode
    @uudecode 3 дня назад

    Яндекс это рак

  • @plur_ndbn
    @plur_ndbn 3 дня назад

    Сам не понял что рассказал. Если пройтись по списку определеив длину (что и делается быстрым указателем) то отсчитав с нуля половину будет то же самое ровно за то же количество шагов.

    • @ilnar129
      @ilnar129 День назад

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

  • @odinolof-tc2qv
    @odinolof-tc2qv 3 дня назад

    Алголитма?? А нельзя медленный указатель просто поделить на 2??

    • @ilnar129
      @ilnar129 День назад

      список лежит в памяти в произвольных местах. Не получится просто поделить на два

  • @yegort2417
    @yegort2417 3 дня назад

    Так а почему поделиьь незя на 2 то?

  • @artyrxandras8218
    @artyrxandras8218 3 дня назад

    Для этой задачи есть более красивое решение: надо через XOR ^ пройтись по всему списку и присвоить результат в одну переменную, тем самым, если в результате будет 0, значит все элементы представлены 2 раза

  • @gabarjoba6560
    @gabarjoba6560 3 дня назад

    а что за сайт с задачками?

  • @наблюдатель-з3з
    @наблюдатель-з3з 4 дня назад

    Если от вас ожидают при решении этой задачи на собеседовании одну строчку кода, дам один совет, бегите оттуда.

  • @Петр-ц3ъ2ю
    @Петр-ц3ъ2ю 4 дня назад

    И зачем цикл в цикле? Можно простое условие if оставить. На каждой итерации left будет по одному шагу догонять right def longest_seq(arr): max_length = 0 start = 0 zero_count = 0 for end in range(len(arr)): if arr[end] == 0: zero_count += 1 if zero_count > 1: if arr[start] == 0: zero_count -= 1 start += 1 max_length = max(max_length, end - start + 1) return max_length - 1

  • @MUTA_NA_SVIAZI
    @MUTA_NA_SVIAZI 4 дня назад

    Какая же жуть эти алгоритмы.

  • @lostvayne871
    @lostvayne871 5 дней назад

    А я использовал XOR. Прикольный метод.

  • @narekmhitaryan4620
    @narekmhitaryan4620 5 дней назад

    Сборник Можно тоже ссылку ? 😊❤

  • @nevajno-hto_ya
    @nevajno-hto_ya 5 дней назад

    все не понятно только зачем там if если само сравнение возвращает либо true либо false

  • @ДжорджИзджунглей-к7я

    😢зачем от обджекта наследуешься, это же было в питон2

    • @pavelbukhtik
      @pavelbukhtik 4 дня назад

      Leetcode так по-дефолту дает поле с кодом, не думал особенно об этом.)

  • @ilyaantonenko3812
    @ilyaantonenko3812 6 дней назад

    Return Len(nums) == len(set(nums))

  • @nik6920
    @nik6920 6 дней назад

    Так операция создания множеств как раз и использует алгоритм поиска дубликатов. Это алгоритм отсеивает дубликаты за линейное время при помощи словаря (dictionary) или другой хэш-структуры.

  • @НикитаВ-м1з
    @НикитаВ-м1з 6 дней назад

    Ну тоже такое на алгоритмическом собесе, от тебя алгоритмы хотят а не использование встроенных функций

  • @ГерманНиязян
    @ГерманНиязян 7 дней назад

    Интересная задача 👍

  • @drone_tales
    @drone_tales 7 дней назад

    Там и одного достаточно, зачем два то?

  • @edgergerg
    @edgergerg 7 дней назад

    То есть 999 можно записать как IM, а не CMXCIX?

  • @andrewbondaryuk
    @andrewbondaryuk 7 дней назад

    сортировка и преобразование в множество... первое отвратительно, второе божественно? :-D

  • @tagnati5585
    @tagnati5585 7 дней назад

    А что такое минимальное время? Я фронтендер просто

    • @stas9369
      @stas9369 6 дней назад

      Минимальное время, это минимум по дате. То есть имеем условно 01.02.1999 и 02.02.1999, и вот минимум из этих дат будет - 01.02.1999, то есть минимальное время, что и есть условно время первого захода в рамках этой задачи

    • @tagnati5585
      @tagnati5585 6 дней назад

      ​@@stas9369 а все, понял, спасибо. От сортировки это всё-таки сильно не отличается, но записывается в разы проще.

  • @Proger-fo7dg
    @Proger-fo7dg 7 дней назад

    int[] nums = { 1, 2, 3,1}; Console.WriteLine((string.Join(", ", nums.Distinct()) != string.Join(", ", nums))); я сделал вот так,в голову не пришло с длиной массива сравнивать

  • @catofgood
    @catofgood 7 дней назад

    Бывают же решения еще быстрее, можешь объяснить как люди сделали это за 1 и 2 миллисекунды

  • @Faceman4444
    @Faceman4444 7 дней назад

    Там есть решение на 3 строчки, только сегодня решал

  • @progamerpro5973
    @progamerpro5973 8 дней назад

    😂 интересно почему сложности для «правильного» решения не посчитаны?

  • @caseykaller6953
    @caseykaller6953 8 дней назад

    У тебя повылазило? Твое решение не самое оптимальное

    • @pavelbukhtik
      @pavelbukhtik 8 дней назад

      @@caseykaller6953 А как нужно?)

  • @edgergerg
    @edgergerg 8 дней назад

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

  • @GrooveWindowsOS
    @GrooveWindowsOS 8 дней назад

    А если просто сравнить s==s[::-1]

  • @ppc2012
    @ppc2012 8 дней назад

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

  • @stas9369
    @stas9369 8 дней назад

    Спасибо вам большое за такой крутой формат видео! Это очень полезно и удобно! Пожалуйста, продолжайте. И ещё раз спасибо и успехов вам😊

  • @dilirink9222
    @dilirink9222 8 дней назад

    брат с кайфом, продолжай, формат отличный выбрал!

  • @testd1z6c
    @testd1z6c 9 дней назад

    Это алгоритм Бойера-Мура и такое объяснять стоит поподробнее, а то выглядит как магия

  • @avi-crakhome2524
    @avi-crakhome2524 9 дней назад

    Ну а теперь повтори с массивом двойной точности, только сначала на бумажке задание запиши, потому как твой комп точно сдохнет.

  • @qoonmax
    @qoonmax 9 дней назад

    Кайф