Найти тему
Войти в IT

Гений или идиот? Как отличить хорошего программиста от плохого?

Оглавление

В оппозицию ко недавней статье про «Синдром самозванца», добавляю ещё один угол обзора. «Эффект Даннинга-Крюгера», или метакогнитивное искажение у низкоквалифицированных людей. Да, сегодня снова будет нуднота про когнитивные искажения, применительно к программированию и информационным технологиям.

Условно говоря, это противоположное состояние к «Синдрому самозванца». Итак, симптомы: сильное завышение своих способностей, непризнание собственных ошибок, ложное определение пределов компетенции, раздутая самооценка, высокая ранимость к критике, ощущение всемогущества и т.п.

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

Кто автор? Стоит ли этому верить?

Как можно догадаться, эффект назван в честь его первооткрывателей — Джастина Крюгера и Дэвида Даннинга. В далёком 2000-м году они выпустили статью с вот таким названием: «Неквалифицированный и не осознающий этого: как трудности с признанием собственной некомпетентности приводят к завышенной самооценке». ( Вот ссылка на эту работу ) Ну и с тех пор, пошло-поехало.

Хочу заметить, что это не какая-то там желтушная статья в стиле «Я так считаю, потому что я так считаю». Это вдумчивый научный труд, с графиками и 62 сносками на другие научные труды из психологии и других сфер. Тем не менее, даже с учётом этого, эффект не является клиническим диагнозом. Скорее, это набор поведенческих моделей, свойственный определённым людям.

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

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

Как "Эффект Даннинга-Крюгера" работает в реальной жизни

Так вот, ближе к делу. Описательная часть эффекта сводится к следующему. Начиная изучать любое дело (профессию, новые для себя навыки), человек в течение короткого периода времени приходит к мысли о том, что ему «всё понятно», и он постиг мастерство с совершенстве. Этот момент называется «Пик глупости».

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

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

Обычно таким всегда и во всём всё понятно. Они одновременно лучшие инженеры, самые талантливые электрики, эксперты в экономике и политике, великие повара, и так далее. «Зачем покупать готовый товар или услугу? Да я сделаю гораздо лучше и за бесплатно!», «Да что он-там знает со своими двумя образованиями? Ясно-же, что там всё проще простого!» Ну и всё в этом духе.

Почему легче принимать решения при низком уровне компетенции?

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

Низкоквалифицированный специалист - наоборот, не обременён грузом практического опыта. Он оперирует теорией, и своими субъективными представлениями о предметной области. Можно сказать, надеется на чудо, и лояльность окружающего мира к делаемому делу. Соответственно, такой человек принимает решение в полной уверенности верности своего выбора. И уже потом сталкивается (или не сталкивается) с последствиями выбора. С моей точки зрения, неквалифицированные решения имеют меньшее качество, но большую скорость реализации.

-2

На мой практике, я сталкивался как с первой, так и со второй категорией людей. Очень интересно наблюдать за происходящими процессами в обоих кейсах, и сравнивать результаты. Особенно для информационных технологий. Да что и говорить, я и сам когда-то прошёл и через "Пик глупости", и через "Долину отчаяния". И я могу сказать следующее. Иногда, "неквалифицированные решения" прокатывают. Звёзды сходятся в едином месте волшебным образом, и люди без практического опыта предлагают совершенно уникальные идеи, которые оказываются рабочими и эффективными. Но есть одна оговорка - это происходит примерно в 10-15% случаев (опять же, из личной практики).

Низкоквалифицированные решения в информационных технологиях - на чём они основаны и чем опасны

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

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

В эту же копилку можно добавить создание продуктов и систем по принципу "всё включено", а не через микро-тестирование создаваемого продукта. Иначе говоря, квалифицированный программист старается сократить лишний труд, и минимизировать риски провала. Хороший программист чаще предлагает создавать новые системы на основе уже существующих. Работать "иттерациями", и не вбухивать огульные количества ресурсов в создание чего-то нового "просто потому что он так видит мир". То есть, более квалифицированные IT-специалисты склонны экономить ресурсы - как свои, так и своих коллег / руководителей / партнёров.

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

Из личного опыта

Около года назад мне передали на аудит, а потом в управление разработку CRM-системы для известного геодезического предприятия. Масштабы предприятия: около 100 геодезистов, порядка 30 менеджеров, бухгалтеры, собственный парк современных автомобилей, огромное количество всевозможных приборов для измерений, и прочее подобное. Короче, крупное предприятие с длинной историей и уважением со стороны заказчиков. Техническая задача моего участия была сформулирована так: "Мы не уверены в том, что наши подрядчики понимают что они делают с CRM-системой, нам нужен аудит и срочный выпуск работающей версии".

Цепочка принятия решений в этом случае выглядела так. Руководитель предприятия делегировал задачу не IT-директору, а "подающему большие надежды дарованию". Тот, не имея реального опыта по выбранному направлению, но имея большие амбиции и "личное видение", лихой рукой внёс корректировки в ТЗ и передал разработку на аутсорс, внешнему подрядчику. Внешний подрядчик тоже не сильно запарился, и передал разработку в Индию, не получив внятных требований и границ от заказчика и руководителя проекта. Специалисты из Индии перевели ТЗ "как умели", и сделали "как видели". Итог - совершенно безумные наборы кода вне всякой архитектуры, SQL-запросы открытым текстом в JS-файлах. Загрузка 2 тысяч строк в веб-интерфейс за добрые 40 секунд вместо ожидаемых 1.5. И прочее подобное. Куда смотрели все участники этой цепочки, осталось неясным.

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

Как вести себя с людьми, подверженными эффекту "Даннинга-Крюгера"?

Исходя из моего опыта — оставить их в покое, и просто ждать. Человек с низкой квалификацией сделает 2-5-10 ошибок, и на этом закончит игры в «великого специалиста». Потом произойдет «Долина отчаяния», и человек или уйдет из профессии, или начнет последовательно просветляться в сторону экспертности. Если решения были приняты действительно "плохо", то рано или поздно они проявят себя. Если же на основе "низкоквалифицированных решений" удалось создать что-то эффективное - чтож, значит в этот раз повезло.

Что делать, если сам являешься таким человеком? Воистину, признание проблемы есть первый шаг в решении проблемы 😉 Заметив за собой девиативное поведение с точки зрения переоценки собственных сил, достойным решением является прекратить делать то что делаешь. И какое-то время провести в саморефлексии, и в поиске ответов на вопросы «Почему я попал в такую ситуацию?» и «Почему мне так важно быть хорошим для других?».

Рефлексировать можно в блокноте, личном блоге или в диалогах с другими людьми. Ну и конечно - гугл / яндекс тебе в помощь, как дополнительный источник информации. Будь здоров, объективен и эффективен, дорогой читатель!

-3

#программист #it #itтехнологии #обучениепрограммированию #информационныетехнологии #айтишник #программирование #программированиеснуля #программированиедляначинающих #языкпрограммирования #технологии #образование #студенты #личныйопыт

🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥

-4

🚀 P.S. Ты можешь круто поддержать меня и проект "Войти в IT" на boosty! Я публикую там более эксклюзивный и профессиональный, иногда немного личный контент. Хочешь посмотреть как я выгляжу в реальной жизни? Тогда жми: Ссылка 🚀

P.S.2 У меня ещё есть Telegram-канал. Там посты чуть попроще, и чуть повеселей. Ссылка