• Как управлять часами? Разбор фронтенд-трека второго чемпионата по программированию

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

      A. Аннигилируй это

      Авторы: Максим Сысоев, Константин Петряев

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

      Условие


      Вы устроились работать в лабораторию по изучению антиматерии, где проводят различные опыты. Ваш отдел изучает процессы, которые происходят при объединении материи и антиматерии. Вам необходимо провести серию опытов над некоторым количеством молекул.
      Читать дальше →
      • +13
      • 5.3k
      • 3
    • Телефон для коня и оркестр без пианиста. Как придумать спортивные задачи по фронтенду

        Привет! Меня зовут Дмитрий Андриянов, я работаю разработчиком интерфейсов в Яндексе. В прошлом году я участвовал в подготовке нашего онлайн-соревнования по фронтенду.



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

        Читать дальше →
        • +23
        • 6.2k
        • 9
      • Буткемп в Яндексе: как разработчику выбрать себе команду

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



          Я Жанна Круглова, экс-разработчик и руководитель группы Буткемпа. Расскажу читателям Хабра, что у проекта под капотом, какие возможности он даёт и как предыдущие участники мучительно выбирали себе команду.
          Читать дальше →
          • +24
          • 6.9k
          • 8
        • React & БЭМ – официальная коллаборация. Часть историческая

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



            Все слышали о методологии БЭМ. CSS-селекторы с подчёркиваниями. Компонентный подход, о котором говорят, имея в виду способ написания CSS-селекторов. Но про CSS в статье не будет ни слова. Только JS, только хардкор!

            Читать дальше →
          • Как Яндекс готовит фронтендеров. От программы на Coursera до курсов в университете

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

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



              Читать дальше →
            • Почему в Петербурге так сложно построить карьеру VP of engineering

                Привет, Хабр! Меня зовут Святослав Кулаков, я VP of Engineering в Aurea Software. Вся моя жизнь прошла в Питере: я родился и вырос на улице Союза Печатников напротив Мариинского театра, учился во второй гимназии с углублённым изучением английского языка и физмата, поступил в Университет аэрокосмического приборостроения (ГУАП). После учёбы я работал в нескольких софтверных компаниях в России и США, но в итоге всё вернулся в Санкт-Петербург и оставался тут даже когда это казалось верной дорогой к карьерному болоту.



                На основании своего личного опыта я расскажу о том, почему многим IT-специалистам нереально найти в Санкт-Петербурге работу по своему уровню, как работает механизм перетягивания лучших специалистов — как минимум, в Москву, а то и сразу в США или другие страны. И о том, как мне всё-таки удалось найти в родном городе свою лучшую работу на данный момент. Но обо всём по порядку.

                Из Санкт-Петербурга в Санкт-Петербург через Санкт-Петербург


                Моя трудовая биография началась с позиции Java-разработчика в небольшой софтверной компании в 1999 году. За следующие 9 лет я продвинулся по карьерной лестнице до позиции Эккаунт Менеджера, где мне подчинялось более 100 человек. Кризис 2008 года сбил нас на взлёте, и моей следующей записью в трудовой стала должность Lead IT Process Manager в московском отделении Deutsche Bank. Полтора года спустя мне поступило заманчивое предложение из США: консультировать бизнес-клиентов компании Grid Dynamics в вопросах оптимизации процессов разработки.
                Читать дальше →
              • Как выявлять и развивать таланты в IT

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


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


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




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


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

                  Читать дальше →
                • Самый большой репозиторий Git на свете

                  • Translation
                  Прошло уже три месяца с тех пор, как я опубликовал свою первую статью о наших попытках масштабировать Git для очень крупных проектов при помощи инициативы, которую мы назвали «Git Virtual File System». Напомню: GVFS в сочетании с некоторыми правками в Git позволяет работать с ОЧЕНЬ большими репозиториями, виртуализируя как папку .git, так и рабочую директорию. Вместо того, чтобы скачивать репозиторий целиком и проверять все файлы, инструмент динамично скачивает только те фрагменты, которые вам нужны, выявляя их на основании того, над чем вы работали до этого момента.

                  За это время много чего произошло, и я хочу поделиться с вами новостями. Три месяца назад GVFS был только мечтой. Не в том смысле, что его не существовало — у нас была готовая реализация — но в том, что он еще не показал себя в деле. Мы опробовали его на больших репозиториях, но не успели внедрить в рабочий процесс для сколько-нибудь значимого количества разработчиков. Поэтому у нас было только умозрительное убеждение, что все будет работать. Теперь же у нас есть подтверждение этому.

                  Читать дальше →
                • БЭМ-методология: с чего всё начиналось и зачем это всё нужно

                    На Хабре уже много писали о методологии БЭМ, выросшей в Яндексе. И мы решили, что пора системно рассказать о том, откуда она появилась и что сделало БЭМ таким, каким мы его знаем. Думаем, это будет интересно не только тем, кто уже использует БЭМ, но и тем, кто считает, что эта методология не подходит для их проектов. Возможно, они увидят, что мы решали проблемы, похожие на их собственные, и найдут что-то полезное для себя.

                    image

                    Конечно, все началось с собственных потребностей Яндекса. Вместе с тем, как он рос, росло и количество сотрудников, которые занимаются фронтендом. Постепенно команда увеличилась настолько, что стало очевидно — без единых стандартов работать будет сложно. К тому же, мы находимся в офисах Яндекса в разных городах. Возникла идея создать общую методологию, которая поможет организовать процессы в большой команде, работающей над разными проектами. А главное то, что мы хотели не только упорядочить и ускорить разработку, но и снизить порог входа в проект для нового разработчика.
                    Читать дальше →
                  • Категория: суть композиции

                    • Translation
                    Это вторая статья в цикле «Теория категорий для программистов».

                    Категория — очень простая концепция.

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

                    image
                    Читать дальше →
                  • Типы и функции

                    • Translation
                    Это третья статья в цикле «Теория категорий для программистов».

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

                    Кому нужны типы?


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

                    image


                    Читать дальше →
                  • Категории Клейсли

                    • Translation

                    Композиция логирования


                    Вы видели, как сделать категорию типов и чистых функций. Я также упомянул, что есть способ смоделировать побочные эффекты, или нечистые функции, в рамках теории категорий. Давайте рассмотрим пример: функции, которые логируют или записывают ход своего выполнения.
                    Читать дальше →
                  • Категории, большие и малые

                    • Translation
                    Это четвертая статья в цикле «Теория категорий для программистов».

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

                    Без объектов


                    Самая простая категория — без объектов и, как следствие, без морфизмов.
                    Читать дальше
                  • Открытка-лабиринт. Подарок, который невозможно открыть, не разгадав головоломку

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


                      Лабиринт в процессе прохождения.
                      Читать дальше →
                    • Манипулирование БЭМ-структурой с помощью Bemy

                      Если вы используете БЕМ-методологию в своих проектах и выделяете БЕМ-сущности указанным ниже образом, то bemy существенно упростит вам жизнь, избавив от необходимости вручную создавать файлы блоков.



                      Если вы также используете deps.js файлы формата enb, то bemy будет вам особенно полезен, так как приняв на выход путь к этому файлу, bemy создаем файловую структуру блока (по умолчанию с css-файлами).
                      Читать дальше →
                    • Сайт с нуля на полном стеке БЭМ-технологий. Методология Яндекса

                      • Tutorial
                      На прошлой неделе BBC рассказала, что для новой версии главной страницы использовала методологию БЭМ, созданную в Яндексе. По такому случаю мы решили поднять материалы мастер-класса «Разрабатываем сайт с нуля на полном стеке БЭМ-технологий» и рассказать вам, как начать использовать полный стек БЭМ-технологий в своих проектах.

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



                      В статье мы расскажем, в чём преимущество вёрстки независимыми блоками и что такое уровни переопределения, познакомимся с готовыми библиотеками блоков и инструментами для автоматизации сборки. Покажем, как разные инструменты — например, autoprefixer, css-препроцессор Stylus или модульная система YModules — упрощают жизнь разработчика и создают по-настоящему удобную платформу, если встроить их в процесс разработки по БЭМ.

                      На живом примере мы объясним, в чём польза декларативного подхода, когда одни и те же идеи можно использовать как для CSS, так и для JavaScript. Отдельно остановимся на декларативных шаблонах BEMHTML и BEMTREE, которые позволяют преобразовывать данные в БЭМ-дерево, описанное в формате BEMJSON и, затем в HTML. Рассмотрим в деталях, как написать серверную часть приложения по БЭМ-методологии.
                      Читать дальше →
                    • Теория категорий для программистов: предисловие

                      • Translation
                      Вот уже некоторое время я обдумываю идею написать книгу о теории категорий для программистов. Не компьютерных теоретиков, программистов — скорее инженеров, чем ученых. Я знаю, что это звучит безумно, и я сам достаточно напуган. Я знаю, что есть огромная разница между наукой и техникой, потому, что я работал по обе стороны баррикад. Но у меня всегда был очень сильный порыв объяснить вещи. Я восхищаюсь Ричардрм Фейнманом, который был мастером простых объяснений. Я знаю, я не Фейнман, но я буду стараться изо всех сил. Я начинаю с публикации этого предисловия, которое должно мотивировать читателя изучить теорию категорий, и надеюсь на начало дискуссии и обратную связь.

                      Я постараюсь в нескольких параграфах убедить вас, что эта книга написана для вас, и развеять все ваши сомнения в необходимости изучения этой, одной из самых абстрактных областей математики, в свое драгоценное свободное время.
                      Читать дальше →
                    • Большое тихоокеанское мусорное пятно: предотвратить загрязнение планеты



                        Наверно, мало кто слышал об этом явлении, но это и не удивительно. Человеческому роду свойственно легко забывать о своих ошибках и заметать мусор под ковёр. Так вот, о мусоре – знаете ли вы, что существует Большое тихоокеанское мусорное пятно, оно же Восточный мусорный континент, оно же Тихоокеанский «мусороворот»? Это скопление мусора в северной части Тихого океана. Мусора, созданного, естественно, людьми. В древние времена океан казался бескрайним, за несколько дней пути его было не преодолеть, поэтому дальние берега и воды всегда населялись разными чудовищами. Те времена прошли, белых пятен осталось всего ничего, но человечеству всё ещё кажется, что их планета настолько огромна, что стерпит любое обращение.
                        Читать дальше →
                      • На Etsy появились авторские клейма с популярными логотипами, созданные с помощью 3D-печати

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



                          Автором этой необычной идеи стал дизайнер, зарегистрированный на сайте под ником Niquegeek (в реальности просто Джеймс). Niquegeek предпочитает называть себя Цифровым Кузнецом и имеет на данном ресурсе большую коллекцию оригинальных металлических украшений. В основном, это авторские перстни и кулоны стоимостью 25-30 долларов, украшенные логотипами из гик-культуры.

                          Новая серия металлических артефактов пока включает в себя только шесть наименований: «клеймо Бэтмена», «клеймо Супермена», «клеймо Мандалорианских рабов» из вселенной Звёздных Войн, «клеймо Ассасина» из серии «Assassin’s Creed», клеймо с логотипом из игры «Destiny» и классическое «клеймо Инь-Янь».
                          Читать дальше →
                          • +11
                          • 10.5k
                          • 9