• Является ли порочной практика итеративных попыток сдачи тестировщикам сырых результатов работы?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    В итоге оказывается что во-первых было очень много багов, и во-вторых, требование программисты поняли не так, прочитали не все, да и в требованиях прямо каждая мелочь не была учтена. Программисты правят то что не нравится тестировщику и цикл повторяется снова и снова, пока вся команда не поймет задачу одинаково и результат не станет похожим на ожидаемый в требованиях.


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

    Эм, если все настолько плохо, что надо повторять цикл снова и снова, то где все это время был тимлид, который давал изначальную задачу?
    Его привлекать в первую очередь, чтобы он либо переобъяснил разработчикам все, либо поправил свои требования, чтобы они были понятнее.
    В моем понимании тимлид - это один из разработчиков, который ежедневно контролирует их работу, а не ждет пока ему принесут готовое через месяц.
    А так да, тестировщик помогает разработчикам правильно понять требования, но он не должен биться головой об стену в одиночку. Если разработчикам что-то неясно, они могут и сами поднять жёпку и сходить к тимлиду, к аналитикам, к тестировщикам чтобы понять задачу правильно.
    Ответ написан
    1 комментарий
  • Является ли порочной практика итеративных попыток сдачи тестировщикам сырых результатов работы?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Это нормальная практика, когда тестировщик итеративно смотрит сырые варианты. В определенных ситуациях это лучше, чем сделать готовый вариант, отладив программистами все баги и понять, что надо то было совсем другое.

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

    И самое главное - все очень сильно зависит от уровня разработчиков в команде. К сожалению, часто в том же бэке не видят дальше своего носа, отсюда и проблемы в духе "купи молоко, если будут яйца, возьми десяток"...
    Ответ написан
    6 комментариев
  • Как передать значение в объект переменной, чтобы она стала и ключем, и значением?

    Stalker_RED
    @Stalker_RED
    const a=1, b=2, foo='bar';
    const obj = {a,b,foo};
    console.log(obj); // -> {a: 1, b: 2, foo: 'bar'}

    Ответ написан
    Комментировать
  • Почему при == показывает false, а не true?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что объекты (а массив - это тоже объект) сравниваются не поэлементно. Сравниваются ссылки на объекты, а они разные, даже если содержимое объектов абсолютно одинаковое.
    1 == 1 // true
    [1] == [1] // false
    Ответ написан
    6 комментариев
  • Почему программа на JavaScript выводит ошибку Cannot read properties of undefined (reading '0')?

    @betterthanyouthink
    Начинающий программист :)
    поправьте условие в цикле на i < mas.length
    Ответ написан
    1 комментарий
  • Какие нужны характеристики для создания небольшого хостинга?

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

    Вообще, в наше время подобные задачи не решаются покупкой "здорового железного сервера заранее". Берут какие-то виртуальные мощности, которые, если проект взлетает, постепенно масштабируют. В какой-то момент, когда уже точно ясно, что клиентов достаточно - можно перейти и на своё железо, но точно не начинать с этого. Слишком капитальные затраты высокие, а ведь ещё нужно всё это администрировать, менять диски, например, сеть обслуживать...
    Ответ написан
    10 комментариев
  • Куда деваются дом элементы?

    Stalker_RED
    @Stalker_RED
    appendChild() не копирует элемент, а перемещает.
    Если вам нужно копирование - можно использовать cloneNode(true)
    Ответ написан
    2 комментария
  • Почему одни экземпляры создаём через new, а другие литерально?

    profesor08
    @profesor08 Куратор тега JavaScript
    Number(123) === 123 // true
    new Number(123) === 123 // false
    Number(123) === new Number(123) // false


    Изучай в консоли результаты выполнения. Есть примитивы, есть конструкторы примитивов. Это разные вещи.

    Почему? А вот так. Запомнить, принять.
    Ответ написан
    Комментировать
  • Почему одни экземпляры создаём через new, а другие литерально?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    console.log(new Number(1) + new Number(2)); // выводится 3 и typeof полученного значения number
    То есть всё в порядке, это то же самое, как если бы мы сделали:
    console.log(1 + 2);

    Число - это Primitive. У примитивов есть эквивалентные объектные аналоги (кроме null и undefined). Поэтому да, это "то же самое" в каком-то смысле (у примитива нет методов, в отличии от эквивалентного объекта, они не могут быть изменены, и.т.д., но в таких простых расчетах мы не обращаем на это внимания). А штуки вроде упомянутых промисов, дат и что там еще бывает - это будут уже не примитивные типы данных, там такой двойственности уже нет.

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

    Парный клик это дабл клик?
    Одиночный, Дабл, Трипл клик отслеживается
    button.addEventListener('click', event => {
      console.log(event.detail);
    });

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

    @dmshar
    Ваш пример - просто демонстрация того, что собственный проект это НЕ перспективы, НЕ независимость, и НЕ круто. Собственный проект - это в первую очередь целеустремленность, ответственность и квалификация. Очевидно, что это все есть далеко не у всех. Правильнее сказать - это есть у очень не многих.
    Ответ написан
    1 комментарий
  • Как удаленно проверить наличие пароля на BIOS из Windows 7?

    hint000
    @hint000
    у админа три руки
    Для этого ПК нужно подключить через IP-KVM.
    Стоимость IP-KVM сопоставима со стоимостью ПК.
    Существуют десктопные материнские платы с IPMI, но они очень дорогие и очень редкие.
    Ответ написан
    Комментировать
  • Почему скрипт не видит функцию в setInterval?

    @GrayHorse
    Функция functionName существует в контексте контент скрипта.

    При добавление кнопки с onclick="functionName()" по клику на нее functionName будет вызывать в контексте веб страницы, где данной функции нет.

    1. Добавь кнопку.
    2. Добавь эвент листенер через addEventListener на нее.

    Будет работать.
    Ответ написан
    1 комментарий
  • Почему одни языки быстрее, другие медленнее, и почему новички гуглят самый быстрый язык, а не самый медленный?

    @majstar_Zubr
    C++, C#, gamedev

    А как вообще определяется лучшесть и быстрость..
    А если один язык посчитал быстрее, значит он лучше?


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

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

    Почему новички гуглят самый быстрый язык, а не самый медленный?


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

    А количество написанных строк кода при достижении одинакового результата показывает какой язык лучше?


    Количество строк в решении задачи на языке А по сравнению с языком Б может позволить неточно оценить отношение цикломатических сложностей для решений. Но это имеет смысл только для языков из одной категории. Например, для ПО для работы с геоданными и картами может потребоваться встроить какой-нибудь существующий язык, либо навелосипедить DSL. К примеру, в качестве встраиваемых кандидатов можно взять lua, js, python. Если в аналитической модели большинство операций связано с операциями над множествами, то на тестовой задаче станет видно, что решения на python самые лаконичные. Если в модели много работы с данными разных типов, то возможно тут выиграет js. Если все модели данных уже предопределены, или в числодробилках задействованы распараллеливание вычислений, то скорее всего обвязка на lua даст самый лаконичный результат. Да, все дело в том, какие именно паттерны и модели изначально встроены в синтаксис языка. По факту, именно специализация языка на классе задач позволяет сделать решение лаконичным.

    Но лаконичность и скорость исполнения более важны для языков с JIT компиляцией. В AoT основная ценность это производительность программы и минимальное потребление ресурсов, в C++ лаконичность в решении это результат введения чего-то хорошего в стандарт. В целом, нужно исходить от класса задач, а не просто из количества строк.
    Ответ написан
    Комментировать
  • Зачем в интерфейсах логика?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    И как понять, где использовать абстрактный класс, а где интерфейс?

    Так же, как и раньше. Интерфейс - просто контракт, как правильно было сказано.
    Мало ли чем они там в Java8 упоролись, концепция ООП не должна из-за них страдать.
    Ну и, классика, следуй принципам SOLID, не смотря на особенности каких-то ЯП какими бы они ни были.

    Это холиварная тема, вот здесь есть обсуждение
    https://stackoverflow.com/questions/19998454/when-...
    Ответ написан
    2 комментария
  • Какие плюсы с перехода на react c vue?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Перейдя на реакт вы будете страдать. Реакт - это тупо даунгрейд. Всё то же самое, но хуже и местами отсутствует. Есть ли в нём хоть какие-то преимущества перед vue? Не знаю таких.
    Что за проблемы у вас с библиотеками?
    Ответ написан
    2 комментария
  • Какие плюсы с перехода на react c vue?

    Не уверен в том, что при малейших проблемах с хантингом на VUE нужно переходить на React. Ну в общем, если бы это был например выбор на Angular JS vs Angular я бы проголосовал за апгрейт на Ангулар вне зависимости от усилий, банально потому что содержание разработчика на устаревшем фреймвоке в перспективе выйдет дороже.
    Я почти уверен что на VUE все еще можно найти специалиста за адекватную цену.

    Пишу как React разработчик, я бы ориентировался на цену миграция vs зарплата разработчика, не вижу особой разницы с технической стороны.
    Ответ написан
    3 комментария