Разработка и цифровое слабоумие, 2.1/3

Тема: что и как из области атаки «цифрового слабоумия» может задеть разработчика, как это влияет на его работу и на работу с ним?
Сразу обозначу: текст ниже целиком домыслы и спекуляция. Я лишь покажу ход своей мысли, но ничем не подкреплю. Всё потому, что никто ваще психологию программистов и программирования не изучает. А те, кто пробует, творят бестолковие. Например, нагуглил я научную работку, опубликовали в каком-то вестнике чего-то. А там взяли 20 программистов против 700 бухгалтеров. 20, Карл. При нашем зоопарке типажей это даже на одном этаже какой-нибудь конторы не срез.
Степень отчаяния можно оценить уже по тому, как часто (а часто!) цитируется классическая «Психология программирования» Шнейдермана. Работа 1980-х, очень интересная, но уже лишь исторически. Скажем, там в одном из экспериментов чувакам мешали отступы код читать, из чего вывод, что отступы не так уж клёво. Безусловно, если вспомнить, что читались распечатки FORTRAN, а не текст с 21-дюймового монитора. Я при подготовке этой тройки эссе ещё раз перечитал, ну… всерьёз к этой книге относиться уже не стоит.
Наконец, чем дальше в лес, тем сложнее дать определение «программисту», настолько разные бывают специальности и специализации, настолько разные люди под этим словом. Соответственно, любое утверждение категории «для успешной работы программист должен быть таким-то» с четвёртого (а то и второго) слова уязвимо для критики, избавление от которой приведёт к многотомной публикации. Всегда найдётся пример Пети, который вроде как программист и вполне успешен, но упоминаемым качеством головы не обладает. Потому… Буду считать, что некоторое интуитивное определение всё-таки есть, оно применимо к большинству, но в явном виде его не дам.
Текста получилось больше, чем ожидал, потому разделяю на две части. В первой (этой) вот вводная и «кругозор». Во второй «память» и микрорезюме. Обратите внимание на то, что порядок инвертирован относительно первого эссе.

Итак, кругозор. Камень преткновения, вокруг которого хороводят банды разных точек зрений. Давайте им обозначать комплекс знаний и представлений (близких к объективному) об окружающем мире, отделив от узкоспециального комплекса. Потом расширим. Иначе говоря, это то, что программист знает о мире вне программирования. Также вынесем за скобки совсем уж бытовое и общеизвестное в рамках культуры. Да, вы знаете, что сметана не является морковкой, Сталин не родной брат Меладзе, а левый ботинок лучше надевать на левую ногу. Такой кругозор полезен, к программированию не относится, но эта область больше относится к воспитанию детей, а не к разговору о разработчиках с паспортом.
По опыту дискуссий обозначу ещё один момент. Почему-то очень часто кругозор ограничивают механической памятью на случайные факты: Чарли Чаплин родился в Лондоне. После чего, понятно, диалог о пользе вырождается в диалог на тему «чем же полезно знать тысячу бесполезных фактов». Обычно ничем, если вы не в телевизоре. Однако даже по лаконичным словарным определениям кругозор не [только] про это, это ещё и «круг интересов», например.
Наконец, очень важно понимать, что ценностью кругозора является не только результат, но и процесс, благодаря которому вы получаете дополнительные навыки. Давайте на аналогии. Скажем, вы начали делать зарядку. Отжимаетесь по утрам. Через год у вас развит плечевой пояс, мышцы на руках, всё такое. Это видимый и всем понятный результат. Но фоново вы развили и другое. Дисциплину (делать то, что надо, а не то, что хочется). Планирование (отжимаются не от балды). Умение работать по графику (каждый чётный день в восемь утра). Получили пример отложенного вознаграждения при постоянном вкладе ресурса (нет, за неделю мышцы не станут крепкими).

