Закончил очередную функцию нашей Главной Проги. Андроид-приложеньице отправляет запрос на сервер конторы, получает ответ, выводит очередной график. Очередное сообщение — очередную линию рисует алерт-подобным цветом. Запрос — ответ — отображение.
Дочь скачала программку для соцсети. Сообщения, группы, картинки. Запрос — ответ — отображение.
Гаджет о погоде. Удобно, градусы всегда видно на рабочем столе. Оно постоянно делает запрос на погодный сервер, получает ответ, выводит.
Взгрустнул.
Запрос — ответ — отображение. Таковы 90% ПО и в маркетах, и которое делаю сам. Фактически — урезанная версия браузера. (Ну ладно, иногда расширенная. У нас, например, теги графиков и алертов не по спецификациям W3C сделаны. Три раза «ха».) Блин, но суть-то одна!
90% программистов пишут браузеры. Если повезёт, появляются 10% настоящего программинга на стороне сервера, который заказчику/клиенту/потребителю не виден, но чаще всё уже готово. (Сам использую спелчекер — ну, если юзер вдруг захочет тут же письмо отправить, кошерно бы его сразу и проверить, всё-таки начальство в основном использует, ему негоже ашипки сажать.)
Коллеги говорят: «За что платят, то и делай». Да я не против. Но грустно как-то немного…
Восьмое марта. Ну, шестое, конечно, но в фирме поздравляем сегодня. Строгий указ начальника: всем быть в костюмах, включая сисадмина (меня). Ну ладно, так и быть. Свитер снял (борода осталась), надел костюм, пришёл на работу. А костюм у меня белый. А вес — 120 кг без малого. И весь день меня окружали люди, тихонько напевающие: «Ледяной горою айсберг из тумана вырастает…»
Будучи студентом, подрабатываю в сервисном центре. Работа несложная: винду перебить, проги поставить. Иногда случается в различных фирмах прокладывать сетки витой пары, случается полазить по чердакам с оптикой в зубах.
Концентратор нашего офиса — центр всея сети из 5–6 организаций вокруг. Им от нас — интернет, нам от них — деньги. Пару месяцев назад пришлось подключать нового абонента — коммунальное предприятие, кадровым составом напоминающее закрытый клуб для женщин от 45. Им стало тягостно выносить тариф своего провайдера, а у нас дешевле и ближе (мозг кушать они любят и, что немаловажно, умеют).
Для начала я был послан к ним на разведку: где стоят машины, где концентратор и так далее. Как и ожидалось, слово «концентратор» впервые прозвучало в этом помещении (однако каждая тётка ткнула пальцем в висящую на стенке АТС, свято веруя, что витая пара — всё равно что телефонный кабель, в ПК можно спокойно ткнуть его, и всё будет работать), так что пришлось искать его самому, внимательно исследуя каждую витую пару, идущую вдоль стен и кое-где показывавшуюся из многочисленных кусков коробов (видимо, на цельный короб денег зажали). Всё казалось просто.
После исследования всех линий, которые иногда выглядывали из-под кусков проводов, я вроде бы как нашёл цель поиска — она должна была находиться в тумбочке, мирно стоящей у стенки. Триумфально подойдя к ней и заглянув за неё, я был поражён: куча проводов из компьютеров тупо уходили в стену…
Ещё по разу опросив каждую тётку на предмет «коробочки, в которую втыкаются все сетевые провода из компьютеров», я наконец нашёл концентратор — он был спрятан в неприметную коробочку из-под бумаги в самом углу помещения, аккурат в том месте, где из стены выходили провода.
Это было одно из первых собеседований, когда я последний раз искал работу. До этого работа, как это бывает, сама меня находила, но не радовала, хотелось задач посложнее да поинтереснее.
Первые вопросы мне задавала симпатичная девочка-эйчар, и я старательно показывал, что кипы видео «как вести себя на собеседовании» и груды статей на ту же тему просмотрел не зря. Но минут через несколько пришёл действующий админ, остановил девочку словами: «Это всё шелуха, это нас не интересует», — и вытащил небольшой такой опросник пунктов на сорок.
За полчаса он знал всё о моих реальных знаниях, хотя, мне кажется, общее представление составил минут за пять, не более. Девочка-эйчар смотрела на него глазами влюблённого кролика, я (как я теперь осознаю) — завистливо-озлобленного «специалиста», внезапно осознавшего, что он не знает ничего.
Не знаю, что сподвигло его на дальнейшую трату времени на меня. За эти полчаса он сам ответил на изрядную часть вопросов и объяснил, где я заблуждаюсь. Это получасовое собеседование было более информативным, чем годы универа и пять лет работы-где-попало-лишь-бы-не-сдохнуть. Причём всё это было замаскировано под беседу с кандидатом. Разумеется, это собеседование я завалил, но на следующих мне было куда как проще.
С того собеседования прошло больше двух лет, а я, разиня, только сейчас и додумался, как поблагодарить. Спасибо тебе, коллега! Если где всё же столкнёмся — с меня пиво.
Здесь люди удивляются, что бабуля посчитали камеру наблюдения за старый перевёрнутый телефон. Такие случаи не единичны. Мне удалось припомнить небольшой список таких вот технических казусов.
Классический пример: монитор называют компьютером, в клинических случаях — телевизором. Это «правило» очень хорошо работает, когда монитор — старый CRT.
Взаимоисключающее с предыдущим «правило»: начинают искать системный блок у iMac. Удивляются, когда не находят.
Дискета — футляр для диска. Классика!
Не могут отличить графический планшет от планшета, который Tablet PC. На полном серьёзе спрашивают, «как эта штука включается».
Smart TV. Очень странно, что люди даже понятия не имеют, что их телевизор можно подключить к интернету. Всегда интересно, каким местом они читали инструкцию.
Наоборот: «Поставь мне интернет на мой старенький CRT-телевизор Sony». Обычно решается вопросом: «Зачем?!», в особо клинических случаях — покупкой приставки.
Засунуть в COM-порт монитор (это ж какую силу иметь надо!). Нет, а что, разъёмы-то похожие!
Роутеры — отдельная тема. Вы когда-нибудь видели человека, которому пришлось объяснять (точнее, вдалбливать), что роутер — это не dial up, и что телефон будет работать, так как подключение через Ethernet. И что роутер не может работать без Ethernet. И что за него тоже надо платить. Я, к сожалению, видел…
Сколько раз можно объяснять, что приставка для ТВ — это не всегда игровая приставка?
Всё ещё есть телефоны, формат приложений для которых —
SIS
или же
CAB
, и на них нет новомодного Google Play или App Store. Но некоторые личности просят поставить Google Play на свой iPAQ или что-нибудь подобное.
Куртки из синтетики — это выгодно, тепло и иногда даже красиво. Ноутбуки с металлическим корпусом — это стильно, надёжно и чаще всего красиво…
…но, как выяснилось, не очень совместимо. Лёгкая искра на пальце — и ноутбук тухнет. На осознание случившегося потребовалась минута, затем час был потрачен на пересказ словаря непечатных выражений. Во сколько обойдётся ремонт, представить страшно. А ведь достаточно было коснуться батареи после снятия злосчастной куртки…
Тут один человек предлагал «выбирать технологии», дабы освободиться от быдлокода. Я тут валяюсь под столом и пытаюсь сквозь смех написать…
Так уж повелось, что программист на порядок чаще читает код, нежели пишет, причём, скорее всего, код этот чужой. Весьма вероятно, его писали где-нибудь в середине мезозоя, и последний тираннозавр, который в нём соображал, погиб от злосчастного астероида. Да и стандарты кодирования тогда были другие, если были вообще. К примеру, писать комменты на перфокартах — зто замедлять загрузку почём зря, это плохо. Логично?
И тут приходит такой из себя хомо сапиенс и говорит, что для данной задачи нужен другой инструмент и/или фреймворк. Да кто бы тебя спрашивал! Даже если и прав, код уже написан. Когда софт писали, не было этих фреймворков. К тому же фреймворк определяется другими факторами. Язык программирования и тип задачи практически однозначно укажут на фреймворк. C# для GUI-приложения автоматически даёт Windows Forms, Delphi даёт VCL — и выбирать не приходится.
Таки да, есть много умных книг, как писать программы, даже как их рефакторить. Есть куча людей, которые посоветуют тебе, какие инструменты выбрать под новую задачу. Но, блин, кто-нибудь, напишите, пожалуйста, книгу, что делать с уже написанным кодом! Код уже есть, писать его не надо, проехали, но объясните, как теперь с ним жить!
Сижу вот. Восемь миллионов строк. Поддерживать нереально: слишком много. Разобраться нереально: решаемые кодом задачи заумные. Рефакторить нереально: надо разбираться в сути вопроса, чтоб рефакторить. Заново переписать восемь лямов тоже нереально: займёт те же лет двадцать. Выкинуть код нереально: доход от продаж с этого продукта выражается семью нулями зелени. Ну и?.. Any ideas, как говорят на том берегу атлантической лужи?
Фух, отпустило. Проржался. C грустным видом вылезаю из-под стола, чтобы тупить в очередной кусок кода…
Как-то наш офис решил переехать. И время было выбрано, конечно, самое удобное — 28 декабря! Ну, делать нечего, будем переезжать. Так как всё это делалось в целях экономии, по максимуму забирали старьё. Вот я схватил кучу всего плюс две бэушных патч-панели, которые смог освободить. Одна панель была с маркировкой, вторая без, поэтому для примера я оставил на одном порту необрезанные провода и сделал фотографию.
Ах да, важное примечание: в офисе этом я работаю всего год, поэтому в разводке сетей (которые были протянуты лет десять назад) участия не принимал.
Вот я всё смонтировал, забил кабели и приступил к проверке. Хотя в монтажном деле ошибок у меня уже давно не было, я проверяю каждый порт. И вот она, ошибка: кабель звонится неправильно. Я достаю телефон, смотрю на фотку патч-панели до обрезания — всё правильно. Разбираю розетку — всё правильно. Кабель от розетки до панели звонится нормально, проблема в самой панели. Чудеса… Хотя чудес-то не бывает.
Ладно, думаю, патч-панель старая, может, дорожка на плате отошла или ещё что. Проверяю дальше. Один порт нормальный, следующий — опять проблемный. Да что такое?! Тестер остался в старом офисе, у меня с собой только прозвонка. Проверяю дальше — через один нерабочие порты. Так вот где собака порылась! На обратной стороне патч-панели порты разведены на два ряда: чётные и нечётные. Верхние не работают, нижние в порядке. Пробую подключить один нерабочий порт по схеме. Запахало! Да чтоб меня! Достаю фотку — нет, и верхние, и нижние были подключены одинаково, то есть провода и сверху, и снизу в одинаковой последовательности по цветам. Но чтобы всё работало на верхней панели, нужно поменять оранжевую и зелёную пары. Сижу и думаю: а как оно раньше работало-то?..
Вопрос разрешился, когда я начал подключать технику старыми патч-кордами. После мата на высшие силы обнаружилось, что часть кабелей была обжата по стандартам A и B на разных концах. Так прежний админ вышел из ситуации, чтобы не переделывать патч-панель.
Cтавь под сомнение работу других, ибо лени человеческой нет предела.
А Балда приговаривал с укоризной:
«Не гонялся бы ты, поп, за дешевизной!»
Приехал я в одно из подразделений за 60 км обновлять парк техники, предварительно подготовив всё ПО на компьютерах. Подключил начальнику новый компьютер, новый широкоформатный монитор, новые клавиатуру с мышью. Ввожу доменный пароль — «Неправильный пароль или имя пользователя». Что такое?! С пятого раза пароль принял. Вышел из системы, снова пытаюсь войти — снова «Неправильный пароль». С десятого раза вошёл. Перезагрузился, ввожу пароль локального админа — снова не принимает. Раз пятнадцать пробую — не принимает. Отключаю комп, подключаю начальнику обратно старый тормозящий системник, везу новый «домой» на диагностику.
Подключаю клавиатуру, мышь, цепляю монитор. Загрузка, Ctrl+Alt+Del, пароль, приветствие. Что за чертовщина? Гоняю в хвост и в гриву. Заходит в систему с каждым вводом пароля без запинки и с локальными, и с доменными учётными записями. Много думал, пришёл к странной мысли: виновата новая USB-клавиатура, которая осталась подключённой к старому системнику и прекрасно там работает. У себя ведь я подключил клавиатуру PS/2, а значит, всё дело в ней, но до последнего всё же сомневаюсь.
Еду снова туда же по другим делам, заодно и системник установить. Уже ожидая, что именно произойдёт, подключаю, ввожу логин-пароль… Так и есть: «Неправильный пароль»! Для приличия пытаюсь ещё пару раз. Беру старую PS/2-клавиатуру, ввожу те же логин и пароль — через пару секунд вижу рабочий стол.
Вывод следующий: решили топ-менеджеры отказаться от компьютеров от Харитона Петровича да сэкономить на самопальных сборках местных кулибинских фирм, получили расходы на ремонты да на транспорт, людей не послушали («Шта они понимают?»). Читали бы лучше сказки Пушкина — там всё до нас было написано.
После трёх лет работы мальчиком по выезду в аутсорсной фирме я сказал себе: «Хватит! Не могу больше ездить по всему своему необъятному городу и месить рваными кедами столичную грязь! Надоело быть полуголодным, как студент!» — и пошёл искать работу. Сколько я фирм и контор повидал в процессе собеседований: прогрессивные с новеньким оборудованием, маленькие фирмы с перегретыми, замшелыми пылью серваками. Видел толстых админов, схвативших диабет на почве пива, фастфуда и газировки, а также энергичных ужаленных в мягкое место молодых людей, которые маленьким ураганом носятся по зданию. Софт везде используется тоже самый разный, от линуксоподобного до каких-то неизвестных мне штучных экземпляров.
На одном из собеседований я познакомился с коллегой по несчастью (Димон, если это читаешь — с меня пиво!). Ожидая сперва девушку-кадровика, а потом Самого Главного Админа, мы разговорились, начали меряться письками, кто больше умеет и знает. Оказалось, что поровну: когда один из нас начинал описывать проблему, второй неизбежно выдавал решение. При этом оба восхищались, как аккуратно в помещениях смонтирована сеть, видеонаблюдение, как незаметно висят коммутационные шкафы. Сотрудники фирмы спокойные, улыбчивые — видимо, никого не нервировала их техника.
Собеседовать нас пришла целая делегация: кадровик, кто-то из начальства и сам Админ, который выплыл, благоухая парфюмом, гладко выбритый, в строгом деловом костюме. Типаж такой мучительно знакомый… «Джеймс Бонд, мать его!» — пронеслось у нас в головах.
Рассматривать под микроскопом нас не стали, а погнали сразу по всем закоулкам фирмы, причём обоих, чтоб лишний раз не повторять. Каверзные вопросы сыпались со всех сторон, мы отбивались как могли. В процессе я видел сервера, крутящие в своём нутре БД в опенсорсной среде, виндовые рабочие компы с проплаченными лицензиями на всё платное. В конце нас усадили перед большой сетевой бандурой от «Сиськи», которая выполняла роль шлюза, сетевого экрана и бог знает чего ещё. Нужно было выяснить, почему железка не пускала некоторые важные программы на внешние сервера. Я этот агрегат видел впервые, мой коллега тоже. Однако набросились мы на проблему с увлечением. С красными от напряжения рожами мы закончили, и нас отправили по домам ждать решения.
На следующий день мне сообщили без объяснения причин (ну как же без этого?), что я был забракован. Мой коллега, как это ни странно — тоже, однако он таки выяснил, в чём тут дело. Оказалось, что на последнем этапе собеседования мы так увлеклись железкой, что перестали обращать внимания на своё поведение. Отборный мат вполголоса, который витал вокруг нас, заставил девушку-кадровика покраснеть и ретироваться. Главный Админ тоже признался, что уши в трубочку сворачивались, а руки чесались надавать по шеям таким «специалистам», которые позволяют себе высказывания: «А это что за х#$ня?.. А как этот бред работает?.. Ух ты, е&@ть, работает!.. Оба-на, кнопочка!» Глаза и руки наши делали, а вот рот жил своей жизнью и выдавал перлы, которые даже мозг не фиксировал. При этом мы умудрялись звонить в техподдержку и меняли свой лексикон на вежливый и спокойный. Админ выдал свой вердикт: «Неумёхи и раздолбаи», директор решил, что такие сотрудники не вписываются в корпоративную обстановку.
Мы эникеи, то есть разнорабочие в мире IT. Нам даёшь проблему — и мы её решаем. Неважно, на чём крутится проблемный софт, на какой ОС. Если использовать аналогию с топорами, то мы сперва получаем в руки топор, крутим его в руках, пытаясь понять, какой из его элементов необходим для выполнения основной функции (ага, это — рукоятка, за неё держать надо; это — лезвие, им рубят; это — обух, он нужен для утяжеления и для второстепенных задач). Мы учимся в процессе, выясняя, что лобзиком можно подпилить дерево, но это долго и неэффективно, топор рулит. А вот рубить топором деревянную планку опасно потерей самой планки — в щепки разлетится, тут уже надо брать инструмент потоньше. Какой? Гугл в помощь, главное — не обращать внимание на умников, которые рассусоливают на несколько страниц форума, как им удобно держать маленькую ручку лобзика, а не толстый дрын топора.
Есть обученный специалист, которому не надо крутить в руках топор. Каждый новый инструмент со всеми свистелками он уже умеет брать в руки, делать правильный замах и валить дерево с двух ударов. У него в сарае есть целый шкаф, где лежат топоры, лобзики, рубанки. Он не будет брать рубанок и строгать им дерево. Он за это знание заплатил деньгами и за это получает ещё большие деньги. Есть мастера, у которых лежит большой деревянный ящик с набором блестящих деталей. Если стандартный инструмент не выполнит какую-то задачу, то можно из набора собрать инструмент нужный, а человек, знающий, что ему нужно, сделает это без напряга.