• Разбор квалификации чемпионата по программированию среди бэкенд-разработчиков

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


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



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


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

      Читать дальше →
      • +33
      • 21.8k
      • 7
    • Как мы научились предсказывать запрос пользователя и ускорили загрузку поисковой выдачи

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


        Внедрение этой технологии – пререндера – потребовало многих интересных решений в мобильной разработке, разработке поискового рантайма, логов, метрик. И, конечно, нам нужен был крутой классификатор, определяющий, нужно ли загружать поисковый запрос заранее: этот классификатор должен соблюдать баланс между ускорением загрузки, дополнительным трафиком и нагрузкой на Поиск. Сегодня я расскажу о том, как нам удалось создать такой классификатор.



        Читать дальше →
        • +43
        • 8.9k
        • 8
      • Как устроены процессы разработки в различных компаниях

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


          Когда-то я был младшим разработчиком и ужасно не любил слово «процессы». Все эти регулярные встречи и прочее общение казались глупостями, отвлекающими от содержательной работы (написания кода, конечно). Думаю, такой этап случался в жизни у каждого, кто занимался разработкой; но такому этапу полезно повторяться регулярно: любую деятельность можно оптимизировать (например, вообще отменив), и иногда ощущение бессмысленности происходящего оказывает поистине целебное действие.




          Мы решили посвятить процессам разработки наш следующий Team Leader Meetup, который пройдёт вечером 17 июня в московском офисе Яндекса. Регистрация открыта!


          Нашими экспертами согласились быть:


          • Анатолий anatolix Орлов, CTO, Ozon
          • Алексей Катаев deusdeorum, Head of Software Development, SkyEng
          • Александр Гутман, CTO, JoomPay
          • Евгений Парамонов, руководитель разработки поисковых подмешиваний, Яндекс
          • Андрей Плахов yafinder, руководитель отдела функциональности поиска, Яндекс

          Сегодня они отвечают на некоторые вопросы, чтобы подготовить будущую дискуссию:


          1. На какой основе построены процессы у вас в компании?
          2. По вашему опыту, какой процент успеха команды определяется правильными процессами, а какой индивидуальным мастерством?
          3. Бывают ли ситуации, в которых тимлид имеет полное право игнорировать любые процессы?
          4. Расскажите какую-нибудь страшную историю из вашего опыта со словом «процесс»

          Под катом — много огня, сарказм в адрес авторов вопросов, максимально различные мнения и, конечно, страшные истории.

          Читать дальше →
        • Как проходят алгоритмические секции на собеседованиях в Яндекс

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


            Так что мы подготовили для вас следующие материалы:


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


            Читать дальше →
          • Как развиваться руководителю разработки



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


              Мы выбрали пути развития руководителей разработки темой следующего Team Leader Meetup, который пройдёт вечером 28 ноября в московском офисе Яндекса. Обсудить эту тему можно будет с экспертами из крупных IT-компаний. Регистрация ещё открыта.


              В этот раз нашими экспертами стали:


              • Николай Крапивный, руководитель бекенд-разработки, Badoo
              • Роман romas1982 Ивлиев, CTO, mos.ru
              • Александр Поломодов, руководитель отдела исследований и разработки, Tinkoff.ru
              • Борис Тоботрас, директор центра программных решений, Инфосистемы Джет
              • Виктор Ламбурт, руководитель направления рекомендательных продуктов, Яндекс
              • Игорь Кураленок, генеральный директор, Лига Экспертов

              Сегодня на Хабре мы задаём им ряд вопросов, чтобы задать тон будущей дискуссии:


              1. Какие советы вы бы дали вашему коллеге – сильному разработчику, который недавно, буквально вчера, стал тимлидом? С каких конкретных, понятных действий ему стоило бы начать свою работу в новой должности?
              2. Какие книги или статьи вы бы порекомендовали прочитать руководителю разработки? А какие ресурсы имеет смысл изучать на регулярной основе?
              3. Сколько времени стоит уделять работе над техническими задачами, а сколько – над задачами, связанными с управлением коллективом? На что ещё может или должен тратить своё время тимлид?
              Читать дальше →
              • +28
              • 17.1k
              • 9
            • Как Яндекс изменил Поиск за прошедший год. Обновление «Андромеда»

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


                Сегодня мы традиционно расскажем читателям Хабра о проделанной нами работе.


                Читать дальше →
              • Как выявлять и развивать таланты в IT: результаты первого Team Leader meetup

                  24 января 2018 года в Яндексе прошёл первый Team Leader meetup. Мероприятие посетили в общей сложности порядка семидесяти руководителей разработки из различных компаний.


                  Мы хотели, чтобы участники встречи были активно вовлечены в дискуссию, поэтому сразу выбрали в качестве основного формат панельной дискуссии в противовес стандартным презентациям. Таким образом, в разговоре участвовали сразу несколько экспертов из ведущих IT-компаний: Яндекса, Mail.Ru, Skolkovo Foundation, Phillips Innivation Labs RUS, 1C GAMES STUDIO. У слушателей в зале была возможность реагировать на высказывания экспертов при помощи специального бота, который демонстрировал их эмоции в реальном времени на специальном экране, расположенном прямо в зале.


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


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


                  Читать дальше →
                  • +26
                  • 6.7k
                  • 3
                • ML-Блиц: разбор задач первого квалификационного раунда

                    23 июня 2018 года состоялся финал ML-Блица, конкурса по машинному обучению, организованного Яндексом. Ранее мы анонсировали его на Хабре и рассказывали, какие примерно задачи могут встретиться на реальном соревновании.


                    Теперь мы хотим поделиться с вами разборами задач одного из квалификационных раундов — самого первого. Двое участников сумели решить все задачи этого соревнования; 57 участников решили хотя бы одну задачу, а 110 совершили хотя бы по одной попытке сдать задание.


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


                    Самым популярным языком программирования среди участников соревнования ожидаемо оказался python, поэтому я также использовал именно этот язык во всех случаях, когда требовалось написать код.


                    Все мои решения доступны на GitHub


                    image

                    Читать дальше →
                  • Яндекс.Блиц: машинное обучение

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


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


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


                      Квалификацию ML-блица можно будет пройти с 11 по 17 июня, а 23 июня состоится финал. Итоги соревнования будут подведены 25 июня. Для участия необходимо вовремя зарегистрироваться!


                      image

                      Читать дальше →
                    • Как автоматизируют разработку команды различных размеров

                        Прошедший в январе в Яндексе Team Leader Meetup подарил нам не только два часа видео, но и тему второй встречи, которые выбрали участники встречи в специальном чате. Говорить мы будем, как понятно из заголовка, об автоматизации разработки.




                        Выбор инструментов автоматизации во многом зависит от размеров команды, поэтому важно отслеживать их эволюцию с учётом роста небольшого стартапа до огромной, компании, которая сама создаёт инструменты для разработки. Чтобы понять, с чем в таком случае столкнутся руководители команд, мы задали несколько вопросов нашим экспертам, среди которых, Иван ginkage Подогов, Роман shadart Пузиков, Сергей profitware Собко, Алексей alexmog Могилевский.


                        1. Предположим, вы решили открыть свой стартап. В нём на старте работает небольшая команда (пять программистов). Какие инструменты автоматизации разработки вы внедрите?
                        2. Стартап зажёг! Теперь в нём работает очень много людей. Что изменится? Что добавится?
                        3. Какой несуществующий инструмент (или даже тип инструмента) вам был настолько нужен, что вы не выдержали и сделали его для себя сами?

                        Читать дальше →
                        • +32
                        • 15.6k
                        • 4
                      • Как и почему мы переосмыслили поисковое поле ввода Яндекса

                          Мы уже дважды рассказывали про наши поисковые подсказки: первый пост вышел аж в 2012 году, второй же случился совсем недавно.



                          Поисковые подсказки — одна из тех штук, которыми компания может гордиться, поэтому нам не кажется зазорным рассказывать о них часто. Сегодня мы поговорим о функциональных изменениях в поисковых подсказках, произошедших в 2017 году. Речь пойдёт не только об изменениях в интерфейсе, но и об интересной статистике и технологических вызовах, которые она поставила перед нами.


                          1. «Расширяющееся» поле ввода


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


                          Удивительно, что поисковые системы полностью проигнорировали этот тренд. А ведь длинные запросы составляют значительную часть потока. Скажем, запросы, содержащие более семи слов, составляют до 10% всего потока запросов к Яндексу!

                          Читать дальше →
                        • Как выявлять и развивать таланты в IT

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


                            Вопросы управления талантливыми сотрудниками актуальны для многих руководителей в сфере IT вне зависимости от конкретной специализации. Именно поэтому управление талантами мы выбрали в качестве первой темы нового цикла встреч, организованного Яндексом — Team Leader Meetup.


                            В преддверии встречи мы попросили участников панельной дискуссии, среди которых veged, gornal, yafinder, ответить на ряд вопросов, связанных с управлением талантливыми сотрудниками.




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


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

                            Читать дальше →
                          • Метод Уэлфорда и многомерная линейная регрессия

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


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


                              Читать дальше →
                              • +12
                              • 10.5k
                              • 7
                            • Как мы обновили поисковые подсказки в Яндексе и нашли для них правильную метрику

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


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


                                Темой поисковых подсказок в Яндексе я занялся в начале 2016 года. Цель, стоящая в то время перед командой саджеста, звучала очень амбициозно: «Сделать лучший саджест на мобильных», ни больше ни меньше!


                                image


                                Вспоминая о том, что было сделано с тех пор в области поисковых подсказок в Яндексе, трудно отделаться от двух ощущений. Первая: как же много всего мы сделали! Вторая: неужели всего этого не было раньше? Сделано действительно много, но эти вещи кажутся часто такими простыми и очевидными, что не верится, что их не было всегда.


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

                                Читать дальше →
                              • Метод Уэлфорда и одномерная линейная регрессия

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


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


                                  Читать дальше →
                                • 10 лет Школе анализа данных Яндекса

                                    Сегодня исполняется 10 лет Школе анализа данных Яндекса. Девять лет назад я в неё поступил, семь лет назад выпустился и в том же 2010 году, 21 июля, я стал сотрудником ООО «Яндекс».

                                    С тех пор мы все сильно изменились: и я, и Яндекс, и ШАД. Но есть несколько уроков, которые я вынес из стен Школы, которые до сих пор оказываются для меня актуальными и вряд ли перестанут быть таковыми.


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

                                    Ограниченность знания


                                    Поступал я в Школу, только-только закончив третий курс кафедры прикладной математики МЭИ. Вообще-то тогда говорили, что создатели Школы рассчитывают на выпускников-бакалавров — то есть выпускников четвёртого курса. Так что я изрядно рисковал.
                                    Читать дальше →
                                    • +53
                                    • 13.5k
                                    • 2
                                  • Точное вычисление средних и ковариаций методом Уэлфорда

                                      Метод Уэлфорда — простой и эффективный способ для вычисления средних, дисперсий, ковариаций и других статистик. Этот метод обладает целым рядом прекрасных свойств:


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

                                      Оригинальная статья Уэлфорда была опубликована в 1962 году. Тем не менее, нельзя сказать, что алгоритм сколь-нибудь широко известен в настоящее время. А уж найти математическое доказательство его корректности или экспериментальные сравнения с другими методами и вовсе нетривиально.


                                      Настоящая статья пытается заполнить эти пробелы.


                                      Читать дальше →
                                      • +53
                                      • 16.7k
                                      • 9
                                    • Сколько технологий нужно Яндексу, чтобы поиск находил свежие документы почти моментально

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




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


                                        1. Почему свежесть?


                                        Интерес к любому событию в течение нескольких дней угасает практически до нуля, если, конечно, это событие не получает какого-либо дальнейшего развития. Мы проводили исследование, из которого и родилось это утверждение: оказывается, в среднем 73% пользователей интересуется событием непосредственно в день, когда оно произошло, и только 3% читателей приходит на ресурсы спустя трое суток и более после публикации. С момента проведения этого исследования прошло уже много лет, но в целом ситуация не изменилась. И даже статьи на habrahabr.ru получают наибольшее количество поисковых переходов в первые несколько суток своего существования.

                                        Читать дальше →