• Тестирование From Zero to Hero. Часть 1

      Всем привет! Меня зовут Сергей, я работаю в команде Тинькофф. Сегодня я хочу рассказать, как мы в Тинькофф приходили к классической пирамиде тестирования. 

      Рассказ будет в трех частях:

      - Трудности, с которыми нам пришлось столкнуться, и как мы их преодолевали.

      - Конкретные решения по некоторым распространенным кейсам при написании интеграционных тестов.

      - Подход к написанию E2E-тестов (тестов, покрывающих взаимодействие всех систем приложения, включая back-end и пользовательский интерфейс) с использованием паттерна PageObject, пришедшего к нам из мира веб-разработки.

      Читать далее
      • +19
      • 4.4k
      • 6
    • Рецепт дня: готовим сообщество профессионалов, не выходя из своего отдела

        Историями о профессиональных сообществах сейчас вряд ли кого-то удивишь. Гильдии образуют по разным причинам: кто-то из интереса, кто-то — чтобы быть в тренде, а кто-то из-за недостатка общения на профессиональные темы. Это история о том, как бизнес-направление компании ЦФТ, Денежные Переводы Online, желая производить больше и быстрее, в очень короткий срок утроило штат инженеров, которых не успели нормально заонбордить, и в итоге чуть не уронили качество продукта и не «сожгли» ключевых членов команды. 

        Доклад в виде пошагового рецепта QA-лидам, fullstack feature team-лидам, SM и всем тем, кто решает задачу эффективной настройки процессов команд, работающих совместно над одним продуктом, представила на конференции TeamLead Conf 2020 Head of Android QA одного из флагман-продуктов компании ЦФТ Надежда Потаенко.

        Читать далее
      • Фидбэк. Зачем развивать обратную связь в компании и как давать ее правильно: исследования, рекомендации, практики

          Без правильной обратной связи в команде даже успешные компании могут недополучать до 22% выручки. К такому выводу пришли исследователи из Gallup и Workplace Medicine. Культура продуктивного фидбэка внедряется по двум направлениям: постоянное обучение сотрудников правилам обратной связи и организация системы обратной связи.

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

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

          — Личная производительность может повыситься на 39%.

          — Количество прогулов может снизиться на 41%, а текучка — на 59%.

          — Эффективность руководителей может вырасти на 71%.

          — Удовлетворенность клиентов — на 10%.

          Читать далее
        • Гидропоника. Выращиваем сверхострый чили и заставляем всех его есть


            Полтора килограмма термоядерного Тринидадского Скорпиона я в итоге собрал с одного куста на гидропонике.


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


            Небольшая часть урожая


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


            Сегодня в меню


            1. Что такое гидропоника и почему она гораздо проще, чем почва с червячками
            2. Никаких дорогих бутылочек. Мешаем компоненты по три рубля за ведро
            3. Питание растения как алгоритм
            4. Как быстро собрать прототип гидропонной установки
            5. Что такое capsicum chinense и как выжить при дегустации
            Читать дальше →
          • Зачем нужна выделенная Frontend Core команда и как мы внедряли дизайн систему


              Всем привет, меня зовут Ростислав, я занимаю должность Front Lead в компании ДомКлик. Хочу поделиться с вами опытом создания Web Core команды и сразу ответить на следующие вопросы:


              • Необходима ли такая команда в компании?

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


              • Выгодно ли внедрять такую команду?

              Безусловно. Изначально было сложно измерить и спрогнозировать выгоду от её создания, все расчеты, P&L были на словах, в цифрах — только примерные предположения. Спустя год мы можем посчитать сэкономленное время, профиты, и все расчеты говорят о том, что это было не зря.


              • На долгую перспективу ли эта команда?

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


              • Чем эта команда занимается?

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

              Читать далее
            • Увидеть истинное лицо продукта и выжить. Данные о пользовательских переходах как повод написать пару новых сервисов


                В интернете сотни статей о том, какую пользу приносит анализ поведения клиентов. Чаще всего это касается сферы ритейла. От анализа продуктовых корзин, ABC и XYZ анализа до retention-маркетинга и персональных предложений. Различные методики используются уже десятилетиями, алгоритмы продуманы, код написан и отлажен — бери и используй. В нашем случае возникла одна фундаментальная проблема — мы в ISPsystem занимаемся разработкой ПО, а не ритейлом.
                Меня зовут Денис и на данный момент я отвечаю за бэкенд аналитических систем в ISPsystem. И это история о том, как мы с моим коллегой Данилом — ответственным за визуализацию данных — попытались посмотреть на наши программные продукты сквозь призму этих знаний. Начнем, как обычно, с истории.

                Читать дальше →
                • +23
                • 2.1k
                • 2
              • Ленивая подгрузка переводов с Angular

                • Tutorial

                image


                Если вы когда-нибудь участвовали в разработке крупного angular-проекта с поддержкой локализации, то эта статья для вас. Если же нет, то возможно, вам будет интересно, как мы решили проблему скачивания больших файлов с переводами при старте приложения: в нашем случае ~2300 строк и ~200 Кб для каждого языка.

                Читать дальше →
                • +18
                • 2.6k
                • 7
              • От библиотеки компонентов к дизайн-системе



                  Разработка UI-компонентов — одна из самых затратных задач при разработке фронтенда. Чтобы оптимизировать процессы, некоторые компании поручают её выделенной команде. Мы же решили пойти другим путём: сделать библиотеку, чтобы компоненты туда могли добавлять разработчики из разных команд. В этой статье расскажу, как наша библиотека организована.

                  Читать дальше →
                  • +24
                  • 5.2k
                  • 3
                • Как сэкономить 15 000 рублей при регистрации ПО


                    Прошёлся недавно по поисковой выдаче гугла и выяснил, что регистрация прав на программу для ЭВМ стоит около 15 тыс. рублей. 15 тыс. рублей! И это ещё без пошлины.


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


                    Зашёл на сайт Роспатента: инструкции там есть, но четкой картины не дают. На месте руководителя маленького IT-проекта я бы не стал подавать заявление сам — вдруг что-то сделаю не так.


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

                    Читать дальше →
                  • Распознавание номеров. Практическое пособие. Часть 1

                      Пример распознавания номерных знаков

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

                      И в один прекрасный день МВД Украины открыло доступ к реестру транспортных средств. Теперь по номерному знаку стало возможным проверять некоторую информацию про автомобиль (марку, модель, год выпуска, цвет и т.д. )! Скучная рутина линейного программирования померкла перед новой свехзадачей — считывать номера по всей базе фото и валидировать эти данные с теми, что указывал пользователь. Сами знаете как это бывает «глаза загорелись» — вызов принят, все остальные задачи на время стали скучны и монотонны… Мы принялись за работу и получили неплохие результаты, чем, собственно и решили поделиться с сообществом.
                      Для справки: на сайт AUTO.RIA.com, в день добавляется около 100 000 фото.
                      Датасаентисты давно уже знают и умеют решать подобные задачи, поэтому мы с dimabendera написали эту статью именно для программистов. Если вы не боитесь словосочетания «сверточные сети» и умеете писать «Hello World» на питоне — милости просим под кат…
                      Читать дальше →
                    • Управленческие инструменты: Мамонт как главный принцип командообразования

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

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

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

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

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

                        Мамонт - главный концепт командообразования
                        • +6
                        • 15.9k
                        • 1
                      • Учимся следить за браузером Vivaldi

                        • Translation


                        Однажды какой-нибудь пользователь Vivaldi задумывается о том, с какими сервисами контактирует его браузер.

                        Он запускает сканер сетевой активности и с ужасом смотрит на множество автоматических подключений браузера к серверам Vivaldi или даже Google.

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

                        Впрочем, большинство таких любознательных пользователей ничего нам не напишет, а просто сделает для себя вывод, что Vivaldi банально шпионит за их активностью и даже время от времени «сливает» детали в Google. Ну, а чего удивляться — ведь другие браузеры не стесняются мониторить активность своих пользователей и отправлять подробности разработчикам браузера.
                        Читать дальше →
                        • +13
                        • 9.7k
                        • 7
                      • Как организовать работу над библиотекой общих компонентов

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

                          С 2015 года я работаю в Тинькофф в отделе сервисов для бизнеса. За это время наша команда выросла с 3 до 60+ разработчиков, а экосистема Тинькофф Бизнес — с 3 до 50 веб-приложений. На разных этапах нашего развития мы подходили к работе с общим кодом по-разному, об этом я и хочу рассказать в этой статье.

                          image
                          Читать дальше →
                        • ControlValueAccessor и contenteditable в Angular

                          • Tutorial

                          Вы когда-нибудь задумывались, как работает связка форм Angular и HTML элементов, через которые пользователь заносит данные?


                          С самого начала для этого использовали ControlValueAccessor — специальный интерфейс, состоящий всего из 4 методов:


                          interface ControlValueAccessor {
                            writeValue(value: any): void
                            registerOnChange(fn: (value: any) => void): void
                            registerOnTouched(fn: () => void): void
                            setDisabledState(isDisabled: boolean)?: void
                          }

                          Из коробки, Angular имеет несколько таких аксессоров: для чекбоксов и радиокнопок, для инпутов и селектов. Однако, если вы разрабатываете чат, в котором вам нужно дать возможность писать курсивом, делать текст жирным или, допустим, вставлять смайлики — вы, скорее всего, воспользуетесь атрибутом contenteditable для создания содержимого с форматированием.


                          В Angular нет поддержки использования форм вместе с contenteditable, поэтому написать её придётся самим.


                          Читать дальше →
                        • Улучшая performance review

                            Про то, как в Avito работает performance review, я очень много раз рассказывал внутри компании, а этой весной ещё и на двух конференциях — TeamLeadConf и CodeFest. Мы активно вкладываемся в доработку процесса, проводим много экспериментов и собираем кучу полезных данных, поэтому каждое новое выступление стабильно включает в себя какой-то новый контент. Цель этой статьи — не выдать вам готовое коробочное решение, а поделиться всеми практиками и инсайтами, которые мы обнаружили на своем пути.


                            Читать дальше →
                          • Общие компоненты силами разных команд. Доклад Яндекса

                              Создание и сопровождение общих компонентов — процесс, в котором должны быть заняты множество команд. Руководитель службы общих компонентов Яндекса Владимир Гриненко tadatuta объяснил, как их разработка переросла выделенную команду «Лего», как мы сделали монорепозиторий на базе GitHub с помощью Lerna и настроили Canary-релизы с внедрением в сервисы прямо в CI, что для этого понадобилось, а что ещё предстоит.



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

                              Читать дальше →
                            • 22 совета Angular-разработчику. Часть 2

                              • Translation
                              Сегодня мы публикуем вторую часть перевода статьи, которая содержит набор рекомендаций для Angular-разработчиков. В предыдущей части были представлены 11 советов, в этой мы рассмотрим ещё столько же.


                              Читать дальше →
                              • +22
                              • 13k
                              • 1
                            • 22 совета Angular-разработчику. Часть 1

                              • Translation
                              Автор статьи, первую часть перевода которой мы публикуем, говорит, что он уже около двух лет работает над крупномасштабным Angular-приложением в Trade Me. В течение последних нескольких лет команда разработчиков приложения постоянно занимается совершенствованием проекта — как в плане качества кода, так и в том, что касается производительности.


                              В этой серии материалов речь пойдёт о подходах к разработке, используемые командой Trade Me, которые выражены в виде более чем двух десятков рекомендаций, касающихся таких технологий, как Angular, TypeScript, RxJS и @ngrx/store. Кроме того, определённое внимание здесь будет уделено универсальным техникам программирования, которые направлены на то, чтобы сделать код приложений чище и аккуратнее.
                              Читать дальше →
                            • Ускоряем понимание коммерческого или технического текста: как перестать бояться писать просто



                                Читать молча мы научились относительно недавно. Раньше не было иного логичного способа читать, кроме как строго вслух. Фактический процесс чтения напоминает слушание двух голосов: один проговаривает слова текста, второй переводит их для нас на понятный нам язык.

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

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

                                Поэтому сейчас я расскажу базовые вещи, которые можно делать прямо здесь и сейчас у вас на сайтах.
                                Читать дальше →
                              • Проект К28А или велосипед нового поколения

                                Здравствуйте, многоуважаемые Хабровчане.

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

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