Психологическая деформация программистов. Взгляд с обеих сторон баррикад / Хабр
Само наличие психологической деформации у какой-либо профессии, как правило, достаточно спорный момент ввиду того, что у разных людей она проявляется по-разному. Однако общую тенденцию можно выделить и, пожалуй, настало то время когда можно достаточно смело говорить, что программисты всё же имеют свой особенный психологический портрет который обусловлен их профессиональной деятельностью.
Я достаточно часто сталкивался с подобным мнением и не придавал ему особого значения, но когда женский коллектив нашей организации поздравил программистов с 23-м февраля по доброму назвав их «космическими войсками», решил всё же расставить определенные акценты в данном вопросе, т.к. одна из моих профессий связана напрямую с психоанализом. Да и баш уже не молчит.
Сразу стоит заметить, что программист много времени проводит за компьютером, следовательно, многие из перечисленных пунктов относятся не только конкретно к программистам, а и к «компьютерщикам» в целом.
Гиперконцентрация
Каждый программист знает, что хорошая и качественная работа над кодом требует очень высокой степени погруженности в код. Кто-то старается себя изолировать наушниками, кто-то ставит таймеры, выключает все внешние раздражители и т.п. Степень концентрации при работе программиста сравнима с работой на ядерной станции. Соответственно, всё это порождает повышенную раздраженность при прерывании данного процесса, что внешне воспринимается непосвященными людьми как «замороченность на работе» и т.п.
В реальной жизни это также может вызывать свои эффекты, как например бытовые дела тоже по привычке начинают производиться в режиме гиперконцентрации. Например, во время уборки в квартире программист не будет параллельно думать о миллионе дел или безудержно болтать по телефону. Скорее он погрузится в какую-то свою задачу (может и в саму уборку) и просто будет заниматься процессом. Не стоит от программиста «требовать внешнего внимания», когда он прогружен в код или какую-то задачу.
Погруженность во внутренние образы и конструкции
Работа программиста имеет свою специфику, которая в аналогичном виде более всего присуща профессии инженера-изобретателя. Если вы знакомы с трудами Никола Тесла, то сможете вспомнить как он описывал то, что происходит в его голове. Если вкратце, то в голове Тесла мог построить механизм, запустить его и даже «прокрутить во времени» его работу, чтобы понять какие детали будут изнашиваться и где могут возникнуть проблемы в будущем. Не менее сложные конструкции возникают и в процессе профессиональной работы программиста. Данный эффект называется образно-чувственным конструированием. Если обыватель видит на экране только наборы символов, то в голове программиста этот код превращается в целые части мира. Как чтение книги создает образы и переживания в человеке, так и код способен такое же делать с программистом. Именно поэтому программисты «чувствуют» код, знают когда он «красив», когда «грязен», будет ли он работать и т.
В реальной жизни это проявляется в чрезмерной погруженности внутрь себя, особенно если программист пытается что-то понять. Если деформация значительна, то программист может начать строить целую схему того, что сейчас происходит. Именно поэтому часто «построенные схемы социальных взаимодействий», например политика, у программистов вызывают чувство «грязного кода» и отторжение. В повседневной жизни это иногда может частично восприниматься как легкая форма аутизма, хотя на самом деле это не так. Человек вполне адекватен и открыт к взаимодействию с внешним миром, но вот сами механизмы взаимодействия имеют указанную специфику.
Низкий уровень социального взаимодействия и его разнообразия в повседневной работе
Данный момент не является «де факто», однако всё же периодически встречается и может играть свою определенную роль в деформации психики. Так как большую часть рабочего времени программист проводит в мире кода, и единственными «собеседниками» в нем являются «методы, функции, объекты, модули, пакеты и т. п.», соответственно и уровень социального взаимодействия у программистов, как правило, ниже, чем в большинстве профессий. Это связано еще не столько с тем, сколько людей вовлечено в работу, сколько с тем, думает ли о других людях в данный момент сам человек. Если работу дворника сложно назвать «активно социальной», тем не менее, сам дворник может в этот момент размышлять о жене, детях, друзьях и т.п. А для программиста же такая возможность отсутствует, он должен быть погружен в код. И хотя часто имеется рабочий коллектив, но коллектив, как правило, таких же программистов. Программистам иногда сложно работать рядом с людьми других профессий. Так что если степень деформации в коллективе высока, то это лишь усугубляет данный фактор (социального разнообразия отношений).
Обостренное восприятие причинно-следственных связей
Любой код должен работать, но чтобы написать работающий код, нужно понимать структуру причинно-следственных связей этого кода. Проще говоря «что, почему и как происходит», а также «что произойдет, если что-то не произойдет как ожидалось». Всё это накладывает свой отпечаток и на мышление человека. Данный способ мышления еще принято называть «техническим складом ума», когда человек старается найти всему рациональное объяснение и понять причинно-следственную связь. Отдельные программисты помимо написания кода часто втягиваются в технические аспекты, как например разработка аппаратуры под свои нужды (привет «паяльникам»). Порой это может доходить до уникальных надстроек в психике. Например, когда сложная застежка бюстгальтера девушки вызывает столько же интереса, как и то, что этот бюстгальтер скрывает.
Со стороны это часто может восприниматься как «замороченность над мелочами». То что не вызывает интереса для большинства людей, в программисте может порождать огромные потоки размышлений. Соответственно, так как не пропорциональны объемы приложения умственных усилий, то выводы, которые делает программист об эффектах реального мира, порой могут казаться «чудаковатыми» и восприниматься с определенным удивлением. Но что удивительно, если вы спросите программиста почему он так решил, то, скорее всего, получите целую цепочку причинно-следственных связей, и почти всегда вполне разумных. В целом такое происходит в голове каждого человека, однако именно у программистов этот момент часто обострен и порой он способен привлекать для анализа те аналогии, которые не пришли бы в голову обычному человеку.
Привыкание к формализованной постановке задач
Так как программист должен создавать код, который должен работать ровно так, как это требуется для задачи, то привычка делать то, что было сказано, постепенно перетекает и в другие области жизни. Но так как в большинстве случаев социального взаимодействия имеет место невербальное восприятие, «угадывание» и «додумывание», то у программистов обостряется чувство конкретизации.
Не то чтобы сказать, что программисты не умеют читать мыслей и предугадывать действия других людей, но скорее они предпочитают задать лишний вопрос, чем потом «переделывать заново». Отправляете программиста в магазин? Скажите на одно предложение больше, но избавьте его и себя от лишних вопросов. Например, не «купи яиц», а «купи десяток яиц первого сорта посвежее». И не воспринимайте его как «робота» если на свой вопрос вы получите детализированную инструкцию с кучей «ненужных вам деталей». Он старается сделать всё правильно. Если для большинства «будь проще» это «говори меньше», то для программистов «будь проще» это часто «говори точнее».
Жертвы «инженерного-гламура»
Рискую быть «съеденным заживо», но данный момент требует всё же освещения в рамках этой статьи. Речь пойдет не столько о программистах, сколько о «компьютерщиках». Гламур является нормальным и естественным порождением человеческих потребностей, вкратце девизом гламура можно назвать «Кто круче», соответственно для реальной жизни это «тачки, шмотки, бабло и т.п.». В сфере «инженерного-гламура» действует тот же принцип «Кто круче», однако с иными критериями. Так как основная концентрация «компьютерщика» направлена не на других людей, как в «гламуре реального мира», а на собственный внутренний мир образов и причинно-следственных связей, соответственно и цели здесь преследуются из области этого мира. Последний навороченный по характеристикам смартфон; мощный комп/сервак/ноут чтобы всё бегало еще быстрее; свежие программы, которые делают вбивание автокомплита на 32 миллисекунды быстрее; новые приложения с более плавной проруткой и модным голосовым распознавателем; знания о тайных особенностях новой версии компилятора и т.п.
Так что не спрашивайте «зачем ему такой же телефон» и не удивляйтесь ответу «он не такой же, тут же на 500 мегагерц сильнее проц».
Интересный момент. В отдельных случаях «инженерный гламур» может быть подавлен обостренным требованием к причинно-следственным связям. То есть новый комп не будет куплен, пока реально не потребуется его мощность.
Заключение
Собственно весь сериал «Теория Большого Взрыва» построен на гиперболах явлений, которые были описаны выше. Если не так сильно преувеличивать то, что показано в ТБВ, то в целом именно подобная картина наблюдалась бы в человеке, который был бы значительно подвержен всем указанным эффектам работы программиста.
С учетом всего описанного не без оснований программистов воспринимают как «космических товарищей», однако по своему субъективному мнению, хочу сказать что если бы не добровольный выбор тех, кто идет в ряды программистов, то им бы стоило давать «молоко за вредность», но в данном случае психологического характера.
Тем не менее, каждый человек сам строит свою жизнь и сам факт психологической деформации «труженников кода» пока не так велик. Большинство имеет семьи, друзей, интересы помимо кода и компьютера. Так что не ведитесь на шаблонное «да он программист».
Лексунин Евгений,
«Сокращая энтропию в разработке»
UPD:
Небольшой бонус от пользователя ikra: жж пост «Не будите программиста».
Психология программирования
Л. В. Городняя, Ф. А. Мурзин
Несколько лет назад И.В. Поттосин с большим энтузиазмом поддержал идею спецкурса «Психология программирования» на матфаке НГУ. По его мнению, такой курс совершенно необходим при профессиональной специализации программистов. Теперь накоплен опыт преподавания в этом направлении, и материал курса рассматривается как направление исследования и разработки учебных систем информатики.
1. Введение
Психологические и социальные аспекты процессов разработки и применения информационных систем, по мнению авторов, нашли свое отражение в эволюции языков и систем программирования, что позволяет рассматривать последние как удобный материал для исследования формализуемых моделей психологической информатики.
Человеческие факторы во многом определяют практику разработки и совершенствования информационных систем, а также влияют на трудоемкость проектов и жизнеспособность производственных команд. Поэтому целесообразно проанализировать проблемы формирования процесса профессиональной информатики как социальной деятельности, изучая личностные факторы, проблему лидерства, жизненный цикл программисткой команды и особенности прохождения производственного проекта через кризисные полосы. Обзор результатов исследований психологии программирования как проявления индивидуальности, взаимосвязи интеллектуальности и способности к принятию решений представляет несомненный интерес.
2. Социальный контекст
Не вызывает сомнения связь производительности труда в информатике с механизмами поисковой активности и внимания, их видами и нарушениями. Экспериментальная база исследования призвана проявить конкретику таких связей. Она может формироваться как система мероприятий по предпроизводственной подготовке информатиков, включая молодежные проекты и конкурсы. Это позволяет в сжатые сроки подвергать практической проверке формальные методы исследования связей в коллективах, оценивая особенности творческих процессов, осваивая технику переговоров в конфликтах и методы ведения коллективного проекта. Полезно найти подходы и навыки классификации производственного микроклимата и прогнозирования трудоемкости проектов в зависимости от квалификации персонала.
В центре внимания — психологические (человеческие) факторы, отраженные в процессе разработки и совершенствования информационных систем, а также влияющие на трудоемкость проектов и жизнеспособность производственных команд. (Психологическая информатика — ПИ.) В процессе исследования ПИ можно анализировать проблемы формирования профессиональной информатики как социальной деятельности, зависящей от личностных факторов, лидерства, жизненного ритма команды и особенностей прохождения производственного проекта через кризисные полосы. Особо интересны психология программирования как проявление индивидуальности, взаимосвязи интеллектуальности и способности к принятию решений, а также другие аспекты этико-социального контекста информатики.
ПИ граничит с соционикой и психофизиологией умственного труда, со стрессовыми и другими реакциями человека, влияющими на связь производительности труда в информатике с механизмами поисковой активности и внимания.
3. Приложение и перспективы
Исследование ПИ может дать рекомендации для разработки и совершенствования системы подготовки бакалавров и магистров, специализирующихся в области информационного и электронного бизнеса. Высокий темп развития информатики требует исследования глубинных психологических и социальных факторов, определяющих закономерности эволюции конструктивных идей информатики, смену парадигм программирования и других форм концентрации знания человеком, а также этико-социальный контекст современных технологий.
Основные акценты исследования человеческих факторов в процессах совершенствования и применения информационных технологий заключаются в анализе гуманитарных аспектов отечественной информатики и выработке на их основе рекомендаций по организации проектов, обладающих исследовательскими аспектами, обычно сопутствующими деятельности в области информационного бизнеса.
4. Специфика подхода
Задача исследования ПИ в первую очередь нацелена на психологические и этико-социальные аспекты современных технологий и человеческой деятельности, выявленные при изложении и исследовании отечественных достижений информатики непосредственно их авторами, сумевшими объективно отразить роль личностных и субъективных факторов, определивших основные достижения известных научных школ в России и за рубежом. Все это формирует систему представления знаний по гуманитарным аспектам компьютерных наук, начиная с анализа разных явлений, связанных с восприятием информации и особенностями работы с текстами и изображениями. Ключевые вопросы следующие. Как отличить хорошую информационную систему? Откуда берутся хорошие информационные системы? Как обосновывается роль квалифицированных специалистов в рамках специально разработанных технологий?
Важные моменты любых технологий: ясность требований к квалификации специалистов, адекватность используемых средств, спецификация проектов систем, четкость графика разработки, определенность методов проверки качества результата, приспособленность проекта к возможности улучшения реализуемых систем и пр.
Сквозные вопросы следующие. Как исследовать гуманитарные аспекты применения и производства информационных систем? Можно ли опереться на самоанализ информатиков, наблюдения менеджеров и научную проверку известных гипотез? Богатый фактический материал дает экспериментальная, творческая, досуговая и учебная информатика. Большой интерес представляют психологические и поведенческие оценки, накопленные в опыте учебных заведений, производственных организаций и научно-исследовательских проектов по разработке информационных систем.
5. Методы и приоритеты
Используются социологические методы для исследования производственных команд, связанных общей постановкой задачи. Анализируется влияние целей на основные аспекты рабочего ритма команды. Рассматриваются кризисы в производственном проекте с учетом проблемы лидерства.
Статистически исследуется длительность проектов и время пребывания в них исполнителей, а также измеримые характеристики информационных систем.
Системный подход используется для выбора приемов обеспечения стабильности путем изменений с учетом структуры проекта в контексте общих проблем больших проектов. Оценивается достоверность отчетов и результативность контроля за ходом работ, компетентность исполнителей и руководителей.
Комплексный подход позволяет унифицировать жизненный цикл информационной системы. Рассматриваются компьютерные игры и учебные тренажеры в условиях эволюции систем и обновления технологий. Отслеживается уровень изученности задач, решаемых информатиками при программировании. Важные факторы — общность и переносимость компонентов, приспособленных для повторного использования. Определяется направленность развития систем и принципы обработки уникальной информации. Формируются прототипы «идеальных» систем. Сравниваются консервативные и открытые системы.
6. Уровень изучености и образование
Современные представления о социально-психологических факторах в информатике отражают преимущественно зарубежные достижения, значимость которых очевидна неспециалистам благодаря высокому качеству элементной базы.
Современное состояние исследований по проблемам ПИ представлено множеством интересных для практики результатов, слабо отраженных в отечественной литературе. Основные направления исследований по данной теме в мировой науке активно развиваются, они нацелены на решение проблемы стабильного производства информационных систем, обладающих длительным жизненным циклом или допускающих целенаправленные улучшения. Такие исследования, по существу, опираются на человеческий фактор.
Выявлены значительные трудности в преподавании студентам проблем поддержки полного жизненного цикла информационных систем, таких как определение требований, разработка спецификаций, организация сопровождения. Трудности обусловлены недостатком практического опыта у студентов. Следует отметить, что многие наши студенты теперь вовлечены в производство. Это помогает преодолеть трудности преподавания ПИ в условиях совмещения учебы с производственной деятельностью при использовании средств дистанционного образования. Результаты исследований ПИ используются фирмами, ведущими сертификацию специалистов и кадровый маркетинг.
Целесообразно развернуть проект, который выполнял бы работу по упорядочению и изучению гуманитарных факторов информатической деятельности, проявившихся в истории отечественной вычислительной техники и ее программного обеспечения. Труды Д.А. Поспелова, Я.И. Фета, И.В. Поттосина, собравших фактические материалы по истории отечественного программирования и школы А. П. Ершова, а также личный опыт участников проекта, рассматриваются как фактическая основа для выработки практических рекомендаций.
Литература
- Городняя Л.В., Мурзин Ф.А. Об опыте преподавания спецкурса «Психология программирования» // Тез. IX Междунар. конф. «Применение новых технологий в образовании», Троицк, 1998. — С. 101–102.
- Кирпотина Н.А. Модель процесса принятия решений и соответствующая классификация типов личности. // Там же. — С. 93–95.
- Городняя Л.В., Мурзин Ф.А. Психология для программистов // Тр. IV Междунар. конф. «Перспективы систем информатики». Секция «Школьная информатика». — Новосибирск, 2001. — С. 29–30.
- Андреева Т.А. О проблеме накопления результатов методических разработок школьных педагогов. // Тез. конф. «Информационные технологии в образовании» Москва. — Институт ЮНЕСКО, 1998. — С. 124–128
- Городняя Л.В. Быть или не быть — для информатики вопрос не в этом // М. : Информатика и образование. — 2000. — Т. 7. — С. 80–84
- Городняя Л.В., Кирпотина И.А. Электронное издание как механизм самообучения // Тр. Междунар. научно-практической конф. «Новые информационные технологии в университетском образовании». — Томск, 2000. —
С. 101–102 - Андреева Т.А. Об автоматизации подготовки и проведения заочных (электронных) олимпиад // Тр. научно-практической телеконф. «Информационные технологии в общеобразовательной школе», ноябрь 2000. — Новосибирск, 2000. — http://www.edu.nsu.ru/ites
- Ким Н.А., Городняя Л.В. Измерители знаний по информатике // Тр. Междунар. научно-практической конф. «Новые информационные технологии в университетском образовании». — Новосибирск, 1999. — С. 97.
- Берс А.А., Городняя Л.В., Поляков В.Г., Чурина Т.Г. Организация творческой работы учащихся в контексте общеобразовательной информатики // Там же. — С. 86.
- Kalinina N. , Kostyukova N. The Basic Principles of Building of Ergonomic Component of Automated Training System // Internat. J . of Occupational Safety and Ergonomics ( JOSE ). — Poland , 2001. — P . 203–207
- Городняя Л.В., Калинина Н.А., Костюкова Н.И. О соотношении кибернетики, математики и психологии // Тр. XXVIII Междунар. конф. «Информационные технологии в науке, образовании, телекоммуникациях и бизнесе» (IT+SE’2001). — Гурзуф, 2001. — С. 113–116.
- Городняя Л.В. Откуда берутся хорошие программисты // Становление новосибирской школы информатики. Мозаика воспоминаний / Под ред. И.В. Поттосина. — Новосибирск, 2001. — С. 117–123.
Следующая статья сборника
Из сборника «Новосибирская школа программирования. Перекличка времен». Новосибирск, 2004 г.
Перепечатываются с разрешения редакции.
Психология в программировании:. Худший, плохой и уродливый | Сиэтл Веб-дизайн | языки программирования
Сиэтл Веб-дизайн
·
Читать
Опубликовано в
·
8 мин чтения
·
24 декабря 24 021
Долгие часы пребывания в кресле, глядя на яркий экран сильно влияет на состояние души и тела. К сожалению, профессионалы в области компьютерного программирования требуют, чтобы люди выдерживали такие изнурительные часы перед компьютером. Таким образом, психологические результаты компьютерного программирования заслуживают внимания при оценке психического и физического здоровья программистов. По сравнению со средним человеком программисту, как правило, легче стать жертвой двух психологических состояний: человеческой ошибочности и синдрома самозванца. Информатика — это большая область, в которой профессионалу может быть сложно ориентироваться. Понимание худших сторон компьютерного программирования — психологических рисков — и борьба с ними поможет людям достичь более психически здоровых целей.
Технологии всегда были неотъемлемой частью постоянно развивающегося общества. В связи с тем, что большая часть нашего мира становится автоматизированной, люди, а иногда и животные, сильно зависят от способности эффективно взаимодействовать с машинами. Фактически, без разработки программного обеспечения вы не смогли бы использовать свой мобильный телефон, Xbox или автоматическую кормушку для кошек. Программисты играют чрезвычайно важную роль, помогая обществу достичь различных эволюционных стадий, и заслуживают огромного признания за свою тяжелую работу. Таким образом, этот раздел посвящен установлению исторических корней различных важных вех, которые помогли воплотить в жизнь современные машины.
Благодаря разработке аналитической машины Чарльза Бэббиджа в начале 1840-х годов был создан самый первый механический компьютер. Наряду с этим появилась Ада Лавлейс, которая разработала алгоритм для аналитической машины, также известный как первый компьютерный язык, когда-либо созданный в 1883 году. Значение славы Лавлейс живет через День Ады Лавлейс (ALD), который отмечается каждый второй вторник каждого месяца. Октябрь. Этот день позволяет миру чествовать выдающихся женщин, которые продолжают влиять на наш мир через науку, технологии, инженерию и математику (STEM). Однако это лишь один из многих вкладов в программирование.
Благодаря «Короткому коду» Джона Мочли в начале 1950-х годов появился первый высокоуровневый язык программирования для компьютеров с электрическим приводом, сильно отличавшийся от языка Ады, созданного для механических компьютеров. И двоичный автоматический компьютер (BINAC), и универсальный автоматический компьютер (UNIVAC) были первыми в своем роде, использующими ShortCode. Хотя Short Code был длительным и сложным процессом, который требовал ручного преобразования, UNIVAC и BINAC помогли начать новую эру «большого железа».
Эпоха большого железа стала началом технологической конкуренции между различными компаниями и лабораториями по созданию компьютеров. Хотя эти машины были достаточно большими, чтобы заполнить всю комнату, возможности многих из этих компьютеров были ограничены; решение сложных математических задач было специальностью этих машин. Помимо отсутствия общего использования, компьютеры также были дорогими и сложными. Спрос на эти машины был относительно низким, поэтому требовались прикладные программы (текстовые процессоры, программы баз данных, операционные системы и т. д.), которые позволили бы более широким деловым и научным рынкам лучше использовать компьютеры. В то время как этим приложениям потребуется — да, как вы уже догадались — язык программирования, чтобы воплотить их в жизнь, исследования были минимальными и сложными. Так начались неприятные, психологически напряженные аспекты разработки программного обеспечения, которые до сих пор постоянно затрагивают программистов.
Однажды моя мама спросила: «Милый, ты можешь пойти в магазин и купить одну бутылку сока? Если у них есть яйца, купите 6 дюймов. Я вернулся домой с шестью бутылками сока и без яиц. Она сердито спросила: «Зачем ты купил шесть бутылок сока?» ПОТОМУ ЧТО У НИХ БЫЛИ ЯЙЦА!
Я думаю, мы все согласны с тем, что люди обладают ограниченными знаниями. Даже когда мы чувствуем, что получили адекватную информацию, этого недостаточно. Или, как выразился Юваль Харари, «…мы думаем, что знаем много, хотя сами по себе знаем очень мало, потому что относимся к знаниям в умах других как к своим собственным». Люди не умеют читать мысли; невозможно узнать, о чем думают другие, не зная точно. Одной из самых сложных частей совершения ошибок является внутреннее и внешнее разочарование, которое они сопровождают. Внутренне мы иногда чувствуем, что наша работа недостаточно хороша, когда случаются ошибки. Внешне другие люди — например, моя мать — разочаровываются в том, что мы делаем. Программистам хорошо знакомо обилие ошибок, которые возникают, сопровождаясь разной степенью разочарования. Но когда неведение является блаженством?
Быть склонным к ошибкам означает склонность ошибаться или ошибаться. Люди очень подвержены ошибкам просто потому, что мы далеки от совершенства. Хотя это по своей сути не является чем-то плохим, согласно австралийскому издателю публичного права Джонатану Кроу, «…ограниченность наших знаний обычно мешает нам осознать, как много мы не знаем» . Другими словами, человеческая природа в психологии является истинным врагом наших привычных недостатков. К несчастью для программистов, проблема ошибочности усугубляется, когда дело доходит до мучительных часов разработки кода. Генеральный директор Alumnify Эй Джей Агравал считает, что «…самая сложная часть обучения кодированию — менее техническая и более психологическая». Как и Кроу, Агравал признает все психологические недостатки людей: склонность к ошибкам.
С помощью языка кодирования Python, вот пример цикла, который разрабатывает таблицу умножения до 10. Не вдаваясь в подробности о том, что означает все в этом коде, вывод здесь заключается в том, что некоторые определенные символы и пробелы должны быть реализованы для корректной работы строк кода. Легко сделать простую ошибку, такую как пробел или использование неправильного символа:
rows=10 # Таблица умножения до 10 столбцов=10 # значения столбца для i в диапазоне (1, rows+1): для j в диапазоне (1) ,columns+1):# inner for loopc=i*jprint("{:2d} ".format(c),end=' ')print("\n") # разрыв строки
Таким образом, совершение ошибок является неотъемлемым компонентом обучения компьютера — и того, что значит быть человеком — что будет иметь решающее значение для понимания того, как бороться с последствиями ошибок в следующем разделе этой статьи. Хотя это всего лишь одно психологическое состояние, с которым вынуждены смириться многие люди, работающие в сфере информационных технологий, в следующем разделе будет рассмотрено психологическое состояние, которое может проявляться в отношении человеческой ошибочности.
Синдром самозванца определяется различными чувствами неуверенности в себе и необходимостью работать усерднее, чтобы другие приняли вас. В статье, опубликованной в Harvard Business Review, говорится, что синдром самозванца «… несоразмерно больше поражает людей с высокими достижениями, которым трудно принять свои достижения. Много вопросов, заслуживают ли они похвал». Независимо от того, является ли человек новичком или профессионалом, чувство неуверенности в себе может развиваться на протяжении всей его карьеры. Хотя многие исследования были сосредоточены на когорте женщин, в этом разделе будут цитироваться несколько крупномасштабных исследований, включавших большие выборки как мужчин, так и женщин.
Согласно исследованию «Распространенность, предикторы и лечение синдрома самозванца», проведенному в 2019 году, в котором были проанализированы 62 других исследования, от 9 до 82% людей сообщили, что у них возникают мысли о том, что они чувствуют себя самозванцами, и эти проценты были на более высоком уровне. для этнических меньшинств. Согласно Harvard Business Review, цветные женщины гораздо чаще, чем их белые коллеги, говорили о чувстве маргинализации или разочарования. Этот тип исключения усугублял синдром самозванца, ключевой показатель психологического стресса, который приводил к тому, что пострадавшие люди бросали работу. Хотя в этом исследовании не упоминается, какой процент участников был на кафедре компьютерных наук, в надежной литературе упоминались различные связи между синдромом самозванца и производительностью / удовлетворенностью работой.
Недавно Джозеф Маниа написал статью о том, почему программисты испытывают синдром самозванца. Некоторые из ключевых причин синдрома самозванца — это процесс отладки, уровень сложности программирования и страх совершения ошибок — то есть человеческая ошибка. Программистам обычно трудно понять, что пошло не так с проектом или заданием, над которым они работают. Проводить часы перед экраном компьютера без взаимодействия с человеком также может быть очень напряжно.
Таким образом, синдром самозванца стал одним из худших аспектов компьютерного программирования, вызывающим большую неуверенность в себе. Это психологическое состояние может подтолкнуть человека к тому, чтобы чувствовать себя неудачником на работе, особенно среди представителей этнических групп и меньшинств, что может привести к тому, что он уволится с работы. Хотя было показано, что человеческая ошибка и синдром самозванца пагубно влияют на психическое здоровье специалистов в области компьютерных наук, следующий раздел поможет развить понимание того, как справляться с этими проблемами психического здоровья.
Здравствуйте, коллеги-разработчики, информация в этом разделе предназначена специально для вас, но может быть использована любым другим специалистом любой профессии. Ваше психическое здоровье имеет важное значение, и вы никогда не одиноки. Без сомнения, психологическое расстройство влияет на многих людей, занимающихся информатикой. Таким образом, необходимо создать различные каналы, которые вы можете использовать, чтобы помочь себе лучше — не только для психического здоровья, но и для повышения производительности труда. Вот несколько дополнительных статей, в которых обсуждаются различные способы борьбы с психическим здоровьем.
Статья, опубликованная Better Programming, предлагает всем разработчикам четыре полезных способа предотвращения проблем с психическим здоровьем. Будь то веб-дизайнер, разработчик ОС или системный инженер-программист, первый шаг связан с самосознанием. Такие вещи, как раздражительность и стресс, являются вредными симптомами, которые следует учитывать. Следующим шагом является обращение к предпочтительному сообществу — это могут быть ваши коллеги на вашем рабочем месте, онлайн-сообщество, такое как Reddit, или онлайн-сообщество, такое как португальские женщины в технологиях (PWIT). Так или иначе открыто говорить о своих проблемах очень важно, чтобы помочь вам управлять своим психическим здоровьем. Третий шаг заключается в развитии и поддержании здоровых привычек. Это варьируется от достаточного количества сна и здорового питания до физической активности и отказа от нездоровых привычек, таких как курение. Последний шаг — обратиться к профессионалу — терапевту или личному коучу, — если предыдущие попытки не увенчались успехом.
В своей статье «Программисты и депрессия» Джейсон Хамфри подробно описывает множество способов положительного воздействия на психическое здоровье. Хамфри подчеркивает четыре способа, упомянутых в предыдущей статье, но добавляет несколько своих собственных, чтобы информация была ясной и краткой. Уверенность в себе — еще один шаг к улучшению вашего психического здоровья, особенно если вы хотите бороться с синдромом самозванца. Хамфри выражает идею о том, что если вы «…будете вести себя так, как хотите», вы будете чаще переживать трудные времена. Еще одно решение, которое отмечает Хамфри, заключается в том, чтобы люди нашли в себе силы перестать сравнивать себя с другими. Это потому, что «…сравнение себя с другими людьми в плане оплаты, умений, уважения — это смерть всего хорошего, потому что вы никогда не будет достаточно ». Сравнивайте себя только с собой.
Подводя итог, можно сказать, что худшие аспекты программирования считаются психологическими. Разработчики всех возрастов и полов склонны становиться жертвами человеческих ошибок и синдрома самозванца. В то время как существует множество сообщений, предлагающих советы о том, как бороться с этими проблемами психического здоровья, статьи, опубликованные BetterProgramming и Джейсоном Хамфри, суммируют лучшие советы, к которым следует относиться серьезно. Осознайте свои проблемы, обратитесь за помощью, поддерживайте здоровые привычки, будьте уверены в себе, перестаньте сравнивать себя с другими и обратитесь к профессионалу, если ничего не помогает. Пожалуйста, не забывайте серьезно относиться к своему здоровью и благополучию, так как это в конечном итоге поможет вам сделать более здоровую и успешную карьеру.
Психология компьютерного программирования Джеральда М. Вайнберга
Это книга не о «компьютерном программировании», а о компьютерных программистах . Он удивительно хорошо держится более 40 лет после даты его публикации, потому что, хотя технология быстро меняется, люди, создающие ее, не меняются.
Конечно, не все в книге устарело. Обсуждение «других инструментов программирования» в последней главе довольно специфично для эпохи перфокарт и общих терминалов, и в большинстве случаев его следует пропустить. Кроме того, существуют довольно устаревшие взгляды на роль женщин на рабочем месте и на то, что они не могут соответствовать мужчинам — не то чтобы Вайнберг разделяла эти взгляды, но ясно, что это книга из другой эпохи (в которой говорилось , женщины в технологиях до сих пор проблема).
В общем, очень стоящее чтение. Нам нужно больше технических книг, посвященных людям, а не самой технологии.
Некоторые ключевые идеи мне особенно запомнились:
* Мы должны рассматривать программирование как человеческую деятельность, а не только математическую, научную или технологическую.
* Большинство программ создается командами, поэтому нам нужно смотреть не только на то, как отдельный человек взаимодействует с компьютером, но и на то, сколько людей, создающих программное обеспечение, взаимодействуют друг с другом.
* В большинстве профессий вы смотрите на работу других, чтобы учиться. В кодировании не так. Мы редко читаем чужой код и предпочитаем учиться, написав что-то сами и повторяя чужие ошибки. Эта ситуация немного улучшилась с тех пор, как Вайнберг написал книгу благодаря стремительному развитию открытого исходного кода, но программисты по-прежнему очень редко садятся и просто читают код в качестве учебного упражнения.
* Программирование без эго: воспринимайте код, который вы пишете, не как часть себя, а как независимые объекты, принадлежащие команде. Таким образом, вы не будете воспринимать недостатки кода как недостатки своего характера, и вы станете гораздо лучше находить отзывы и справляться с критикой.
* Хороший дизайн языка программирования прежде всего должен учитывать ограничения человеческого разума. Мы не можем удерживать или обрабатывать слишком много информации в своей голове, поэтому языки должны разрабатываться на основе принципов единообразия, компактности, локальности и линейности.
* Программирование — это зарождающаяся область, и нам нужно гораздо больше исследований, чтобы понять, как делать это эффективно. К сожалению, более 40 лет спустя мы провели относительно мало тщательных исследований и, кажется, до сих пор не приблизились к получению ответов.
Некоторые из моих любимых цитат из книги:
Последующий материал является пищей для размышлений, а не его заменой.
Компьютерное программирование — это деятельность человека. Вряд ли можно оспорить это утверждение, и тем не менее, возможно, из-за того, что акцент делается на машинных аспектах программирования, многие люди — многие программисты — никогда не рассматривали программирование в этом свете.
Программирование — это, помимо всего прочего, разновидность письма. Один из способов научиться письму — это писать, но во всех других формах письма нужно еще и читать. Мы читаем примеры — как хорошие, так и плохие — чтобы облегчить обучение. Но сколько программистов учатся писать программы, читая программы? Несколько, но не много.
Спецификации развиваются вместе с программами и программистами. Написание программы — это процесс обучения — как для программиста, так и для человека, который заказывает программу.
Средний менеджер по программированию предпочел бы, чтобы проект оценивался в двенадцать месяцев и выполнялся двенадцать, чем тот же проект оценивался в шесть месяцев и выполнялся девять.
Фундаментальная теорема Фишера утверждает — в терминах, соответствующих нынешнему контексту, — что чем лучше система приспособлена к конкретной среде, тем менее она адаптируется к новым средам.
Психология — это психология 18-летних первокурсников колледжа.
Максвелл, великий физик, однажды сказал: «Измерять — значит знать», и его слова часто используются в качестве девиза другими науками. Вероятно, Максвелл имел в виду следующее: «Знать, как измерять, значит знать», или, еще лучше, «Знать, что измерять, значит знать».
Организационная диаграмма — это хорошая игрушка для менеджера, но мало работы по программированию будет выполнено, если взаимодействие между программистами будет следовать ее узким прямым линиям.
Сам Джон фон Нейман был, пожалуй, первым программистом, осознавшим свою неадекватность в отношении проверки собственной работы. Те, кто знал его, говорили, что он постоянно утверждал, какой он паршивый программист, и что он постоянно навязывал свои программы другим людям для чтения из-за ошибок и неуклюжести. Тем не менее, общий образ фон Неймана сегодня — это непревзойденный компьютерный гений, безупречный в каждом своем действии. И действительно, в гениальности фон Неймана не может быть никаких сомнений. Сама его способность осознавать свои человеческие ограничения ставит его на голову выше среднего программиста сегодня.
Как правило, трое программистов, объединенных в команду, могут выполнить вдвое больше работы, чем один программист с одинаковыми способностями, из-за проблем с координацией времени. Более того, три группы из трех программистов выполняют только в два раза больше работы, чем одна группа, или в четыре раза больше, чем один программист, — по той же причине.
Основное правило для размера и состава команд программистов, по-видимому, заключается в следующем: для наилучшего программирования с наименьшими затратами выделяйте на самые лучшие из возможных программ достаточно времени, чтобы вам потребовалось наименьшее их количество. Когда вам нужно работать быстрее или с менее опытными людьми, затраты и неопределенность возрастут. В любом случае, худший способ сделать проект по программированию — это нанять толпу стажеров и заставить их работать под давлением и без надзора, хотя сегодня это наиболее распространенная практика.
Программисты, как люди, склонные ценить творческий подход и профессиональную компетентность, склонны доверять людям, которых они считают хорошими в том, что они делают. Таким образом, легче проявлять лидерство и влиять на программистов, будучи тихим волшебником программирования, чем самым быстро говорящим продавцом в мире.
Если менеджер хочет запустить стабильный проект, ему следует следовать этому простому правилу: Если программист незаменим, избавьтесь от него как можно быстрее.
Это хорошо известный психологический принцип, согласно которому для максимизации скорости обучения субъект должен получать информацию о том, насколько хорошо или плохо он справляется. Что, возможно, не так хорошо известно, так это то, что люди, которые чувствуют, что их работу оценивают, но не имеют адекватной информации о том, насколько хорошо они работают, проверяют систему, пробуя определенные варианты.
Иерархическая организация, которой, похоже, подражают многие из наших проектов, пришла к нам не из наблюдения за успешными машинами или природными системами, а из успехов австрийской армии в девятнадцатом веке.
Всякий раз, когда начальник отвечает за работу, которую он не понимает, он начинает вознаграждать работников не за работу, а за внешний вид работы. Программисты, которые приходят рано утром, считаются лучшими программистами, чем те, кто приходит позже официального времени начала работы. Однако программисты, которые работают допоздна, могут не получить вознаграждения, потому что менеджер вряд ли увидит, что они работают допоздна. Программисты, которых видят там, не считаются работающими, потому что у менеджера сложилось впечатление, что работа по программированию включает в себя одинокого мыслителя, записывающего секретные сообщения на компьютер.
Таким образом, любитель изучает свою проблему , и любое изучение программирования, которое он делает, может быть приятной изюминкой или может быть неприятным препятствием для него. Профессионал же, наоборот, узнаёт о своей профессии — программировании, — и программируемая проблема — лишь один случайный шаг в процессе его развития.
Большая доля различий между программистами на любой работе может быть связана с различным представлением о том, что должно быть сделано.
Не имея какой-либо объективной меры, мы часто судим о сложности проблемы по тому, насколько усердно над ней работает программист. Используя такого рода меру, мы можем легко прийти к выводу, что худшие программисты являются лучшими, потому что они так усердно работают над этим.
После того, как решение было показано, легко забыть о недоумении, существовавшем до того, как оно было решено. Во-первых, одной из наиболее распространенных причин сложности задачи является игнорирование какого-либо фактора. После того, как мы обнаружили или нам сказали, что этот фактор важен, поиск решения становится тривиальным. Если мы представим проблему кому-то другому, мы обычно представим ему этот фактор, который немедленно решит для него девять десятых проблемы. Он не может себе представить, почему у нас были такие проблемы, и вскоре мы начинаем удивляться сами.
Объяснения успеха, данные некоторыми программистами, напоминают историю деревенского идиота, выигравшего ежемесячную лотерею. Когда его попросили объяснить, как он выбрал выигрышный номер, он сказал: «Ну, мое счастливое число — семь, и это была седьмая лотерея в этом году, поэтому я умножил семь на семь и получил выигрышное число — 63. И когда кто-то пытался сказать ему, что семь раз семь будет сорок девять, он только отвечал с пренебрежением: «Да ты просто завидуешь» — что, конечно, было правдой. 0003
Два основных фактора, которые мы можем оказать на производительность программиста, — это желание, которое он испытывает к работе, и то, что он знает о том, что необходимо для работы. Первое называется мотивацией, а второе — обучением или, если оно достаточно общее, образованием. Но мало что известно о том, почему программисты усерднее программируют, или они уже слишком усердно программируют для своего же блага. Возможно, еще меньше известно об обучении программистов, хотя на схемы обучения были потрачены огромные суммы.
В некотором смысле причина, по которой так трудно приписать источник неэффективности программирования программисту или языку программирования, заключается в том, что если бы у нас были идеальные программисты, языки программирования были бы необходимы. Это психологический , который не позволяет нам записывать спецификации задач непосредственно на машинном языке.
Посмотрим правде в глаза: люди думают не так, как компьютеры, поэтому мы используем компьютеры.