К основному контенту

Почему мы выбираем неправильные технологии?

Интересная статья "Why Developers Keep Making Bad Technology Choices" про причины того, почему можно промахнуться с технологиями.

Причина 1: Скука
Редко кому удается постоянно работать над интересными проектами, где можно использовать новые технологии. Чаще приходится решать уже давно решенные проблемы. Из-за этого возникает соблазн заменить старую, давно используемую библиотеку или базу данных на новомодную, свеженаписанную и активно рекламируемую технологию. Просто, чтобы не скучно было. Часто это слышал в своей практике. Кстати про это (внедрение новых технологий в проектах) я уже писал (пункт 5 и 6).

Причина 2: Наполнение резюме
Это самая грустная причина, но часто встречаемая. Разработчики начинают использовать технологии для получения некоторого опыта, чтобы потом была возможность добавить новую строчку в резюме. При этом то, насколько полезна эта технология, вторично. Самое забавное, что  часто неважно насколько глубоко человек разбирается в технологии - ведь люди склонны верить, тому кто ищет работу. И даже принцип "доверяй, но проверяй" не помогает: сложно оценить реальных уровень знаний на собеседовании (можно попытаться, но тема собеседований - это отдельная тема). Поэтому программные продукты, от малых до больших, используют непроверенные технологии, или технологии в которых никто не разбирается. В итоге компании остаются с системами использующими ооочень много технологий и которые некому поддерживать: разработчики то, дополнив резюме, ушли :)

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

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

Причина 5: Неверное понимание или решение несуществующих проблем
Известно также, что разработчики склоняются к применению технологии, потому что она позволяет делать А и B, а также позволяет избавиться от C. Но на самом деле, ни того, ни другого, ни третьего нет в вашем проекте. И использование технологии оправдывается словами "а вдруг пригодится" или "у всех есть эти проблемы, значит и нам тоже надо о них думать".

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

  • Рассмотрите требования по стабильности, устойчивости к отказам, производительности и тд
  • Оцените то, что у вас используется сейчас. Насколько оно удовлетворяет вашим нуждам. Если проблем нет, то может и не надо затевать изменения?
  • Исследуйте, как другие технологии могут вам помочь. При этом обязательно учитывайте зависимости, которые принесут они за собой - бесплатного ничего не бывает, за все надо платить.
  • Выясните то, что знает ваша команда и предпочитайте то, что вы хорошо знаете.
  • Учитывайте затраты времени, стоимость и тп
  • Обсудите с командой все плюсы и минусы
Все выше сказанное не должно восприниматься как совет избегать использования новых технологий. Просто их применению должны быть причины. И постарайтесь, чтобы эти причины не входили в выше приведенный список :)

Комментарии

Популярные сообщения из этого блога

Mock vs Stub

Когда мы начали изучать модульное тестирование, то одними из первых терминов, с которыми пришлось познакомиться, стали Mock и Stub.

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

Проверять работоспособность тестируемого объекта (system uder test - SUT) можно двумя способами: оценивая состояние объекта или его поведение.

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

Во-втором, мы проверяем набор и порядок действий (вызовов методов взаимодействующих объектов, других методов SUT), которое должен совершить метод SUT.

Собственно, если коротко, то в одном случае используется Stub, а в другом Mock. Это объекты, которые создаются и используются взамен реальных объектов, с которым взаимодействует SUT в процессе своей работы.

Теперь подробнее.

Gerard Meszaros использует термин Test Double (дублер), как обозначение для объекта, который зам…

План "Б" или как прикольно провести субботний день

Всем привет.
Вчера состоялась конференция "План Б". Организаторами выступили ребята из Яндекса, за что им большое спасибо. Судя по приблизительным подсчетам в мероприятии участвовало около 200 человек.

Основной темой конференции было планирование, планирование всего: проектов, разработки, тестирования, дизайнеров и даже организации музыкального фестиваля.
Сначала думал написать отчет в обычном своем стиле: кто и что говорил, но почитав твиттер по #pbconf понял, что просто потеряю время :) Поэтому кому оооочень интересно узнать подробности следуйте за птичкой и вы все узнаете (тэг #pbconf попал в top-30 твиттера)
Здесь приведу лишь те вещи, которые мне запали в мозг
Роман Чернин о продуктовой разработке: "нет заказчика, нет требований, нет сроков -> как принимать решения? ответ: заводим себе Product Manager-а"
Оля Павлова (@op): "бойтесь иллюзии точной формулировки" "заказчик - ребенок, выдаем ему игрушку как можно чаще" "не забываем, …

Полезные ресурсы для молодых (и не только) тестировщиков

Уже 3 месяца провожу собеседования тестировщиков.
Поначалу они просто  веселили - после 15-летнего опыта собеседования С++-разработчиков, общение с тестировщиками (чаще были "-цы") было чем то экзотическим и забавным.

Потом становилось все грустнее и грустнее, мимими закончилось. Началась печаль.