• Почему нечётное количество лопастей в куллере?

    Ocelot
    @Ocelot
    Это заговор производителей. Если бы лопастей было четное число, то сломав одну, достаточно было бы отломать противоположную, и кулер снова работает. А так только выбрасывать и новый покупать.

    На самом деле нет. Это сделано для снижения шума. На вентиляторах обычно делают не просто нечетное, а простое число лопастей: 3, 5, 7, 11... На пальцах эту аэродинамику просто так не объяснить, но чем меньше возможных резонансов у системы, тем тише.
    Ответ написан
    Комментировать
  • Как показывать тестовые задания на backend разработчика?

    @arkuzo
    Добрый день!
    Я сомневаюсь, что для тестового задания так уж нужно осваивать новую технологию - покажите, что вы уже умеете, ваш VDS - это отлично. Работодателя обычно волнует, что вы с этим сталкивались и уже разобрались, вам не придется с нуля вникать. Не стесняйтесь незнания некоторых технологий, продемонстируйте намерение учиться и все будет хорошо.

    Насчет Докера - проще разобраться, когда есть опыт работы (конфигурация + установка ПО) в командной строке какой-нибудь UNIX/Linux системы. По сути, чтобы развернуть среду, надо сделать несколько действий:
    1) Установить докер,
    2) Скачать какой-нибудь базовый образ контейнера (есть, например, контейнер на базе ubuntu, в который уже установлены apache + php 7.2)
    3) Сделать для этого образа Dockerfile, в котором прописать команды для установки дополнительного нужного ПО
    4) Сконфигурировать докер, чтобы папка на жестком диске на ваш выбор отображалась в файловую систему контейнера - туда, например, можно складывать статический контент
    5) Сконфигурировать необходимое ПО
    6) Залить данные и начать пользоваться)

    Большой +++++ - один раз составленный Dockerfile позволит неограниченно добавлять контейнеров с одинаковым ПО)
    Ответ написан
    Комментировать
  • Как правильно ходить на собеседования?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    На сколько так правильно делать?

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

    Учитывая тот факт, что (в жизни всякое бывает) может я захочу в будущем вернуться к данной вакансии.

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

    P.S.: А по поводу "домашних заданий" в комментариях верно говорят, зачастую их пачками раздают и вероятность положительного исхода стремится к нулю.
    Ответ написан
    Комментировать
  • Какие грэйды развития внутри вашей компании?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Для Junior -> Middle надо разбираться в том продукте, который клепаете.
    Для Middle -> Senior надо уметь писать не говнокод; понимать как проектировать архитектуру так, чтобы через годик-другой её не хотелось бы выкинуть на помойку. Senior часто занимается реализацией нового функционала, к которому после него еще будут другие разработчики прикручивать фичи по желаниям заказчика.

    Какие-то критерии для переходов и грейды есть, но это просто бумажка\табличка в Excel. Обычно всё обсуждается лично на performance review.
    Ответ написан
    Комментировать
  • Может кто знает курсы для тимлидов/проект менеджеров?

    opium
    @opium
    Просто люблю качественно работать
    читайте книжки по управлению людьми и по организации работ ы
    Ответ написан
    1 комментарий
  • Что делать если тимлид неквалифицированный специалист?

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

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

    Что вам делать - решайте сами, потому что информации слишком мало.
    А по сути - в любой крупной компании есть проекты не очень, есть сотрудники не очень, и вообще 95% населения идиоты. Айтишники не исключение.
    Ответ написан
    2 комментария
  • Как растить ПМа и тимлида в коллективе?

    @step307
    Профессиональность тимлида в технической области — это только пол дела.

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

    Вобщем хороший программист — это еще не тимлид. Даже больше скажу, сверх гуру программирования — никакой тимлид, т.к. скорее всего асоциальный аутист.
    Ответ написан
    Комментировать
  • Как растить ПМа и тимлида в коллективе?

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

    Как вырастить? Да, ни как, т.к. упирается в личные качества человека.

    Самый эффективный подход — это элементарный перебор людей на этой должности. Поставили одного, посмотрели, как держится. Если сохранил хотя бы порядок в коллективе, пусть продолжает. Если, у него что то не клеится, меняйте. И так пока не найдёте.
    Ответ написан
    1 комментарий
  • Как растить ПМа и тимлида в коллективе?

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

    PM тогда, соответственно, должен собирать митинги по вопросам «что было сделано/что планируется», осуществлять непосредственно выбор задач на следующую итерацию/версию, и т.д. — детали адаптируете под свои реалии.
    Требования к нему по технической части — меньше, конечно, чем к тимлиду, и даже меньше чем к опытному программисту, однако коммуникативные и организационные навыки должны быть высокими.
    Ответ написан
    Комментировать
  • Можно ли найти настоящего Team Lead Senior разработчика на удаленку?

    sim3x
    @sim3x
    0. Все меняется и даже ТЛ может потерять работу
    1. Найдите свои конкурентные преимущества для каждого конкретного кандидата
    2. Окучивайте одновременно много людей, которые вам подходят. Те даже после отказа от вашего предложения пересекитеь и поговорите
    3. Переберите на себя часть полномочий/задач/обязанностей - найти просто хорошего программера проще, чем синьйора + ТЛ
    4. Ищите на вырост. Хороший мидл с качествами ТЛ со временем станет синьйором
    5. Готовых рецептов нет
    Ответ написан
    Комментировать
  • Как мягко отказаться от выполнения тестового задания если выслал уже тонну примеров своего кода?

    GavriKos
    @GavriKos
    Сказать "я не готов к выполнению тестового задания потому что нет времени."
    Ответ написан
    Комментировать
  • Есть идея, простая как валенок, с чего начать?

    @ssneg
    Если эта идея стоящая и её миллионный потенциал понятен с первого взгляда, то через месяц после запуска вашего сайта за написание клонов возьмутся Серьезные Ребята Рунета. У них будет на порядок больше денег и людей на написание, раскрутку, поддержание, добавление новых фич, перевода на разные языки и т.п., так что если вы пишете впятером полгода, они справятся за пару месяцев, и скоро твой сайт сдохнет. А все почему? Потому что идея не стоит ничего, хотя современному школьнику этого не понять. Удачи.
    Ответ написан
    Комментировать
  • Есть идея, простая как валенок, с чего начать?

    @loat
    А когда сайт уже будет готов вы ссылку на него давать будете или будете боятся, что у вас могут его скопировать?
    Ответ написан
    2 комментария
  • Стоит ли брать Macbook Pro Retina 13" Late 2013 в 2017/2018 году?

    lipasite
    @lipasite
    Учитывая кучу проблем и головной боли у новых Маков 2016-2017 лучше остаться на 2015 Маке.
    1. Залипают клавиши, щелчки у отдельных клавиш гораздо громче других
    https://www.youtube.com/watch?v=K5-xRCwUffo
    2. При работе через Bootcamp на Windows быстро разряжается, так как задействуется интегрированная видеокарта
    3. У некоторых людей - при выходе из режима сна при подключенном внешнем дисплее перезагружается
    https://discussions.apple.com/thread/8123406?start...
    https://www.youtube.com/watch?v=QtrylLZNOcA
    4. При интенсивном использовании интернета отваливается Wi-Fi
    https://discussions.apple.com/thread/8011707?start...
    5. Если потрясти Мак из стороны в сторону, то внутри что-то гремит.
    https://www.youtube.com/watch?v=QtNrwKyGYUA
    6. Мак издает непонятные щелчки в состоянии покоя.
    7. Урезанное время работы, 10 часов - провокация, на самом деле работает максимум 5 часов при серфинге через Wi-Fi.
    8. Когда закрываешь крышку, после открытия на дисплее остаются отпечатки пальцев с клавиатуры.
    https://youtu.be/q-RceqzSkHs?t=122
    9. Неремонтнопригодный. По версии iFixit Macbook pro 2016-2017 набрал 1 балл из 10.
    10. SSD впаян в материнку. Если он вдруг полетит, то придется менять ее всю полностью.
    Погугли запросом "MacBook Pro 2017 issues" и найдешь более 10 перечисленных недостатков и багов.
    ИМХО, сейчас лучше остаться на 2015 Маке.
    В 2018 выйдет новый Мак на архитектуре CannonLake по 10нм процессу с поддержкой 32 GB RAM.
    Опять же, будут ли там касяки с Wi-Fi, видеокартой, клавиатурой - вопрос.
    Ответ написан
    Комментировать
  • Стоит ли подписывать такого рода NDA договор?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    можете смело подписывать, у этих ребят нет никаких реальных вариантов с вас в России взыскать эти 5К, в чем бы вы не были "виноваты".
    Ответ написан
  • Нужно ли учить Symfony, после Laravel?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    hovdev, ну тут на самом деле в постановке вопроса основной интерес.

    нужно ли знать Symfony для Senior PHP Developer если ты знаешь Laravel ?


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

    Кто-то останавливается на знании wordpress и wp api, но при этом считает себя senior wordpress developer, потому что может на wp любой сайт сделать в рамках конкретной фирмы.
    Кто-то учит один фреймворк от и до, принимая его практики как единственно верные, и считает себя senior {{ framework_name }} developer. Например, на yii на просторах СНГ таких людей много.
    Кто-то изучает несколько фреймворков, и конкретизации в умениях становится меньше, выбор подходящих инструментов и практик более осознанным и широким
    А в какой-то момент приходит понимание, что фреймворки - это просто инструменты, и можно выбрать и использовать оптимальный для задачи. Или фреймворк на самом деле даже и не нужен, и достаточно взять несколько библиотек, или микрофреймворк. Или просто написать свою библиотеку под задачу.
    А после этого приходит осознание, что в общем-то можно и не быть PHP Developer, а скорее Backend developer, потому что в сферу компетенций на самом деле входят задачи решаемые не фреймворками и PHP, а просто сервером. Где-то нужно на python что-то заскриптовать, где-то на lua модуль для nginx прилепить, где-то оптимизировать узкое место на go - и тд. Решать любые возникающие задачи одним Laravel-ем уже не получится.

    Если посмотреть, например, чем занимаются PHPшные монстры типа Badoo - то там о фреймворках вообще ни слова

    Поэтому,
    нужно ли знать Symfony для Senior PHP Developer
    - конечно не нужно, Сеньором в зависимости от фирмы можно быть даже делая сайты на Bitrix, и получать за это вполне себе хорошие деньги. Но действительно отличный разработчик должен иметь более широкий кругозор, разнообразный инструментарий и - главное - желание знать и уметь больше, чем просто один инструмент.
    Ответ написан
    1 комментарий
  • Попросили проверить код, на что смотреть нужно?

    apavlyut
    @apavlyut
    www.pavlyut.ru
    Все комментаторы совершили одни и те же ошибки управления потому что, при всем уважении, скорее всего за эти ошибки (в стратегировании) они не платят из своего кармана.

    На пальцах отвечаю на ваш вопрос:

    1) По структуре - при проверки качества кода / решения / задачи / продукта / настройки сервера и так далее нужно проходить по списку (чеклист) критериев контроля качества - обычно они выглядят как списки определенных параметров которые может замерить третье лицо или сама система - формат проверяемого параметра прямо вот соответсвует / не соответсвует. На сколько процентов пройден чеклист - на столько процентов результат "качественный"
    2) Почему ребята ошиблись - потому что стали приводить конкретные списки. Дело в том что у каждого проекта / сиутации / команды / набора компетенций - свои наборы таких чеклистов на разные ситуации. В больших командах сущесвтует основной чеклист который регламентирует CodeReview - и за него отвечает как правило тим лид - он его обновляет, развивает, обосновывает внесенные правила и следит за тем чтобы ПЕРЕД началом разработки все разработчики были ЗАРАНЕЕ ОЗНАКОМЛЕНЫ с этим порятком проверки качества, а все потому что:
    3) Количество стайлгайдов и критериев в приципе существует огромное количество - и то как каждому в одной части света / компании удобно делать одно дело - не регламентирует ни разу что именно так же другому человеку в другой ситуации применять эти правила к своему контексту. В виде открытых стайлгайдов они существуют для накопления практик и навыков в первую очередь для их же развития (процесс формулировки наводит порядок в голове) а также дают возможность "на них конкретно" нанизать точечные ответы огромного сообщества людей, и получить те самые разные взгляды на ситуации, и по возможности опять же привести к общему знаменателю. Но это все мелочи жизни, а в вашем случае вы совершите серьезную ошибку если прямо сейчас возьметесь (примите на себя ответственность) проверять чужой код на предмет оценки, потому что:
    4) Вас явно используют как внешнего эксперта на которого можно сослаться, от которого можно получить якобы аргументацию для давления на свою позицию при решении какой-то возникшей ситуации во взаимоотношениях клиент-разработчик на проекте куда вас приглашают за экспертизой.
    Если вы, не предупредив, о том что "качество кода" начинается с декларации этого качества (в случае если речь идет о проверке этого внутреннего качества в рамках сотрудничества, а не самих задач которые поставлены перед создаваемой системой - фичесов) - любая ваша оценка будет недостоверна контексту ее применения (вы напишете про строки или еще что-то - а у человека будут либо взыскивать деньги / либо недоплатят за работу / или инкапсулируют в договоренности пост фактум за те же деньги работу над соотвествием определенным стилям - это все работа которая должна быть оплачена). Поэтому вот вам вилка ваших дейсвтий:

    1) Если у вас просто просят менторства молодые коллеги - дайте им ссылку на гугл и ключевое словосочетание php style guide github
    2) Если вас спрашивают (либо вы сами являетесь таким заказчиком который ищет за что зацепиться в коде чтобы продавить свою позицию) - нет критериев качества кода ДО начала работ подписанных на бумаге / пересланных по почте - никакие критерии не могут быть применены к текущим отношениям - только к следующей итерации за следующие деньги.
    3) Если вы все же разработчик и вас попросили оценить код - донесите данную ситуацию до стадии корректного закрытия текущего этапа работ - но дальше предложите уже введение стайл гайда если оно того требует. Я полагаю что на самом деле нет. Дав сейчас ответ на вопрос в виде оценки качества кода вы сделаете только одно - абсолюно необоснованно дадите агрумент в явно перекошенном споре, и просто возьмете на себя еще один мешок кармогрязи которую будуете еще сколько-то положенного времени отрабатывать.

    Подумайте хорошо на эту тему - придется выбрать свою сторону.
    Ответ написан
    Комментировать
  • С чего начать в IT в 27 лет для девушки?

    @chromimon
    Если вы пишете "для девушки", то подразумеваете, что вы не равны? Сами себе хотите снизить планку трудности?

    Ну тогда:
    1. Спортзал.
    2. Косметический салон
    3. Модный магазин
    И - вперед, соблазнять руководителя ИТ-предприятия.

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

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

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

    Среди высококвалифицированных специалистов ситуация обратная. Заказчики ищут путного специалиста, переворачивая горы шлака.

    Чтобы стать квалифицированным специалистом - нужно время.
    Чтобы за это время не растерять интерес - нужно заниматься тем, что интересно именно тебе.

    Вывод: если хочешь зарабатывать в ИТ, то найди то, что тебе нравится.

    Основные направления программирования, по которым много предложений:
    фронтенд веб-серверов (программирования внешнего вида сайтов), бэкенд веб-серверов, мобильные приложения (Андроид, Эппл айОС).

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

    Если стоит цель максимально быстро: я бы предложил фронтенд.
    Есть и сложный фронтенд.

    Но нижняя планка довольно низка.
    Там даже программирование знать не нужно.

    Еще вариант - почему то очень много девушек в тестировании.
    Но это тоже элементы программирования.

    И третий вариант - лабать сайты на CMS Wordpress.
    Предложений очень много. Но это скорее фриланс, вряд ли найдется такая работа на фирме, чтобы вам дали рабочую визу
    Ответ написан
    7 комментариев
  • Что спрашивают на собеседовании в Яндекс?

    meteozond
    @meteozond
    Не знаю как насчет c++, я одил сегодня на python-иста.

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

    Была классическая, для яндекса, задачка, неоднократно упомянутая в Радио-Т, про банерокрутилку. Задача элементарна и не стоит выеденного яйца. Однако нужен только один конкретный единственно правильный ответ, до которого я лично, к стыду, не додумался. Вспомнились задачаки на сообразительность (про монетки, рюкзаки и стаканы) на которые можно ответить только заранее зная ответ.

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

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

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

    Отдельно стоит упомянуть, что дав задание интервьюирующие принимаются за досужую беседу, которая конкретно мешает, когда надо основательно поскрипеть мозгами.

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

    И да, выходя из здания, чувствуешь некислый батхерд.
    Ответ написан
    2 комментария
  • С чего начать изучение написания TDD - тестов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нужно писать TDD тесты.

    Нет, нет такой вещи как "TDD тесты". TDD это одна из методик экстремального программирования (XP). Вам уже привели ссылку на книгу Кента Бэка на эту тему (к слову крайне рекомендую)

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

    - Красный - перед тем как написать код, мы должны написать тест который ломается (обычно в консоли сломанные тесты подсвечиваются красным). Согласно этой методологии писать код вы должны строго тогда, когда у вас есть сломанные тесты. Если сломанных тестов нет, то и код писать не нужно.
    - Зеленый - когда вы получили красные тесты, вы должны максимально быстро дописать код так. что бы тесты были зелеными. Скажем если вы написали тест который ожидает от функции, что она вернет строку "foo" то в коде у вас должно быть не больше чем сама функция и вывод строки "foo". Как только мы этого добились мы либо рефакторим, либо добавляем еще красных тестов что бы потом дописать код. Конечно настолько примитивные вещи делать по такому циклу избыточно, и у Кента Бэка описывается понятие "длины шага", то есть сколько работы мы можем делать на каждом этапе. Вы всегда должны подключать здравый смысл словом.
    - Рефакторинг - на предыдущих фазах мы не загонялись о том насколько наш код красив, насколько мы соблюдали принципы DRY и т.д. так что это фаза отчистки кода. Мы можем делать ее на каждой итерации, а можем раз в пару часов, но важно делать это как можно чаще. На этом этапе мы устраняем дублирование как в коде приложения так и в тестах. Важно отметить что хорошей мыслью будет не рефакторить одновременно и код и тесты, ибо у нас должен быть источник правды. Если мы почистили тесты и при этом они начали фэйлиться, то значит мы что-то сломали пока числити. И наоборот. А если менять и то и то между запусками тестов то не понятно кто виноват.

    Обычно TDD практикуют используя unit-тесты (что логично, ибо они выполняются достаточно быстро что бы выполнение тестов не заставляло нас заваривать чай), что подразумевает собой то, что мы тестируем один юнит (один класс или объект), а все его зависимости должны подменяться на моки (фэйковые объекты, которые нужны что бы проверить как наш объект взаимодействует с другими, об этом тоже много написано). Но никто не запрещает использовать интеграционные/функциональные тесты и при этом практиковать TDD (так например делают чуваки практикующие BDD), а Кент Бэк это дело называет ATDD.

    Собственно TDD дает нам следующие преимущества:
    - вы не тратите время на проектирование системы в микроскопических масштабах, это эволюционный подход, архитектура приложения постоянно меняется и эволюционирует вместе с требованиями. Все требования формализуются в виде тестов.
    - код всегда покрыт тестами (пусть и не на 100%, обычно хватает и 20% что бы можно было жить, все зависит от сроков жизни проекта и требуемого уровня надежности)
    - если вам становится трудно писать тесты (например много зависимостей, сложно мокать) - то это должно навести вас на мысль о не правильной архитектуре и инициировать более глубокий рефакторинг. А при наличии тестов это не так уж и страшно.
    - необходимость покрывать тесты увеличивает потребность в соблюдении всяких принципов типа SOLID и т.д. так как иначе мы начинаем писать тесты очень не эффективно и опять же возвращаемся к тому что с архитектурой что-то не так.

    updated

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

    Минусы TDD проистекают из плюсов. Это эволюционный подход, который хорошо работает когда мы вносим изменения в систему маленькими порциями и всегда рефакторим наш код, что бы он большую часть времени был красивым и удобным к расширению. Если же вам в руки дали легаси проект и сказали отрефакторить, то TDD тут не подходит или подходит плохо. Но опять же такая задача ставится довольно редко, чаще - добавление функционала. И в этом случае мы возвращаемся к внесению изменений маленькими порциями и эволюционному подходу. Просто на это уйдет довольно много времени, но если сравнивать с "рефакторинг + добавление функционала + регрессионное тестирование" то в зависимости от ситуации TDD может дать как профит так и нет. Все зависит от сложности системы. На простых системах в этом нет смысла.

    По поводу области применения... Тут есть несколько точек зрения. Как минимум TDD решает вопрос проектирования архитектуры, а не разработки алгоритмов. Этого мы достигаем тестами. Но опять же через юнит тестирование довольно не удобно разрабатывать определенные типы проектов: комиляторы, трансляторы, различные решения основанные на сложных алгоритмах (например алгоритмы сжатия, шифрования и т.д.), штуки завязанные на сетевом взаимодействии, например клиенты для протоколов. Для этих вещей больше подходят функциональные тесты или же их вовсе сложно покрыть тестами.
    Ответ написан
    5 комментариев