Я не удержался, попросил Ю мне поподробнее рассказать, какими же критериями она пользуется, отсевая вполне грамотных, на мой взгляд, специалистов — и ее ответ меня изрядно удивил. То есть удивил больше всего тем, что это был ответ вообще-то офицера МГБ:
— За профессионализмом это ты следишь, я-то не могу узнать, человек в науке разбирается или только вид делает, что математику понимает. Но мне другое важно: если человек не в математике или программировании, а в жизни замечает недостатки и подвергает их критике, причем обоснованной критике, то на такого уже нужно внимание обратить.
— И отправить его убирать снег на Чукотке, чтобы поменьше критиковал…
— Дурак. Нужно обратить внимание на то, какие он предлагает меры по устранению таких недостатков. Причем вовсе не обязательно, чтобы предлагаемые им меры в действительности могли недостатки эти убрать, тут важно прежде всего выяснить, насколько глубоко человек может разобраться в причинах возникновения недостатков. То есть это является веским таким критерием понимания, насколько у человека развиты аналитические способности…
— В принципе, мне твой подход нравится, но все же если у человека мысли сугубо антисоветские…
— Математика не может быть советской или антисоветской.
— Чистая математика — да, но мы же говорим о программировании.
— И что?
— И то. Вот смотри, такой простенький код: что он делает?
— Ну… так сразу и не скажешь. Но, мне кажется, выполняет какой-то запрос к базе данных.
— Вот именно, какой-то запрос, и выполняет его… Допустим, мы обратимся к этой функции вот из такого кода…
— Не поняла.
— Поясняю: в определенную дату, которая берется откуда-то еще, формируется запрос на стирание всех данных в базе. Тут можно еще повыпендриваться, и о том, что запрос будет на уничтожение всех данных, понять сразу не получится, потому что тут можно создать код, который в процессе выполнения сам себя изменяет. Причем — если программист достаточно грамотный — можно разработать код, который будет менять не себя, а совершенно другую, пока что абсолютно безобидную программу — и именно поэтому у меня стоит жесткое требование ко всем разработчикам: каждый кусок кода должен сопровождаться подробным описанием, причем не алгоритма, а именно того, что и когда данный код делает. И если код описанию не соответствует — а это уже понять в принципе довольно несложно…
— Интересно. Очень интересно, можно подумать, что это ты много лет в МГБ проработал, а не я…
— Вот тут ты ошибаешься, просто у тебя еще немного не хватает знаний, чтобы сообразить, что с помощью программ можно сделать, а чего нельзя. Но уже знаний достаточно, чтобы понимать опасность таких вещей, и понять потенциальную опасность того, что я тебе сейчас рассказал. И, главное, у тебя куда как больше опыта в том, чтобы ненужных людей не подпускать туда, где такие программы могут серьезно нам навредить. По счастью, у нас в университете и в политехе люди в целом вполне советские, так что пока нам будет достаточно просто контролировать, насколько хорошо они учатся и выполняют задаваемые им работы.