Итак, при убитом кругозоре первым делом страдают коммуникации.
Во-первых, вам бывает тяжело что-либо объяснить методом аналогий. Васе скажешь «смотри, эта фигня примерно такая же, как пестик с тычинкой», Вася шлёпнет себя по лбу, его осенило. Ушла одна минута, работаем дальше. Пете скажи то же самое, в ответ стёклышки. Он не знает, что такое пестик. И тычинка. И связь между ними. И культурный подтекст (один из принятых способов объяснить половые отношения детям). Пробуем Маркса и Энгельса. Нет, их тоже не знает. Человеку, который пытается нащупать известные (и понятные) вам примеры, приходится порою очень непросто. Фигня в том, что таким перебором довольно быстро добираешься до совсем уж примитивных аналогий, которые из-за примитивности знатно теряют в наглядности и верности, от чего обучающий момент снова идёт лесом.
Во-вторых, не методом аналогий тоже. В идеальном мире жёсткого разграничения ролей задача до вас добирается в выхолощенном виде на языке разработчика. В реальном мире так получается [далеко] не всегда. Приложение оперирует понятийным аппаратом области задач (ну да, в софте про еду внезапно используется еда то там, то сям), задачи ставятся в терминах приложения, ну и… иногда вы не можете в область задач. Просто потому, что для эффективного вникания в тему надо было в предыдущей жизни освоить фундамент, а вы нет. С этим справляются двумя путями: 1) таки нечеловеческими усилиями сводят задачи к «вот это вставь сюда», 2) сначала обучают, убивая на это немало ресурса. Интересен здесь опыт LEGO, заказавшей однажды разработку MMO студии NetDevil, но обнаружившей, что чуваки в кирпичиках не шарят. Тащили десяток бойцов из Колорадо в Данию, учили.
В-третьих, вы не можете донести мысль так, как надо. У вас слов мало. И понятий мало. Общение с человеком, которому не хватает запаса для выражения мысли, мучительно для всех сторон. Вы сами чувствуете, что говорите неточно, неправильно, неверно, вы розовеете и злитесь. Ваш собеседник, искренне пытающийся продраться через «ну это… эта хрень вот отсюда сюда, а потом бдыщ и это самое! понял?», тоже потихоньку сатанеет. Как итог, вам просто перестанут давать задачи, требующие что-либо кому-либо вербально сформулировать.
В-четвёртых, вам либо крайне тяжело предложить альтернативу, либо крайне легко. Оба варианта происходят от тотального незнания о том, что вокруг бывает, как оно бывает, почему и к чему приводит. В первом случае вы, допустим, от природы настороженно относитесь ко всему для вас новому, но т.к. не можете оценить предлагаемое, автоматически отвергаете. Во втором случае вы открыты новому, но для вас любая альтернатива новая, потому легко уговорить на фигню. И я вам хочу сказать, что первый тип просто убивает. Невероятно невозможно невообразимо сложно бывает убедить таких чуваков, что мир овощей не ограничивается ассортиментом магазина у дома, и что это надо учесть. Ну не видел он других овощей. Ему тридцать лет. За тридцать лет не интересовался тем, какими бывают овощи, что кушают люди в других странах, является ли арбуз овощем (нет?! офигеть, не верю), он даже гипотетически не может в упор представить, что морковке есть альтернатива. Ну никак. Уф.
В-пятых, вас могут не пустить к общению с внешним миром. Это и в целом не принято (можно клиента потерять, показав ему, кто код пишет), но… Мир вне разработки понятия не имеет о специфике людей в разработке. Для нас нормально и привычно, когда программисты в продукте ни в зуб ногой, а на встречи с заказчиками ходят менеджеры, потратившие не один месяц, чтобы разобраться в области. Менеджеры кагбэ говорят «мы компетентная команда, всё будет хорошо». Заказчику же будет немножко дико через год работ обнаружить, что Вася, пишущий софт для хлебзавода, так за год и не узнал, чем бублик от сушки отличается. Таких Вась старательно ныкают за забором. Да-да, это наш программист, он вот сидит в углу и молчит (молчит, я сказал!), т.к. очень занят.
Казалось бы, ну и фиг с ним, да? Но подумайте, что означает рост от джуниора до сеньора? Какого рода ответственность и какие задачи по мере роста перекладываются на плечи? Работа с командой и в команде. Участие не только в коде, но и в продукте. Создание кода общего (ну т.е. и другими людьми) пользования. В какой-то мере коммуникация с руководством (объяснить, обосновать, донести, убедить, отбиться от). Коммуникации, коммуникации, коммуникации. И везде с вами будет напряг.

