В далеком 1991-м я поступил в горный техникум на специальность, никак не связанную с IT. Но так случилось, что именно в этом учебном заведении я впервые увидел настоящий комп. Развлекались с товарищем бейсиком — других языков не знали, однако местный админ, увидев наше стремление, дал нам отведать С++. Это и стало ключевым моментом в выборе профессии — я стал программистом, правда, без диплома.
Я работаю уже больше десяти лет, но так и не получил не то что специального, но даже любого другого высшего — всему учился сам. Мечта иметь «вышку» никуда не делась. Я решился пойти на заочку и подал документы в один из вузов на специальность «АСУ». Впрочем, радость моя продолжалась всего лишь до первой сессии.
Из нашей группы в 25 человек имели представление о программировании не больше десятка, а на самом деле программировали только я и ещё один парень. Сидим мы однажды на лекции по программированию. Преподаватель — известный в этом вузе доцент, женщина бальзаковского возраста. Доходит очередь до операторов цикла. Преподаватель разъясняет типы, синтаксис и условия. Рассказав про операторы break и continue, преподаватель неожиданно заявляет, что пользоваться этими операторами ни в коем случае нельзя, так как они нарушают логику программы, а для прерывания цикла следует использовать исключительно goto. Группа продолжает писать лекцию; возмущаются, как вы уже поняли, только двое. Впрочем, возмущения ни к чему не привели. Все наши аргументы были разбиты о простой намёк: «Будем умничать — сессию не сдадим!»
Так разбиваются мечты. Эта лекция дала мне многое — теперь я точно знаю, откуда появляются «покалеченные» программисты. Такое высшее образование мне было не нужно, и на вторую сессию я не пошёл.
С тех пор прошло два года. Получить «вышку» для карьерного роста у меня не вышло, но я открыл фирму и теперь работаю на себя.
Попросили меня как то наладить компьютерную систему наблюдения в одном игровом клубе. Хозяева закупили дешёвые чёрно-белые видеокамеры и компьютерный PCI-видеоконцентратор. Денег у них на запуск было две тысячи рублей. Проблемы начались сразу с постановки задачи:
— А нельзя картинку сделать цветной? Это же компьютер... — А нельзя картинку улучшить, чтобы читать буквы на документе в руках посетителя можно было? Мы недавно в одном американском фильме видели, как сверху по экрану черта пробегает и картинка резко проясняется — вот и нам так надо. — А нельзя ли, чтобы компьютер распознавал постоянных посетителей? Если надо, мы учебник криминалистики принесём, там написано, как лица описывать.
Тем не менее, после часовых переговоров неясности были устранены, система запущена, а акт о приёмке работ подписан. Через неделю звонит директор этого игрового клуба и сразу наезжает:
— Я-то думал, вы специалист, а вы простейшую систему видеонаблюдения наладить не можете! — В чём у вас конкретно проблема? — Я уже неделю с вашей системой вожусь и до сих пор не могу понять, как у меня кассир с барменом деньги воруют!
Когда грянул кризис, меня, как и многих моих коллег, сократили из одной крупной компании. Сократили по хорошему, выплатив два оклада, да ещё и как раз после зарплаты — я решил отдохнуть и предался лености и порокам.
Время шло, денежная котлета уменьшалась, а на сайтах компаний, которые занимаются такой узкоспецифичной деятельностью, как SAP, было глухо, как в танке. Я начал шерстить вакансии админов, но всем требовался либо юниксоид, либо человек с опытом работы от трёх лет; мой же опыт заключался в полуторамесячном сидении в техподдержке хостинга и десятилетним стажем общения с PC. Наконец я наткнулся на вакансию помощника системного администратора. Платили мало, ездить пришлось бы на другой конец города, но на безрыбье и рак рыба, поэтому я послал резюме.
Через три дня пришел ответ: «Уважаемый соискатель, заполните, пожалуйста, наш бланк резюме». Бланк оказался кривым вордовским файлом, но добила меня в нём табличка «Программы, которыми вы владеете». В таблице было всего три строчки: Word, Excel и... Internet.
Сделав выводы о компетентности отдела кадров и того самого «системного администратора», чьим помощником я в теории должен был стать, отвечать на письмо я не стал, а через неделю устроился на работу по специальности.
Снова беру денежки у начальства, снова неспешно прогуливаюсь до магазина компьютерных комплектующих. Остановился у крыльца, раздумывая, покурить или ну его нафиг? Хоть на улице и –34, решаю попортить здоровье. Выходят два консультанта:
— Ну тупые покупатели пошли, блин... Я ему русским языком: не бывает таких процессоров — трехъядерных. Они же не двоичные!
Второй только кивает сочувственно. Выбрасываю сигарету и быстро захожу в магазин. Решил найти всё в прайс-листе сам, благо там ID товара указан — можно просто отдать консультанту бумажку, не рискуя нарваться на идиота.
Нашёл, переписал, отнес. Консультант отправился к терминалу, я следом — мало ли что ему в голову взбредет. Не ошибся. Через полминуты безуспешных попыток вбить ID в форму поиска:
— Извините, у нас технические неполадки с терминалом.
Мне потребовалось исполинское усилие воли, чтобы включить этому шалопаю NumLock и не дать при этом в морду.
Как-то раз дорабатывал я чужой проект, написанный на РНР. Конечно, использовалось ООП — известно, что только ламеры пишут процедурный код, а реальные пацаны без объектов и «хеллоу ворлда» не напишут.
Центральным элементром нестройного ансамбля был класс main, содержавший в себе всё. Его экземпляр создавался в каждом скрипте, он содержал в себе весь набор сервисных функций в виде методов и так далее. Были и классы помельче — например, класс, необходимый для работы с потоком закачки файлов. Из экземпляров этого класса в классе main создавался массив закачек. Здорово, но как из любого экземпляра класса «поток» получить доступ к сервисным функциям, определённым в main? Всё гениальное просто! Надо в каждый класс «поток» воткнуть экземплярчик класса main, и дело в шляпе.
В итоге сервак, который на лету распаковывал гигабайтные архивы и с лёгостью ворочал ISO-образами, тупо висел по 30 секунд на примитивном фронт-энде для линуксовой консольной качалки. Всякого я повидал, но такое — первый раз в жизни.
Одногруппник с моей подачи согласился попробовать GNU/Linux. В перерыве лекции по программированию он достал ноут, и мы приступили к установке Ubuntu. Сгрудившиеся вокруг компьютера студенты привлекли внимание препода.
— Что делаете? — Ставим линукс. — Какой дистрибутив? — Убунту. — Даже не слышал о таком. А Red Hat сейчас как? — Ушли в энтерпрайз, а для пользователей сделали Федору. — Да фигня этот ваш линукс. У нас в фирме сервер на Редхате, так на нём даже графического интерфейса нет.
Вот такие подоконники преподают у нас программирование.
Общаюсь по телефону с айти-сотрудником из удалённого филиала. Полдня выясняем, почему нет связи, и по логической цепочке доходим до модема. Начинаю удалённый осмотр:
— Какие лампочки горят на модеме? — Горит «10 разделить на 100 метров», но что это значит, я не знаю.
Десять часов я потратил на отладку скрипта, который по непонятным мне причинам обрывал обработку данных и добавление их в MySQL после тридцати первых записей.
Только под полночь я вспомнил, что phpMyAdmin по умолчанию выводит данные по тридцать строк и нужно просто перелистнуть на следующую страницу.
Работаю в одной из госструктур системным администратором и попутно даю околокомпьютерные консультации. Однажды юристы попросили проверить техническое задание одной из подконтрольных организаций на поставку электронно-вычислительной техники в ассортименте — госзаказ ведь дело серьёзное.
Приложение №2, составленное двумя «техническими программистами», содержало следующее:
Компьютер в комплекте (параметры): — Процессор не менее Intel Core 2 Duo E8500 — RAM не менее 3 Gb-DDR2(800) — Мат. плата не менее Asus P5KPL-C G31 — HDD не менее SATA 2 160 Gb — Video не менее integr+PCI-E/DVD-RW/FDD/500W, Корпус) — Клавиатура, мышь не менее Genius
Интересно, кто такой заказ исполнит? Ребята, если уж дёргаете названия из прайсов, то хотя бы читайте их. Даже и не знаю, что страшней — описание мыши или скобка-смайл в описании видеокарты? Переворачиваю страницу: