В мои обязанности входит проведение собеседований при приёме на работу айтишников. Мой верный помощник в этом — футляр с наклейкой «Маны». В самом начале собеседования я открываю его и достаю электронную сигарету. Если кандидат улыбается, продолжаю разговор, если нет — зову следующего.
Истории с тегом: программизмы
Всего историй: 896
Нужно больше Индии
Есть у меня товарищ A., у которого свой товарищ B. Товарищ A., не щадя живота своего, вкалывает на B. Сам я калякаю на питонах, дельфях да плюсах.
А. — юный падаван: там подхалтурит, здесь подпаяет, в общем, ничего выдающегося. B. — техномаг, рулит отделом в средней успешности фирме, работающей в двух направлениях: разработка мелкокалиберного ПО и сервисный ремонт ПК. Я в этой адской системе как внештатник числюсь.
И вот сидим мы давеча в баре с А. под хорошим градусом, ибо сынишка у него родился. И вдруг хватает он меня за пуговицу рубахи и скромно так, даже стыдливо молвит:
— Валик, ты бы это… Короче… Программируй неправильно! А то мы задолбались в пять вечера уходить, ни фига интереса нету. B. жалуется, по быдлокоду соскучился, говорит. И директор премии лишил за прошлый месяц…
Грешен: пивом подавился.
Целая буква U
Привет из Бонча! Пишем контрольную лабу по циклам и вводу-выводу в С. Девушка моя, Юлька, юный программист, пишет первая, потом я. Она сдаёт свою программу успешно. Наша староста, у которой вариант совпадает с Юлькиным, просит Юльку помочь, так как я занят. Юлька так подсказала, эдак — не понимает староста. Тогда Юлька просто код фоткает и отдаёт. Всё равно не работает. Староста (полноватая блондинка, где блондинка — это не только цвет волос, но и состояние души и мозга) спрашивает: «А у тебя тоже не работает программа? Всё время нули выводит, да?» Юлька идёт разбираться. Проверяет код, понимает, что он идентичен её коду. Говорит: «Давай-ка, Лера, запусти программу, посмотрим, что она выводит».
Теперь, чтобы прочувствовать всю прелесть происходящего, текст задачи: «С клавиатуры семь раз ввести целые числа U и V. Для каждой пары значений вывести значение S = 100U, если U + V < 10, и 3 + 11V + 2U в противном случае».
Лера запускает программу, комментирует: «Во-о-от, программа выводит, типа, введите числа U и V. Вот, я ввожу U (нажимает клавишу U, потом пробел) и V (нажимает клавишу V) — и не работает!» (Делает детское обиженное лицо и разводит руками.)
Юльку было не откачать. А потом, когда она рассказала это мне, не откачать было и меня.
Девушки, вы такие классные, когда прогаете! С прошедшим вас!
ЗОЖ не обойдёшь
Вчера ближе к ночи отправился с товарищем в красный супермаркет. Набрали еды на неделю, товарища с двумя большими пакетами рассчитали, а за мной материализовалась симпатичная девушка и скромно попросила пропустить вперёд, чтобы успеть пробить две бутылочки пива (время 21:58, после 22:00 в области спиртное не продают — и пиво тоже).
По доброте душевной пропускаю девушку. Кассир пробивает — и девушка даёт банковскую карточку. Время 21:59:30, кассир медлит, но снять денежку с карты успевает, после чего стукает 22:00:00, и кассовый терминал благополучно блокирует продажу спиртного. Банковская транзакция проведена, а кассовый аппарат не разрешает продажу. Мы с другом хихикаем, девушка смущённо краснеет. Покупка не закрывается, ибо спиртное, и не отменяется, ибо денежка с карточки снята, а возвращать денежку на карточку банк не умеет.
Подходят старший кассир и командир охранного расчёта. Все трое дружно колдуют над кассой. Живительный ребут не помогает. Потом одна из кассирш говорит, что это не первый случай, и помочь сможет только молоденький айтишник, которых в 22:00 не бывает. Девушка перед нами извиняется, пиво возвращают обратно.
Мораль, казалось бы, проста: если пропускаете кого-нибудь со спиртным, поинтересуйтесь, не безналом ли будет производиться расчёт, и пускайте только оплачивающего наличкой. И программистам урок: все разрешения на транзакцию должны быть получены уже до её начала. Но на самом деле за здоровый образ жизни агитировать сейчас умеет даже техника. За ЗОЖ и против советского «если нельзя, но очень-очень хочется, то можно».
Линукс? Да, слышали
Однажды, что называется, припёрло, и решили мы взять на работу второго программера в помощь мне. Свободный график, белая зарплата четыре штуки зелени чистыми (дело в Москве было), соцпакет и все дела. Один минус: работать надо. Программировать под линукс. Знать ОС так, чтоб от зубов отлетало, не требовалось. О POSIX понятие иметь, gcc, gdb — малый джентльменский набор. Ну, и дебилизм в крайней форме не приветствовался.
Два года. Собеседования примерно раз в неделю (это после фильтрации кандидатов нашим HR). 80% в строгом соответствии с Этвудом не могли написать FizzBuzz-тест. Остальные не могли прочитать доку на английском, не имели представления о «взрывной» рекурсии и отрисовывали функцию вычисления чисел Фибоначчи в строгом соответствии с математическим определением. А далее — приз в студию: ни один кандидат не имел приличного понятия о линуксе. «Я видел, как коллега что-то в Убунте писал» — самый распространённый вариант знакомства.
Человека так и не нашли. Бабу-Ягу вырастили в своём коллективе, как в фильме Рязанова. Проект адскими усилиями сделали. Актуальность вакансии сошла на нет, и её закрыли. А недавно я узнал, что в похожей ситуации мой знакомый привёз программера аж из Челябинска.
Сижу вот и думаю. Конечно, линуксоиды где-то существуют. Но у меня вопрос к тем, кто наводняет рунет флеймом за линукс: кроме шитштормов, вы что-то ещё делать умеете?
Стерильная компиляция
Пишу на Javа, используя сине-квадратную среду. Все, кто с ней сталкивался, знают, что там очень неплохой прекомпилятор.
Как-то дописывал программу в жесточайшем цейтноте: никаких предварительных запусков не было, всё только на бумажке и в мозгах. А тут, как назло, заходит заказчик и просит продемонстрировать, что готово. Скрестив всё, что только можно, я запускаю программу. Та успешно компилируется и работает ровно так, как и было задумано. С первого раза!
Вывод: лучше набросать алгоритм на бумажке и поболтать о перспективах и проблемах, чем сразу садиться кодить.
Особенности нормализации детей
Мы сидим в девять вечера на работе, у нас ахтунг под кодовым названием «дети». Мы этот ахтунг уже четыре часа мучаем. Мы уже обсудили, что жёнам подарить на Восьмое марта. И что тёщам подарить, тоже обсудили. Мы поели эклеров, закусили «Вагон Вилз», попили кофе, не покурили (бросаем), попили ещё кофе, погрызли попкорна. Мы всю голову сломали над этим багом, а дети только множатся. Мысли путаются, глаза слипаются, пальцы промахиваются по клавишам, а дети всё не исчезают. А завтра встреча, и этих чёртовых детей нужно демонстрировать. И мы сидим и ищем, где же этот баг…
Сабж, собственно, такой: в нашей системе социальной аналитики среди тысяч тем есть происшествия в Москве. И в теме этой, как и в любой другой, есть полезнейший отчёт «Популярные слова», в который собираются слова, чаще всего соседствующие в тексте с объектом мониторинга.
И вот в теме по происшествиям, в популярных словах, намертво засело слово «дитя». Как увидишь такое — сердце схватывает: думаешь, что ж там за происшествие с дитём?! Кликаешь на это бедное дитё, а система тебе в ответ: «Нет сообщений». Ну как так-то? Вот же, в популярных словах 100500 вижу же!
В общем, мы искали-искали-искали-искали. Сломали головы и глаза, а оказалось, что ларчик просто открывался. Вчера произошёл пожар на юго-западе столицы, и двое детишек, спасаясь от огня, выпрыгнули из окна. Остались целы, к слову, всё хорошо у этих ребят. Но обсуждают инцидент все соцмедиа, да и СМИ не дремлют — перепечатывают друг у друга новости. Вот и «множатся» дети в теме.
А у нас же не просто так себе какой-то там мониторинг, но и умный многофакторный анализ сообщений, включая развитую лингвистическую систему. Развивая её, мы узнали столько о лингвистике, семантике и морфологии, что уже даже не знаем, физики мы ещё или уже лирики.
Так вот, когда сообщение попадает в систему полнотекстового поиска, то слово «дети» приводится к морфоформе «ребёнок», в то время как модуль, который, собственно, считает статистику популярных слов, по умолчанию приводит слово «дети» к слову «дитя». Вот и не складываются эти разные дети и ребёнки в один детский сад.
Уф, нашли, полечили, запустили пересчёт. Волнуемся. Покурить всё равно не успеем, да и бросаем же, разве что чай быстренько налить — и бегом смотреть, как там наши дети. Ура, все детишки на месте, сложились, пересчитались, проанализировались. Счастье есть.
И вот не говорите мне, что у других разработчиков не бывает таких интересных демографических багов и таких тупнячков в коллективе!
Индийский дренаж
Так уж заведено, что каждый программист обс… критикует код предшественника, но это, похоже, не только программистская специфика. У меня последовательно работали четыре сантехника, и я, побыв с другой стороны, понял, как чувствует себя заказчик.
Каждый последующий вкусно пахнущий сантехник, увидев работу предыдущего, долго и аргументировано доказывал мне, что до него тут работал какой-то быдлосантехник, и только те технологии, что использует нынешний, позволят системе беспроблемно работать. Если бы не он, дескать, система бы легла через полгода-год, а то, что делали до него, — неправильная идеология, ошибочная архитектура и вообще плохой стиль слесарирования.
Мне приходилось каждый раз верить и оплачивать переделку половину сделанного до этого. Сроки работ, естественно, росли тогда в арифметической, а оплата — в геометрической прогрессии. И я пришёл к выводу, к которому приходят все заказчики программистов и прочих веб-разработчиков: не трогать никакую систему, пока она исправно работает, и никому не верить.
Who watches the watchdogs?
Кореш пишет приложение для «окон». Суть — расчёт каких-то биоритмов и ауры. Решил я ознакомиться с приложением поближе. После установки оказалось, что программа поставилась не сама, а вместе с ещё какими-то приложениями, и кое-что прописала в автозагрузку. Иду в гости к разработчику с целью поинтересоваться.
Оказывается, этот крендель, кроме самого приложения, написал ещё одну программу. Эта программа после установки прописывает себя в автозагрузку и сидит в памяти до завершения работы Windows. При этом она с периодичностью в несколько минут стучит на сервер, проверяет, установлена ли самая свежая версия приложения, и в случае необходимости скачивает апдейт и ставит его.
А чтобы та программа не отвалилась сама или по воле юзера, кореш написал вторую программу, которая тоже сидит в памяти и постоянно пингует первую, а в случае отказа перезапускает её. Прямо как в анекдоте про Васю-программиста.
Ни шага в сторону
Начальника моего по молодости коллеги не любили. Потому что работал на БЭСМ-6. Потому что программировал на автокоде (разновидность ассемблера такая была). А ещё потому, что на БЭСМ-6 была корпоративная многозадачность. Переключение с задачи на задачу происходило только тогда, когда исполняемая программа обращалась к функциям ОС или, например, к стандартной математической библиотеке.
Начальник мой умудрился переписать стандартные функции на автокоде. Безобидно звучит, но поскольку программа совсем не обращалась за сервисами ОС, переключение задач не происходило. Машина уходила в глубокий вис и выходила из него, только рассчитав всё, что нужно было моему начальнику. А поскольку задачки порой считались по полсуток… Ну, вы понимаете. Сдаётся мне, что это был первый в мире ПК с однозадачной ОС.
Пришлось начальника повысить в должности, чтоб бросил программировать.