Убитый кругозор заодно убивает ваше представление о том, насколько мир разный с разными людьми в нём. Я вот даже сейчас не про конкретику вроде списка племён Южной Африки, но только о самом понимании, а не привычном отмахивании ладошкой «да-да, люди разные, я в курсе». Самые фиговые продукты в мире делаются программистами. Самые неудобные, самые непонятные, самые извращённые. Хочешь ввести пользователей в иступление — дай программисту самостоятельно сделать «удобно для людей».
Ещё вам сложно поставить себя на место пользователя. Вы не интересовались людьми, не интересовались их занятиями, не наблюдали за работой, не изучали их поведение. Вы не знаете, насколько разительно отличаются сценарии использования разного софта в разных контекстах у пользователей. Вы не можете понять, почему пользователи упорно делают вот это, а не то, что вы им предлагаете в святой уверенности, что людям требуется именно это.
В худшем случае вы даже не поймёте, что при создании софта для какой-либо группы граждан разумно сначала узнать, что этой группе удобно. Просто чё-нить сделаете, потом будете удивляться. Что, неужели у беременных какие-то особые кейсы? Что, водитель за рулём вот так скрючивается? Дети часто падают? В метро смартфон держат одной рукой?! Блин, у меня такие же ноги и ничего не болит. Не понимаю. Вроде такие же люди.

Убитый кругозор может свидетельствовать также и о том, что вы не пользуетесь бонусами процесса, при котором кругозор накачивается. Что это за процесс? Получение новой разнообразной информации из разных источников. Бонусов тут уйма.
Во-первых, вы раз за разом пропитываетесь тем, что мир большой и разный. Я в этом тексте повторяю и повторяю, но такое понимание очень, очень важно. Из-за его отсутствия косячат на всех фронтах от мелкоокопных до стратегических.
Во-вторых, вы привыкаете работать с информацией оптимальнее. Из разных источников поступает информация разной плотности, разной структуры, разной степени зашумленности, разной степени валидности. Упрощение: у вас срочная (и очень выгодная) задача, к которой приложен мануал в 1000 страниц, а сроки в две недели. Нужные абзацы текста размазаны по всему талмуду. Как думаете, кто быстрее и качественнее выжмет из этого мануала нужное, Вася (читает по 10 страниц текста в месяц, любит смотреть игростримы) или Петя (читает по 1000 страниц текста в месяц, любит листать энциклопедии)? Вопрос риторический, я знаю, что вы верите в Васю.
В-третьих, вы привыкаете к потоку информации. Сегодня вы устали уже после часа обработки, через год тянете два часа, через пять лет можете весь день сидеть в архиве и в четыре конечности конспектировать.
Ну ок, а оно вам надо? Зависит от. Если вы не умеете в информацию, вы провалите research-задачи (когда надо за день чуть ли не аналитическую сводку по top-10 базам данных сделать с плюсами, минусами и примерами использования). Очевидно, провалите задачи, выполнение которых подразумевает стремительную накачку знаниями. Скорее всего, у вас проблемы с чтением интенсивных переписок и вы из тех людей, которые «я почту не читаю, там слишком много пишут» (при том, что ваш коллега Вася почему-то за 30 минут в сутки делает inbox плодотворно пустым), что не позволяет руководителям ставить вас на задачи, подразумевающие поток общения.

Ежу понятно, что я знатно гиперболизировал. Ежу понятно, что по разным причинам (от нехватки кадров до «так сложилось») в индустрии вообще всё наперекосяк. Также понятно, надеюсь, что настолько вот со всех сторон замкнутые в себе люди всё же очень редко бывают. Посмотрите на списки выше как на лубочную иллюстрацию того, где и как всё же может выстрелить. Пусть не так выпукло, но порою и ненулевой вероятности достаточно, чтобы задуматься.
Уже писал, кажется, но… фиг знает, может, везло. Большинство попадавшихся мне действительных сеньоров (не те, которые сеньоры потому, что надо было назначить хоть кого-нибудь) и руководителей уровня служба+ обладали кругозором больше среднего по больнице. Это сходится с обнаруженной Паундстоуном корреляцией между кругозором и доходом. Разное образование, разный возраст, разное семейное положение (можно бы предположить, что у холостых больше времени).
Продолжение следует.

Разработка и цифровое слабоумие, 2.1/3: 4 комментария

  1. По психологии программистов в 1971 выходила одна хорошая книга, так и называлась: Gerald Weinberg — «Psychology of computer programming». Насколько я знаю, в западной среде считается классикой, выдержала несколько переизданий, но на русском ни разу не издавалась. Да и знают у нас про неё 1.5 человека. Я предпринимал попытки её перевести, но времени всегда не хватало, может в следующем году осилю. По мнению моего бывшего наставника на работе, вещь стоящая и актуальности не потерявшая.

    • М… Я таки считаю, что она ещё больше потеряла актуальность. Вайнберг оперирует на полях, которых уже не существует. Очень изменилось взаимодействие человека с компьютером, очень изменились люди, изменились языки, изменился характер многих решаемых задач. Собственно, потому его даже не упомянул, т.к. считаю реликтом.

Добавить комментарий