Инженерное нелюбопытство
Моя бабушка жутко не любила поездки железной дорогой. Паровозы не вызывали у неё доверия, вели себя явно подозрительно и откровенно угрожающе. С большим трудом моему отцу удавалось её посадить в вагон, когда это на самом деле было необходимо. Отец же, за всю свою жизнь исколесив в командировках почти весь союз, провёл в вагонах чистого времени что-то около года или больше, но каждый раз неимоверных душевных усилий стоило ему подниматься на борт самолёта. Я летаю, не замечая в них принципиальных отличий от городской маршрутки и уж точно не переживаю по этому поводу. Рискну предположить, что будь сейчас пассажирский коммерческий космос массово доступен, моим детям или внукам не будет стоить каких-то душевных усилий сгонять на выходные в лунную колонию и обратно, но я сам никогда в жизни не полезу ни во что, что летит за пределы атмосферы Земли. Нормальный, эволюционный ход истории. Потомки должны быть лучше предков, иначе человечество деградирует.
В IT наблюдается схожая тенденция, если брать за критерий меру, так сказать, «обыденности» технологий, их интеграцию в ежедневные социальные взаимодействия. Персоналки начали своё победное шествие в народ в эпоху, когда вычтехника была уделом учёных, инженеров и кучки маргиналов-нёрдов. Всех их уже объединял инженерный и творческий подход, а персоналкам пришлось туговато — поколение наших родителей воспринимало их и тогда и сейчас как какие-то чёрные ящики, над которыми надо проводить точно выверенные шаманские ритуалы для получения нужного результата. Творческому любопытству тут места нет — если нужный значок или кнопка отсутствует в указанном инструкцией месте на экране, но оказываются сдвинуты немного в сторону — наступает вполне понятная паника и желание беспокоить техподдержку, генерируя тонны соответствующего фольклора в стиле
(испуганно) у меня пропали панельки!
(устало) нажмите контрол-о…
(радостно) ой, а теперь у меня панельки мерцают!
(устало) отпустите контрол-о…
Я полагаю, что в этой отрасли граница между поколениями пролегает там, где исчезает очевидность технических решений. Например, выбор элемента в ListView делается двумя кликами мышки, а нажатие кнопки — одним. Мы привыкли к этому. Это наверняка результат какого-нибудь исследования в области эргономики интерфейсов родом из Microsoft или Apple или может быть даже ещё из PARC. Но попробуйте объяснить своей маме в чём же разница… Люди, не то чтобы далёкие, а, скажем так, неблизкие к IT, часто подозревают нас в каких-то магических способностях, когда мы, подойдя к заведомо незнакомой (но очевидно склёпанной на каком-то одноплатнике или микроконтроллере), железке с кнопками и экраном, разбираемся в ней существенно быстрее простых смертных. Но никакой магии здесь нет, конечно — просто для нас workflow устройства более очевиден и интерфейс как правило разработан именно так, как придумали бы его мы сами. Поэтому и всё сразу понятно.
Промежуточный дисклеймер: всё вышесказанное, как обычно в моих статьях в стиле «поболтать», заведомо страдает от множества упрощений и допущений ради краткости последующего изложения основной мысли.
Пока что всё вышеописанное отражает мою собственную, идеализированную и немного упрощённую картину мира, сложившуюся в то время, когда я сам ещё более-менее относился к поколению «нынешнему». Но годы идут и вот я, уже преподаватель ряда IT-дисциплин в двух ведущих столичных университетах, работаю со студентами. Студенты бывают разные, целый спектр от энтузиастов до пофигистов, от тех, кто пришёл просидеть штаны 5 лет потому, что так принято, до тех, кто всерьёз намерен получать полезные отраслевые знания и навыки. Первых почему-то больше, и это очень печально, потому что конкурс на эту специальность в этом вузе довольно высокий и попасть сюда требует усилий.
И вот в процессе рутинной работы я в последнее время стал замечать пугающие меня явления. Происходит что-то такое, для чего на ум приходят названия вроде «хроническое нелюбопытство». Поясню на примере. Студенты выполняют цикл лабораторных работ на языке по выбору, но как правило это C# или java, редко python. К небольшому формальному отчёту в электронной форме требуется также приложить архив из всех существенных исходников, чтобы я мог запустить и проверить их у себя. Казалось бы, фраза «приложите архив исходников» не должна ни у кого вызывать непонимание? Когда речь идёт о C# то для пущей понятливости я говорю им «приложите архив вашего solution». Тут можно что-то понять не так? Оказывается, ещё как можно.
Помните древний айтишный анекдот доинтернетовских времён про командировочного, которого отправили с дискетой в другой город скопировать какой-то нужный его фирме софт. И который привёз на этой дискете один LNK-файл со ссылкой на этот софт. Вы думаете, такое только в анекдотах бывает? Как бы не так. Сейчас конец семестра, у половины студентов половина лабораторок ещё не сдана, и хотя я в сентябре умолял их не откладывать, чтобы потом не разгребать по 30+ работ со всего потока каждый вечер, они именно это и делают.
И вот, нашёлся один талант, который судя по текстовой части отчёта и скриншотам, сделал очередные три лабораторных работы грамотно и правильно, ничтоже сумняшеся присылает архив, внутри которого — да, вы правильно угадали — находятся три сиротливых SLN-файла. Я его спрашиваю, мол, уважаемый коллега, а вы вообще знаете, что такое SLN файл и для чего он нужен? А он и отвечает, что там находятся те самые требуемые исходные коды его лабораторок. Когда же я сказал, что исходных кодов там нет, ответ студента был в стиле «ну раз вы так говорите, то я всё исправлю». То есть даже тогда, когда преподаватель очевидно зацепился за это конкретное место, у студента не возникло мысли самостоятельно залезть в этот злосчастный файл и лично выяснить, что же с ним не так. Тут становится сначала смешно, а потом не очень, когда таких талантов набралось ещё человека четыре — и все, на первый взгляд, умные ребята, задних не пасут, академически не отстают и всё такое.
Значит, проблема хронического нелюбопытства имеет системный характер. Когда мне было лет 10, я создал свой первый в жизни экзешник в Turbo Basic, будучи вне себя от счастья по поводу того, что можно, оказывается, компилировать — писать программы, не привязанные к среде разработки, а выполняемые непосредственно. И тут же полез смотреть, что же там внутри. Ещё ничего не понимая из увиденного, я всё же заметил, что там есть сигнатура в начале, какие-то текстовые строки в конце и что сам машинный код выглядит неравномерно. То есть, инженерное любопытство по поводу того, как устроена сложная система «под капотом», даже если релевантных знаний около нуля, я считал чем-то естественным для любой человеческой особи. Ну, если не любой вообще, то для любой поступающей в университет на факультет IT по специальности «программная инженерия». Ну кто в детстве не пытался разобрать какую-нибудь механическую игрушку и посмотреть, что там внутри?
Так вот, пожалуйста, имеем будущую интеллектуальную и технологическую элиту страны, для которой сама идея заглянуть внутрь произвольного файла и посмотреть, что там и можно ли это как-то понять-трактовать-поправить — оказывается, является далеко не очевидной! Даже при том, что SLN-файл текстовый, а не бинарный.
Кстати, отличие текстового файла от бинарного для них тоже не очевидно, и это, увы, более массово чем нежелание смотреть внутрь. Не в том смысле отличие, что любой файл — это последовательность байт, нет. А о том, что файлы бывают более человеко-читаемые и более машино-читаемые — у них тоже нет никакого понятия. У людей, которые, вроде бы как выбрали стезю разработчика. Внезапно, появилось поколение будущих IT-шников, для которых файл стал базовой семантической единицей информации!
А ведь это не первый и не второй курс, и многие из них уже трудоустроены по специальности и весьма успешны на своих работах. Что происходит? Встречались ли вам похожие явления? Или это у меня уже синдром «раньше трава была зеленее»? Дискасс.