Я учитель информатики, по совместительству лаборант — больше айтишников нам по штату не положено. Один день заслуженного отдыха, и работа школы встаёт. Обычный четверг, уроков нет, еду с утра затариваться по компьютерным салоном всякой мелочью.
Приезжаю к часу, завуч в истерике: на ее компьютере «вылез вирус, что-то пишет», она боится его трогать, и потому не может получить почту с олимпиадными заданиями. Секретаря тоже нет на месте, а на других компах в почте нет сохранённого пароля, который завуч, естественно, не помнит.
— Что именно пишет вирус? — Я не читала.
Подхожу к ее компьютеру. «Доктор Веб» скачал обновления и просит перезагрузить компьютер. В голове не укладывается — окно висит у неё с девяти утра, а прочитать его она не могла, хотя за компьютером каждый день по несколько часов сидит.
Как они, интересно, уже известные им окна распознают? По цвету? По размерам?..
— Дайте мне вторую мышку! — Зачем?! — Да я когда в Ворде текст набираю, у него справа края неровные. Я нажимаю кнопочку на панели, текст справа выравнивается, но становится неровным слева. Нажимаю другую — слева ровный, справа — нет! А мне надо, чтобы он был ровный с обеих сторон.
Наш продукт предназначен для интеграции с самыми различными базами данных, серверами, JMS-брокерами и т. д. Как-то раз получаю письмо от одного из важных клиентов с истерическими воплями о том, что продукт-де не может дозвониться до удаленного JMS-сервера. К письму прилагается толстая пачка всевозможных логов. Начинаю методично вникать, погружаясь всё глубже и глубже. Примерно на пятнадцатой секунде погружение прерывается письмом от того же клиента с отбоем и извинениями — оказывается, сервер, на котором стоял тот JMS-брокер, был просто выключен.
Облегчённо перевожу дух, выныриваю, отвечаю вежливым письмом с благодарностями и в конце добавляю: «К сожалению, наш продукт до сих пор не может общаться с серверами, которые обесточены, но наши инженеры уже работают над этим». В конце ставлю жирный смайлик, чтобы клиент не подумал чего. Через пару секунд получаю ответ: «И когда будет реализована эта возможность? Нам она нужна как можно скорее, а то у нас скоро дедлайн».
Программисты, бывает, кажутся безумно умными и способными замучить любого собеседника-непрофессионала своей рабочей терминологией. Они могут взламывать сайты Интерпола одной левой и решать проблемы рядового бухгалтера после двух бессонных ночей подряд, умеют сосчитать «много всего», используя только ноль и единицу, и даже шторы на окна вешают методом дихотомии. Однако если присмотреться и поэкспериментировать, то выяснится, что все они витают в облаках.
В ноябре отдел программирования, в котором я работаю, заполнял план отпусков на следующий год. Мне, как самой близко сидящей к начальнику, листок достался первой, и я радостно написала «июль 2009». Почерк у меня, надо сказать, почти как у педиатра с десятилетним стажем, поэтому коллега, глянув на мои каракули, внесла в своё поле «август 2008». Следующий товарищ взял за образец её запись, и в его графе тоже гордо значился какой-то месяц 2008-го. Когда дело дошло до Шурика, скромного и тихого молодого человека, он шепнул на ушко соседу: «У нас ошибка», — и оба исправили «2008» на «2009». Результаты отдали начальнику, который обнаружил наши восьмёрки, с упрёками в тупизне в адрес половины отдела велел исправить на девятки и даже дописал что-то своё.
Отдел кадров с удивлением был вынужден признать, что в новом 2010-м году программисты отдыхать не будут.
В далеком 1991-м я поступил в горный техникум на специальность, никак не связанную с IT. Но так случилось, что именно в этом учебном заведении я впервые увидел настоящий комп. Развлекались с товарищем бейсиком — других языков не знали, однако местный админ, увидев наше стремление, дал нам отведать С++. Это и стало ключевым моментом в выборе профессии — я стал программистом, правда, без диплома.
Я работаю уже больше десяти лет, но так и не получил не то что специального, но даже любого другого высшего — всему учился сам. Мечта иметь «вышку» никуда не делась. Я решился пойти на заочку и подал документы в один из вузов на специальность «АСУ». Впрочем, радость моя продолжалась всего лишь до первой сессии.
Из нашей группы в 25 человек имели представление о программировании не больше десятка, а на самом деле программировали только я и ещё один парень. Сидим мы однажды на лекции по программированию. Преподаватель — известный в этом вузе доцент, женщина бальзаковского возраста. Доходит очередь до операторов цикла. Преподаватель разъясняет типы, синтаксис и условия. Рассказав про операторы break и continue, преподаватель неожиданно заявляет, что пользоваться этими операторами ни в коем случае нельзя, так как они нарушают логику программы, а для прерывания цикла следует использовать исключительно goto. Группа продолжает писать лекцию; возмущаются, как вы уже поняли, только двое. Впрочем, возмущения ни к чему не привели. Все наши аргументы были разбиты о простой намёк: «Будем умничать — сессию не сдадим!»
Так разбиваются мечты. Эта лекция дала мне многое — теперь я точно знаю, откуда появляются «покалеченные» программисты. Такое высшее образование мне было не нужно, и на вторую сессию я не пошёл.
С тех пор прошло два года. Получить «вышку» для карьерного роста у меня не вышло, но я открыл фирму и теперь работаю на себя.
Попросили меня как то наладить компьютерную систему наблюдения в одном игровом клубе. Хозяева закупили дешёвые чёрно-белые видеокамеры и компьютерный PCI-видеоконцентратор. Денег у них на запуск было две тысячи рублей. Проблемы начались сразу с постановки задачи:
— А нельзя картинку сделать цветной? Это же компьютер... — А нельзя картинку улучшить, чтобы читать буквы на документе в руках посетителя можно было? Мы недавно в одном американском фильме видели, как сверху по экрану черта пробегает и картинка резко проясняется — вот и нам так надо. — А нельзя ли, чтобы компьютер распознавал постоянных посетителей? Если надо, мы учебник криминалистики принесём, там написано, как лица описывать.
Тем не менее, после часовых переговоров неясности были устранены, система запущена, а акт о приёмке работ подписан. Через неделю звонит директор этого игрового клуба и сразу наезжает:
— Я-то думал, вы специалист, а вы простейшую систему видеонаблюдения наладить не можете! — В чём у вас конкретно проблема? — Я уже неделю с вашей системой вожусь и до сих пор не могу понять, как у меня кассир с барменом деньги воруют!
Когда грянул кризис, меня, как и многих моих коллег, сократили из одной крупной компании. Сократили по хорошему, выплатив два оклада, да ещё и как раз после зарплаты — я решил отдохнуть и предался лености и порокам.
Время шло, денежная котлета уменьшалась, а на сайтах компаний, которые занимаются такой узкоспецифичной деятельностью, как SAP, было глухо, как в танке. Я начал шерстить вакансии админов, но всем требовался либо юниксоид, либо человек с опытом работы от трёх лет; мой же опыт заключался в полуторамесячном сидении в техподдержке хостинга и десятилетним стажем общения с PC. Наконец я наткнулся на вакансию помощника системного администратора. Платили мало, ездить пришлось бы на другой конец города, но на безрыбье и рак рыба, поэтому я послал резюме.
Через три дня пришел ответ: «Уважаемый соискатель, заполните, пожалуйста, наш бланк резюме». Бланк оказался кривым вордовским файлом, но добила меня в нём табличка «Программы, которыми вы владеете». В таблице было всего три строчки: Word, Excel и... Internet.
Сделав выводы о компетентности отдела кадров и того самого «системного администратора», чьим помощником я в теории должен был стать, отвечать на письмо я не стал, а через неделю устроился на работу по специальности.
Снова беру денежки у начальства, снова неспешно прогуливаюсь до магазина компьютерных комплектующих. Остановился у крыльца, раздумывая, покурить или ну его нафиг? Хоть на улице и –34, решаю попортить здоровье. Выходят два консультанта:
— Ну тупые покупатели пошли, блин... Я ему русским языком: не бывает таких процессоров — трехъядерных. Они же не двоичные!
Второй только кивает сочувственно. Выбрасываю сигарету и быстро захожу в магазин. Решил найти всё в прайс-листе сам, благо там ID товара указан — можно просто отдать консультанту бумажку, не рискуя нарваться на идиота.
Нашёл, переписал, отнес. Консультант отправился к терминалу, я следом — мало ли что ему в голову взбредет. Не ошибся. Через полминуты безуспешных попыток вбить ID в форму поиска:
— Извините, у нас технические неполадки с терминалом.
Мне потребовалось исполинское усилие воли, чтобы включить этому шалопаю NumLock и не дать при этом в морду.
Как-то раз дорабатывал я чужой проект, написанный на РНР. Конечно, использовалось ООП — известно, что только ламеры пишут процедурный код, а реальные пацаны без объектов и «хеллоу ворлда» не напишут.
Центральным элементром нестройного ансамбля был класс main, содержавший в себе всё. Его экземпляр создавался в каждом скрипте, он содержал в себе весь набор сервисных функций в виде методов и так далее. Были и классы помельче — например, класс, необходимый для работы с потоком закачки файлов. Из экземпляров этого класса в классе main создавался массив закачек. Здорово, но как из любого экземпляра класса «поток» получить доступ к сервисным функциям, определённым в main? Всё гениальное просто! Надо в каждый класс «поток» воткнуть экземплярчик класса main, и дело в шляпе.
В итоге сервак, который на лету распаковывал гигабайтные архивы и с лёгостью ворочал ISO-образами, тупо висел по 30 секунд на примитивном фронт-энде для линуксовой консольной качалки. Всякого я повидал, но такое — первый раз в жизни.