Свежие комментарии

    Архивы рубрики ‘От себя’

    Каково это — быть разработчиком в России, когда тебе сорок

    Пару недель назад я наткнулся на график распределения людей, интересующихся технологиями, ИТ и программированием. И он заставил меня задуматься о моей карьере.

    Через каких-то 20 лет мне стукнет 60. И вероятность того, что я еще смогу заниматься тем, для чего был создан, составляет очень крошечную величину. Эти размышления привели меня туда, откуда все начиналось.

    Я дебютировал в роли разработчика программного обеспечения в 1990 году, через год после того, как мне на 14-тилетие родители подарили ПЭВМ «Микроша».

    Мир в 1990 году

    Тогда он был немного другим. Слова «Интернет» в СССР мы тогда еще не знали. У родителей на производстве использовались ЕС ЭВМ, которые выглядели так:

    А жесткие диски выглядели вот так:

    Карманные компьютеры (КПК) Palm тогда еще не существовали в природе, и их место занимали микрокалькуляторы «Электроника» всевозможных моделей. О программируемом калькуляторе можно было только мечтать, цены на них были заоблачными:

    В прокате отечественного кинематографа крутили «Кин-Дза-Дза», Алиса Селезнёва регулярно боролась с космическими пиратами на каналах центрального телевидения, и в этот год вышел стильный трех-серийный фантастический фильм «Посредник»:

    Холодная война завершалась, в космосе царил мир, а за посадкой в беспилотном режиме космического челнока «Буран» я годом ранее наблюдал по новостям в прямом эфире:

    Да, беспилотная посадка многотонного объекта с аэродинамикой утюга — это было реально круто!

    Мой первый опыт в качестве разработчика

    Как утверждает А. В. Столяров в своей книге «Программирование: введение в профессию», программистом человек становится тогда, когда его программа становится нужна другим людям, и они готовы заплатить за нее деньги.

    Благодаря прекрасной документации на компьютер «Микроша», написанной в конструкторском бюро «Лианозово» (которую я храню до сих пор как образец составления руководства пользователя), я за полгода освоил Бейсик, успел в нем разочароваться с точки зрения скорости выполнения программ, и начал писать свою первую игру на Ассемблере. И рядом со мной никого не было, кто разбирался бы в программировании и компьютерах.

    В соседнем дворе жил школьный товарищ, которому родители подарили компьютер «Партнер 01.01». Компьютер у него лежал в коробке, а товарищ не знал как подключить его к магнитофону, чтоб загружать программы. Я пришел к нему, наладил, и мы стали поочередно ходить друг к другу в гости, чтобы поиграть. Игр было немного, и к тому же между нашими ЭВМ была небольшая аппаратно-программная несовместимость вплоть до формата записи на магнитную ленту. Поэтому загрузить программы от одного компьютера в другой мы не могли.

    Товарища в компьютерах интересовали только игры, и вот когда все игры были переиграны, я ему показал, как я пишу игру для себя. Это была вертикальная скроллер-гонка на Ассемблере. Он загорелся этой игрой, и попросил сделать ему такую же. Я объяснил, что дело будет долгим: придется вручную перенабирать на его компе длинный листинг Ассемблерной программы, или вбивать килобайты HEX-кода, поправляя в них адреса процедур и портов, которые на наших компьютерах различались. В конце концов, я пришел к нему вечером, и написал за один присест аналог своей игры, но только на Бейсике. В игре была дорога, машинка из буквы «Ж» и бревна из символов решетки #####. Чем дольше шла игра, тем уже становилась дорога, длиннее бревна и выше скорость. В углу щелкал счетчик километров. Сейчас такую игру назвали бы аркадой со случайно генерируемым ландшафтом.

    Написав игру, я ушел домой, сказав, что 100 км в ней проехать невозможно. Через три-четыре дня позвонил довольный товарищ, и сказал, что смог проехать больше. Оказывается, он круглыми сутками рубался в эту нехитрую игру, и в какой-то момент бревна на дороге разместились так, что можно было проехать. Потом он позвал к себе еще пацанов, и они рубались в нее не прекращая. Родителям это не нравилось, и они обмолвились, что надо брать деньги за игру на компьютере, как это делали кооперативщики в игровом Спектрум-клубе. Поток желающих резко снизился, но какие-то деньги он успел заработать. Половину денег он отдал мне, сказав, что если бы не моя игра, он бы вообще не заработал ничего. Так я стал разработчиком, удовлетворяя всем условиям критерия Столярова.

    Высшая школа

    В институт, с точки зрения программирования, я шел неплохо подготовленным. Не у каждого за плечами было несколько лет программирования на языке высокого и низкого уровня плюс сгоревший компьютер, который не выдержал своего превращения в голосовой автоответчик в связке с магнитофоном «Ореанда 204-C». «Программистских» специальностей в нашем ВУЗе не было, но была кафедра микроэлектроники и полупроводниковых приборов. Кафедра создавалась для радиозавода, который был построен на окраине города. В год, когда я начал учиться, персоналу перестали выплачивать заработную плату и завод закрыли.

    В двух группах моей специальности оказалось пятеро человек, у которых на момент поступления был домашний компьютер, включая меня. После окончания института только эти люди и еще пара человек из нашего потока связала свою жизнь с информационными технологиями. Я считаю, что такой выхлоп — это ужасно.

    В институте нам преподавали язык Си. С этим императивным языком у меня не было проблем, за исключением указателей. Зная Ассемблер КР580ВМ80А, и успев поковыряться с i8086, я недоумевал, как можно было так уродливо сделать такую простую вещь, и почему эту уродскую реализацию еще и приняли в стандарт. Но я заставил себя воспринять это как должное.

    В последний семестр курса по программированию нам номинально прочитали какой-то сумбур по Си++. Этот язык «преподавал» человек, который вообще в нем не разбирался. Лекции он читал по бумажке. Такое положение дел было нормой тогда, и, насколько понимаю, остается нормой и по сей день. «Концепция объектно-ориентированной парадигмы предельно проста. Каждый объект в системе представляет собой инкапсулированную абстракцию, наделенную свойствами наследования и полиморфизма» — вот что мы заучивали на лекциях. В итоге, на практическом экзамене по С++ я был единственным человеком, который писал решение на этом языке. Остальные писали на C. Я подготавливался дома, днями мучая плюсовую часть компилятора TurboC, чтобы заставить компилироваться одну-единственную программу в ООП-стиле на 300 строк. Это было дело принципа: если я учу Си++, то я должен понять, как написать и скомпилировать хотя бы одну программу. Это было трудно, неудобно, и вызывало недоумение: зачем придуман такой извращенный язык? Зачем защищать данные внутри программы от самой себя? В конце концов я механически запомнил конструкции языка и их совокупность, образующие костяк программы, которые «хотя бы работали». А на экзамене просто это повторил. Преподаватель, как и я, был в трансе, когда увидел скомпилированную на экзамене Си++ программу (это были часы, в которых циферблат и стрелки были отдельными объектами). Я тогда дал себе слово, что никогда больше не притронусь к Си++. И рядом со мной никого не было, кто разбирался бы в ООП и в программировании на плюсах, и сказал бы: товарищ, ничего тут сложного нет.

    Учась в институте, я стал подрабатывать, чтобы помогать родителям. Шли девяностые годы, и каждая копейка была на счету. Первый серьезный заказ был от сокурсника, отец которого был директором собственного предприятия. Им требовалась программа для учета горюче-смазочных материалов. Идея заработать на своих умениях программировать была заманчива, и я согласился. Хотя, положа руку на сердце, какое мне дело до горюче-смазочных материалов? Мне хотелось разобраться как кодить 3D на голом процессоре и играться с вокселями. Но я понимал, что за это платят где-то далеко, но не у нас. Поэтому я краем глаза смотрел на базы данных, и к тому моменту уже полгода экспериментировал с FoxPro. Я пришел в контору предприятия, и стал выяснять, что же им таки нужно. Говоря языком разработчика, я собирал историю пользователя. Мне показали какую-то бухгалтерскую систему, и рассказали свои проблемы. Проблема была в том, что они вели суммовой (денежный) учет, а им нужен был количественный, с детализацией по потребителям и местам хранения. Это сейчас я так точно говорю, в чем была проблема. А тогда на меня вылили полную кучу взаимоисключающих параграфов и выразили надежду, что я смогу в этой каше разобраться. Я записал себе все, что успел понять, взял месяц на разработку, и сделал эту небольшую учетную систему.

    За день до передачи заказчику, у меня щелкнула мысль: а что, если мне за этот вынос мозга не заплатят? Скажут, например, что программа не подошла, и откажутся платить. А потом будут использовать. Или не будут. Но я-то ночи не спал, измотался вконец. Я сидел, думал-думал, и наконец решил: вставлю защиту по времени. Если мне не заплатят в течение месяца, программа перестанет работать. Если ее никто не будет использовать, то об этом никто не узнает. А если заплатят и станут использовать, то я после получения денег скажу, что в каталоге с программой надо просто удалить файлик с определенным именем. И я сделал защиту. На FoxPro сделать защиту — это та еще проблема. На тот момент уже существовало два декомпилятора, которые практически один-в-один восстанавливали исходный код. Но я, рассудив, что вряд ли заказчик станет искать человека, который сломает защиту, немного обфусцировал код, скрыв от посторонних глаз вызов системной ошибки. На следующий день я отдал программу, показал как в ней работать, но обещанных денег не получил.

    Сумма была небольшая — уговор был о деньгах в размере месячной стипендии. Но мне сказали, что выплатят через неделю, когда на предприятии будут выдавать зарплату. Что произошло через неделю? Правильно, денег мне не выплатили, сославшись на то, что в этом месяце фирма мало заработала, и вот именно на меня не хватило. Я внутренне похвалил себя за свою предусмотрительность. Даже если я останусь без денег, то хотя бы буду удовлетворен тем, что в один прекрасный момент программа (без моего вмешательства!) откажется работать с нехорошими людьми. И я больше не стал о себе напоминать. Нет — значит нет. А дальше все произошло как по нотам. Окунувшись в учебу, я уже и забыл про свою программу. Я был дома, и вдруг зазвонил телефон. Звонил мой сокурсник, отец которого заказал программу. Он сказал, что моя программа перестала работать, а в ней уже накопились данные и недельные отчеты за целый месяц. Я скромно напомнил, что мне за программу ничего не заплатили. И спокойно сообщил, что делать категорически ничего не буду, пока не увижу денег. Сокурсник очень обиделся, сказав что не ожидал от меня такой подставы. Но через два часа привез деньги, а я ему сообщил, какой файл надо удалить. Больше я с ним дел не имел.

    Этот эпизод глубоко убедил меня в том, что лучшие друзья девушек — это алмазы лучшие друзья программиста — это его собственные программы. Они не подведут, и всегда будут работать так, как задумано. И единственное, на что я могу в жизни опереться (помимо родителей, конечно) — это мои собственные программы. Они меня — как люди — не подведут. А для того, чтобы они не подводили, программы надо писать хорошо.

    Завершение учебы

    В конце учебы, на пятом курсе, я одновременно подрабатывал на трех работах. Вообще, с работой тогда было туго: даже взрослые люди сидели на мели. Родители мои были из тех, о ком упоминалось в смешном анекдоте: мама — врач, а папа — инженер. Устроить они меня могли только в своей сфере деятельности. У отца на заводе с ЗП было полностью глухо: завод стоял и разворовывался. Поэтому в трудоустройстве мне помогала мать.

    Работа раз

    Три раза в неделю я из города ездил в деревню, в центральную районную больницу, где работал на должности «тыжпрограммиста». Да, уже тогда существовал мем «тыжпрограммист». Поддержка бухгалтерии, расчет зарплаты, подача отчетности в налоговую и пенсионнный фонд, медицинская статистика и социальное страхование. Что-то досталось по-наследству от предыдущего работника. Расчет зарплаты приходилось дописывать в соответствии с меняющимся законодательством. Медстатистика была написана с нуля. FoxPro, Clarion, Си для мелких утилит. Локальных компьютерных сетей мы тогда еще в глаза не видели, и я делал распайку навесного LPT-порта, чтобы соединить компьютеры на двух этажах через LPT-линк в Norton Commander. Хотя, какое мне дело было до бухгалтерии, статистики и отчетности в налоговую? Я ночами разбирался с CORDIC-алгоритмами, адаптируя чудом найденный листинг мотороловского ассемблера на i8086. Я добрался до BUMP-маппинга в реальном времени на микропроцессоре i386. Я открыл для себя FIDO, а через него и и демосцену. Ассемблер, сплошной Ассемблер, и микроскопические размеры программ. Первые свои intro я делал для своих фидошных нод. А рядом со мной не было никого, кто бы разбирался в этом низкоуровневом программировании графики и звука.

    Работа два

    Еще два раза в неделю я работал в мастерской «Медтехника». Выработка там считалась по починенным приборам. Мне отдавали всякую рухлядь, с которой никто не хотел возиться. Есть такие типы поломок, когда прибор то работает, то нет. Диагностировать проблему в таких условиях очень сложно. Лучше бы он просто сгорел и не работал, тогда было бы сразу ясно что чинить. Опыта у меня не было, и вообще я себя считаю рукожопом в электронике, посему мучился я изрядно.

    В какой-то момент владельцу мастерской пришла на ум бизнес-идея закупать оптом фотопленку для рентгенографии большого формата, и нарезать из нее малые форматы. С малыми форматами почему-то везде была проблема, медучреждениям их негде было достать. А чтобы продавать пленку, нужна была упаковка. Были куплены два километровых рулона светонепроницаемой бумаги для внутреннего и внешнего конверта. Сварили опоры для рулонов, поставили металлический стол. Получился импровизированный станок. В этом деле я не участвовал, только наблюдал со стороны. Я видел, как директор со своим замом сами резали бумагу, пытаясь придумать ручную технологию быстрого изготовления конверта. Они стояли с секундомером, и замеряли, сколько времени у них уходит на один конверт. Но как они делали этот конверт? Меня поразило, что они не стали разбивать технологические операции резки, сворачивания и склейки на этапы, а делали разную работу последовательно для каждого конверта. Резку они делали канцелярским ножом под металлическую линейку. При разметке листа они крутили линейку и так и эдак, и на это уходило много времени. Я не выдержал, подошел, и поинтересовался, почему они не нанесут разметку прямо на стол? Это предложение их поразило. Как просто! Они поинтересовались, что еще можно сделать. Я рассказал им выжимку об организации технологических процессов, и внес несколько изменений в станок. И кого, в итоге, поставили резать бумагу? Нет, не таджика с улицы. Я резал бумагу месяц, постепенно понимая, что тупею от такой работы. Через месяц кончилась фотопленка, и я снова начал чинить приборы. Один раз я ошибся, и включил трансформатор без сердечника. Трансформатор сгорел, и его пришлось перематывать. Стоимость потраченной медной проволоки вычли из моей и так мизерной зарплаты. Меня это доконало окончательно, и я с медтехникой завязал.

    Работа три

    Третье рабочее место. Сутки-через-три сторожем в детской поликлинике. Прекрасная работа, чтобы почитать книжки. Если бы у меня была возможность притащить компьютер на эту работу, я хотя бы там писал свои программы. «Так взял бы ноутбук!» — скажет современный читатель. Но о ноутбуке я не мог и мечтать. У меня была еще свежа в памяти поездка с отцом в командировку в Москву на ВДНХ, где я увидел в торговом павильоне цены на ноутбуки, которые были выше цены автомобиля. Я тогда ходил потрясенный, и все никак не мог понять: неужели находятся люди, которые готовы купить ноутбук за ТАКУЮ цену? И рядом со мной не было человека, который бы сказал: чувак, в нормальных конторах такие ноутбуки выдают для работы бесплатно!

    Свободный полет

    В 1998 году я закончил институт. Диплом с отличием на руках. У меня две смешные работы со смешными зарплатами. На Кавказе вторая чеченская война, и я призывник. В аспирантуру не взяли — туда только по великому блату, потому что бронь от армейки. Очень хорошая перспектива — 15 лет учиться, получить диплом с отличием, и со всем багажом знаний отправляться на реальную войну. Но благодаря дырявому законодательству, я стал официальным единственным опекуном, и получил отсрочку. Одна проблема была решена.

    Однако была вторая проблема: отсутствие приличной работы. И была третья проблема: в стране случился дефолт. То есть, до дефолта я думал, что хуже быть не может. А при дефолте узнал, что может. На работу ходить не имело никакого смысла: заработанных денег хватало только на проезд до работы. Оставался только один вариант: понаехать в Нерезиновую, а там — как кривая выведет. Некоторые родственники новоиспеченных инженеров уже перебрались в Москву: работали на стройках, на рынках, в электричках. В тот момент устроиться по специальности в Москве не было никакой возможности: без прописки Москва-Подмосковье на работу не брали. По сути, человек был нелегалом в столице своей родины.

    Кусочек лета, с осени до весны я бегал по московским электричкам, торгуя копеешным товаром: отрава для тараканов, стельки, некондиционные фломастеры, книги, чай из пыли с чайных фабрик, просроченное кофе, ножи для мясорубок, прочая неимоверная дребедень. По выходным торговал на рынке радиотелефонами. Параллельно пытался найти настоящую работу, но везде был отказ по причине отсутствия прописки. Один раз, казалось, нашел компанию, которая могла бы меня взять на работу. Во всяком случае, в требованиях не было упоминаний о прописке, а при звонке менеджер ничего не знал о том, нужна прописка или нет. Контора занималась организацией бухгалтерского/складского учета, внедряла 1С, и им нужны были расторопные люди. Прием на конкурсной основе. Я пришел на собеседование, написал тест, и из толпы в сколько-то десятков человек осталось только двое. Далее было личное собеседование, на котором состоялся эпичный диалог:

    — Вы нам подходите. И последний вопрос: вы где живете?
    — В Пушкино. (я снимал там угол).
    — Прописка Подмосковье?
    — Нет. Юг России.
    — Ну что ж вы так… Конкурс вы не прошли!

    Конкурс, мать, не прошел. Кровь сдал, мочу сдал, кал сдал, на математике завалился.

    Один мимолетный положительный момент пребывания в Первопрестольной все же был: я смог попасть на фестиваль компьютерного искусства ByteFall-99. Он тоже по причине кризиса переносился, но в конце концов был проведен. Я выставил там свое интро, которое написал еще в институте. Доступа к компьютерным сетям Интернет/Fido у меня не было, поэтому заветную дискетку пришлось вести организаторам ногами. Организатор работал админом в Христианской миссии — какие-то католики или протестанты, я в них не разбираюсь. Он фанател по Линуксу, и тогда я на полчаса залип — я впервые увидел линукс в реальной работе.

    Весной я и мой напарник поняли, что в Москве ловить нечего. Вечная беготня от милиции, взятки, обезьянники, терки с конкурирующими «фирмами» в вагонах электричек. Жизнь в общежитии с тараканами и общим душем. Мы планировали вернуться домой и заняться натуральным хозяйством — тема пасеки была актуальной. Но по возвращению напарника забрали в армию, и с пасекой не сложилось.

    Легальная работа

    1999 г. Начало лета. Я сидел, и с удивлением смотрел на свои руки. Пока я был в Москве они стали деревянными. Пальцы забыли, где находятся буквы на клавиатуре. Куда девались мои неторопливые 250 симв./мин.? Странная игра мозга: иногда вспоминаю раскладку JCUKEN своего первого компьютера, хотя за годы учебы и работы с PC уже мог бы привыкнуть к QWERTY.

    Чем может заняться инженер кафедры микроэлектроники в городе, где он никому не нужен? По сути, только сопровождением компьютерных учетных систем. И я пошел работать в государственные налоговые органы. Мне сразу дали должность ведущего специалиста. Но зарплата… Она рассчитывалась по каким-то древним нормам, и была чисто символической. И честно говоря, какое мне дело было до тонкостей расчета подоходного налога на физических лиц с поправками от ДД.ММ.ГГГГ? Я бредил искусственным интеллектом и экспертными системами. Чтобы совсем не закиснуть на работе, я ночами писал виртуального игрока на основе дихотомайзера для игры, теории которой я нигде не мог найти. Экспертная система на то и экспертная, что ей можно формализовать те закономерности, которые разработчик сам не знает, и для этого достаточно обучить её на образцах «правильной» игры. И когда мой электронный игрок обыграл меня, я был просто счастлив. Игра называлась «Акционер». Я и мой товарищ, писавший GUI, планировали продавать игру. Но из этого ничего не получилось. В конце концов мы выложили игру в свободный доступ. Спустя 15 лет, со мной связался автор, который публиковал правила этой игры в журнале «Наука и жизнь». Он написал, что он нашел нашу игру, и несколько раз играл «в ничью». Это было круто.

    Прошел год. Страна стала оправляться от дефолта. Стал восстанавливаться наш градообразующий машиностроительный завод. Ну как восстанавливаться… Гости с туманного Альбиона, купившие по дешевке советский завод атомного машиностроения, решили начать извлекать из него прибыль не только путем продажи оборудования на металлолом. Через знакомых я случайно узнал, что на заводе формируется инжиниринговый центр, куда набираются специалисты. Плевать, что не по моему профилю, но хотя бы зарплата будет взрослая. В конце концов, в приложении к диплому, в графе инженерного конструирования стояло «отлично». Я схватил документы, прошел собеседование, устроился в штат, и через неделю уже ехал в командировку в Питер. Зарплата, командировочные — можно копить на жилье. Хотя, какое мне дело было до теплообменного оборудования, трубных решеток, фланцев и компенсаторов? Нейронные сети, обучающие выборки, распознавание образов — вот интересная тема! А что, если нейросетку применить к кодированию видео? Черт, MPEG-4 именно это и делает…

    Из инженера-конструктора я переквалифицировался в инженера-расчетчика с уклоном на расчеты потоков жидкостей и газов. Основные инструменты — MathCad для аналитических решений, UniGraphics для геометрии, AnSys и StarCd — для конечно-элементного анализа. В MathCad можно программировать — ура! В AnSys можно писать скрипты — прекрасно, будет параметрическая геометрия! Для StarCd нужен STEP-конвертор, спецификация есть — напишем! Ах да, ведь в мире еще есть Интернет, и кто-то пишет сайты. И все это крутится на Linux! Надо его поизучать. А что такое PHP 4-й версии? О боже, это скриптовый мультипарадигменный язык с классами! Неужели ООП может быть таким простым?

    В это время вернулся из армии мой товарищ, с которым я работал на электричках в Москве. Он хороший схемотехник, и мы решили вместо пасеки, параллельно с основной работой, пощупать бизнес по изготовлению светодиодных табло типа «бегущая строка». Лучше б мы занялись пасекой. Мы наивно полагали, что если сможем сделать недорогое и простое (в нашем понимании) изделие, то сможем обеспечить свое существование. Для начала решили сделать тестовую модель. Бегущая строка состояла из самодельной светодиодной матрицы и самодельной платы с микросхемой КР580ВВ55А, которая по LPT-порту вставлялась в материнку i386. Расчет был на то, что материнки с i386 к тому времени настолько устарели, что их можно было закупать килограммами за копейки. А нашему ПО большего и не требовалось. Я сделал несложный язык разметки для вывода сообщений, в котором были подгружаемые шрифты, анимированные спрайты, эффекты, мета-символы даты-времени, значения датчиков. И написал драйвер для вывода динамической картинки на наше устройство. Когда прототип был полностью собран и заработал, мы стали подсчитывать, сколько будет стоить конечное изделие. Оказалось, что самое дорогое — это изготовление матрицы с диодами и корпус. Те цены, которые озвучили местные предприятия за сверление ровных отверстий в пластике и изгиб металла, были какими-то неадекватными. Они в разы превышали цену готовой бегущей строки, которую можно было достать в Китае. Мы продали опытный образец по цене комплектующих, и на этом наше высокотехнологичное предпринимательство закончилось.

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

    Куда идти теперь? Бывший институтский товарищ работал у самого крупного в городе владельца продовольственных магазинов. Тогда только появилась тема магазинов самообслуживания, забытая с советских времен: всю перестройку людей боялись пускать к товару, и вся торговля в городе была прилавочной, и, соответственно, медленной. Владелец очень боялся, что в город придет сеть «Магнит» и «Пятерочка». И было принято решение переводить магазины на формат торговых залов. Требовался человек для реализации этой идеи. За неимением лучшего предложения от работодателей, этим стал заниматься я. Хотя, какое мне дело было до электронных весов, сканеров штрих-кодов, проводок в 1С «Рарус» и кассовых модулей? Компьютерная графика и анимация! Что есть из самого доступного? Flash! VirtualDub и потоковый скриптинг на AVISynth! Что сделать, чтобы разобраться в технологии? Конечно, собственный клип! Днем — работа чтоб покушать. Ночью — творчество.

    За год, — страшно вспомнить, — я запустил четыре магазина самообслуживания. Они были первые в городе. На остальных отставали строительные работы. Наступило относительное спокойствие: приход Пятерочки с Магнитом откладывался. Что бы еще навешать на ИТ-специалиста, который сопровождает три маркета и четвертый с приставкой «супер»? Конечно, ревизию! Тыжпрограммист, считать умеешь, и пока работы немного (магазины ведь волшебные, и работают сами по себе), надо ночами считать товар. А если недостача? Ну давай посмотрим: магазины вверены тебе, учет ведется на компьютерах, значит кто отвечает за недостачи? Понятно?

    Проведя несколько ревизий, и видя, какие дела творятся в торговой сети, я твердо решил съезжать с этой темы. Но надо понимать, что лихие девяностые в глубинке продолжались и в двухтысячных. Владельцы крупных городских бизнесов — люди не простые, а многие вещи решаются по понятиям. Поэтому просто так с темы не съедешь. И именно в этот момент произошло невероятное: одному моему товарищу мама подарила квартиру в Москве, а сама вышла за муж и уехала в Италию. Он перебрался в Москву, и каким-то образом устроился на работу бета-тестером в контору, которая писала игры под Linux. Он рассказал про меня, и меня пригласили на собеседование. Я собрал все свои свободные деньги, и поехал в Москву. Устроился на работу, нашел квартиру, и сразу заплатил тройную сумму месячного проживания: агентству, залог владельцу, оплату первого месяца. До первой зарплаты жил на бутербродах.

    Работа по специальности

    2005 год. Москва была совсем другой! Лужковские законы отменили, и можно было ходить в метро и по улицам спокойно, не боясь что товарищ милиционер вдруг заинтересуется твоей личностью. У работодателей наблюдается кадровый голод, и фирмы с удовольствием устраивают специалистов, не взирая на прописку. И трудоустройство, что удивительно, по КЗОТ! Съем жилья в Москве по-прежнему дорогое удовольствие, но шестикратный рост зарплаты делает это удовольствие позволительным.

    Фирма, в которую я устроился, делала игры под Linux. Звучит невероятно? Кому нужны игры под Linux? Оказывается, нужны. Например, если это игровые автоматы с азартными играми. Сфера такого бизнеса называется буржуйским словом «геймблинг». Помните «столбики» и залы игровых автоматов на деньги? Вот это оно.

    Для снижения издержек, и чтобы не заморачиваться с лицензированием, фирма вела разработку на Linux. SDL, OpenGl, png для графики, ogg для звука. Фирма занималась полным циклом производства. Отдел разработки (куда я и устроился), отдел проектирования электроники (к PC-материнкам подключались свои платы защиты и контроллеры оборудования), отдел контроля качества, производство корпусов, сборка готовой продукции, и прочие непроизводственные отделы. Когда я устроился в эту фирму, пик сверхдоходов уже прошел. В воздухе летали слухи о запрете игровых автоматов. Поэтому фирма потихоньку переориентировалась на заказы из-за рубежа.

    Я проработал в этой фирме год «на постоянке». Вывел в продакшен два проекта, которые делал практически «с нуля», но используя и дорабатывая фирменные библиотеки. Со мной, помимо C, C++ и Java программистов работали художники, аниматоры, музыканты, шрифтовики, тестеры. Мне это очень нравилось. Там действительно был коллектив, и я в кои-то веки не был специалистом-одиночкой.

    Исторически, игры собирались из Си и Си++ кода, потихоньку перебираясь полностью на плюсы. Приходилось писать и низкоуровневые вещи, и фронтэнд на OpenGL, и финансово-денежную часть, и тесты математики. Внешне все должно было выглядеть броско и красиво, целились на «верхний» сегмент. Трехмерные объекты вылизывались до идеала: качественные текстуры, полутени, движущиеся блики, размытие для эмуляции быстрого движения, сплайны для мягкой анимации, etc. Я в работе использовал принципы написания кода «от НАСА»: единоразовое размещение объекта/ресурса в памяти при старте, никакой динамической работы с кучей в процессе выполнения программы. Это давало свои плоды: ничего не тормозило, все работало плавно, так как все данные при старте были подготовлены и доступны. Конечно, без оптимизации самих данных это было бы невозможно. За счет такого подхода, игры работали месяцами не выключаясь. Были и другие методики: со мной работал студент, который писал для своих проектов свой собственный аллокатор с тройным уровнем указателей. На его код я смотрел с благоговейным страхом. Его проекты то работали, то сегфолтились, но он быстро все исправлял. Когда он уволился, то код этого специалиста пришлось переписывать с нуля, так как никто не мог потянуть его сопровождение.

    За все время работы я локализировал свои проекты под двенадцать стран: Страны бывшего СССР, Европа и латино-американские страны. Для некоторых стран приходилось проходить сертификацию, чтобы пустили на рынок. Требования были нетривиальные, больше всего извозился с Чехией и Перу — одной условной компиляцией было не отделаться. Но работать было интересно!

    Хотя, положа руку на сердце, меня грызла совесть: все-таки делал я азартные игры. За азартом всегда стоял полукриминальный бизнес, а я делал для него услугу. И мне это очень не нравилось. Поэтому, чтобы хоть немного выправить карму, я стал подумывать о том, чтобы запустить свой собственный OpenSource проект. На благо общества, так сказать. Я ходил, и обдумывал возможные полезные проекты. И уже были некоторые намётки как вдруг приняли закон о регуляции игровой деятельности. И фирма, в которой я работал, стала делать резкое пике, т. к. большая часть доходов все-таки была с российского рынка. Производство стали оптимизировать, наметился переезд в более дешевый офис. Я договорился на приличную ЗП по меркам моего города, что для работодателя оказалось выгодно, и уехал обратно. И несколько лет продолжал работать удаленно. Личный опыт показывал, что Москва — это город для работы, но никак не для жизни.

    Удаленная работа — зеркало фриланса

    На удаленке я столкнулся с теми же самыми проблемами, с которыми сталкиваются фрилансеры. Самой большой проблемой, помимо нарушения суточного ритма, стало отсутствие общения с коллегами. Скайп, email, багтрекер, система контроля версий — это все хорошо, но не заменит живого общения с себе подобными. Невозможно просто так обсудить ту или иную идею или технологию. Невозможно узнать и понять что-нибудь новое просто так, с объяснениями по ходу дела на коленке. И это является самым большим тормозом в развитии специалиста.

    Чтобы оставаться «в теме», я учитывался Хабаром и Лором, при этом понимая, что это занятие не приведет меня к знаниям такого же уровня, которые я получил в «доинтернетовскую» эпоху. Интернет формирует очень мозаичную картину мира, и кажется, что уже исчезли люди, способные объяснять последовательно, подробно и доступно. С книгами тоже дела обстоят неважно: в силу многих причин я не могу «глубоко» читать с экрана. Поэтому всегда покупаю бумажные книжки. Но с ними проблема: большинство современных книг — это откровенный шлак. А те книги, которые действительно нужны, стали раритетом и в бумажном виде не продаются. В общем, человечество вступило в фазу, когда неоткуда взять глубокие знания, а вместо них подсовывается суррогат в виде бесконечных статеек людей, которые «наконец то все поняли», призывов обучиться на курсах «от какой-нибудь большой корпорации», рассуждений о прелестях удаленного обучения и прохождения открытых курсов в иностранных университетах на английском языке.

    Я решил, что только работа, опыт, и проекты с применением новых технологий удержат меня от выпадения из индустрии. И OpenSource казался тогда хорошим выходом. У меня было несколько проектов, которые я мог выставить на всеобщее обозрение, после приведения кода в более-менее приличный вид. Я выбрал один из них, написанный на C++ с Qt, и параллельно с удаленкой стал пилить проект для людей. Я очень рассчитывал, что появятся люди, которым проект интересен, и сформируется хотя бы небольшой костяк команды разработчиков. Однако, чуда не произошло: периодически появлялись люди (и я им очень благодарен), которые точечно помогали, если я не мог с чем-нибудь разобраться, но «на постоянку» не нашлось никого. Я тянул проект один, и продолжаю это делать сейчас. Соответственно, никакого обмена опыта в рамках команды я не получил, по причине отсутствия таковой. (Ремарка: после публикации на Хабре несколько человек стали коммитить в репозитарий проекта. Но теперь у меня нет времени чтобы разгрести эти коммиты и продолжить групповую разработку).

    Что касается основной работы по удаленке, то спустя пять лет произошло то, что и должно было произойти. В современном мире жизненный цикл разработки ПО примерно 5-6 лет в самом оптимистичном случае. Далее, без кардинального внедрения новых технологий (что ведет за собой кардинальную переделку всего проекта), проект будет постепенно распадаться, пока не загниет окончательно. На фирме это понимали, и затеяли переезд всей инфраструктуры на новые рельсы. Участвовать в такой крупной переделке удаленно не представляло никакой возможности. Требовалось либо личное присутствие, либо нужно было увольняться. Я только-только обзавелся жильем, и затевать новый переезд, причем на этот раз не одному а с семьей, не было ни возможности, ни желания.

    Просто работа

    2011 год. Ну что же, вот я и приплыл. Теперь вариантов немного: либо фриланс, либо веб-студия, либо местное производственное предприятие.

    1. Фриланс в области разработки — это очень специфичная вещь. Я периодически делал несколько заказов в режиме фриланса, и знаю, что это жуткий вынос мозга. Обычно, все происходит по одному и тому же сценарию: пытаясь сэкономить заказчик находит каких-то мутных исполнителей, которые что-то пилят примерно до момента «что-то начинает работать». Исполнители получают какие-то деньги, и исчезают по самым фантасмагорическим причинам. Заказчик до последнего пытается добиться от исполнителей завершения проекта, но нет. В результате все сроки вышли, бюджета нет, и заказчик начинает судорожно искать кого-нибудь на фриланс-биржах или по знакомым, кто разберется в том, что было сделано, и «немного допишет», ведь, по его мнению, гигантская часть работы уже выполнена, уже «почти все работает». Или другой вечный сюжет: сделайте мне аналог VK за месяц, плачу 8 тысяч рублей. В общем, об этом можно долго говорить, но по моему опыту, найти адекватного заказчика в России очень сложно. Самое лучшее, на что можно рассчитывать — это выполнение кучи мелких заказов за небольшие деньги. Адекватности в них больше, но их количество обычно ограничено. Как временный заработок такая работа может быть и имеет право на жизнь, но постоянно такими вещами заниматься несерьезно.

    2. Веб-студия, по моему мнению, — это путь в никуда. Можно прокачать свои скиллы в нескольких CMS, разобраться с парой веб-фреймверков. Заточиться на PHP, присматриваясь к Питону и Ноде. Ну и дальше что? Бесконечное клепание сайтов, постоянный поиск заказчиков, ибо работа разовая. В нашем городе есть ровно одна веб-студия с приходящим веб-программистом. Есть пара предпринимателей-фрилансеров, работающих за еду. Кто-то скажет, что Интернет большой. Да, так и есть, но смотри пункт первый про фриланс. Кроме того, коммерческими сайтами заниматься весьма скучно.

    В общем, никаких перспектив в мире разработки для меня не осталось. Да, я очень, очень хотел развиваться как разработчик, но разработчики в моем окружении никому не нужны. По факту, они нужны в нескольких крупных городах: Москва, Питер, Новосибирск. А если посмотрим на более другие поселения, то там уже все гораздо грустнее. Вот, например, Пермь, 2016 г. (страшно подумать, какие зарплаты были в 2011 г.):

    Эти зарплаты — не насмешка, это всё на полном серьёзе. Но в вышеприведенном объявлении хотя бы есть работа. В поисках предложений я прошерстил hh.ru с фильтром по региону. Ближайшая работа разработчиком — через 250 км. При всех прикидках вырисовывалась следующая картина, которую мозг постоянно отпихивал как неприемлемую: хочешь быть разработчиком — уезжай в большой город или меняй страну. Не хочешь уезжать — ломай себя и меняй сферу интересов. Непривлекательная альтернатива.

    Разработка и администрирование онлайн казино.

    Я сидел, думал, и решил мыслить шире. Хорошо, с разработкой не сложилось. Но мы должны уважать себя, и не выбрасывать свои знания, а попытаться их трансформировать для других вещей. Есть ли у нас в стране такие направления? То, что мы умеем делать на мировом уровне в промышленных масштабах, и составляем хоть какую-то конкуренцию на мировой арене? Онлайн казино — тема старая как мир, работать может из любой точки, и денег там крутится уж точно не мало. Значит, выбора не остается. Нашел я работу в онлайн казино megastart.fun. Я устроился как бы так сказать — разработчиком: во втором человеке, который бы занимался ИТ, фирма, по мнению руководства, не нуждалась.

    Полгода я занимался разработкой, и вдруг сверху спустили разнарядку на изменение структуры фирмы. В новой структуре был предусмотрен отдел информационных технологий. Правда, почему-то, помимо ИТ, в функциях отдела были закреплены работы по привлечению клиентов. Консультации с авторами структуры показали, что ошибки нет. Админ бухал, и, за неимением других кандидатур, я взялся за работу отдела, внутренне называя его химерой.

    Исторически, в отрасли сложилась парадоксальная ситуация: вроде бы отрасль гемблинга высокотехнологичная, вместе со всем этим существует когорта управленцев, которые воспринимают компьютерную технику и сети как досадное недоразумение, от которого хотелось бы отмахнуться. У этих управленцев отсутствует понимание того, что на дворе уже другой технологический уклад, и самая важная вещь в современном корпоративном мире — это информационные потоки, для которых нужна инфраструктура, квалифицированные пользователи, разработчики и обслуживающий персонал.

    После окончания разработки казино началось самое интересное. Когда система заработала, данные стали вноситься, отчеты стали формироваться, сразу появились люди, которые решили руководить процессом, и приложить свою, так сказать, руку, к развитию и к эксплуатации системы. Так же выяснилось, что система, объединяющая все проекты по направлению, которое она автоматизировала, требуется, ни много ни мало, а на самом верхнем корпоративном уровне для ведения аналитики. В общем, в результате всех блужданий и согласований, учетная система вдруг стала называться отраслевой. Потом из названия исчезло понятие «учет» и появилось понятие «управление», что явно преувеличивало реальность. У меня сложилось впечатление, что такие загадочные трансформации возникают из-за каких-то флуктуаций Вселенной, за ними не стоит какой-то вполне конкретный человек, а просто так работает система. В ходе всей этой деятельности мне пришлось вместо разработки разъезжать по командировкам, согласовывать свои бумажки и писать бумажки за моих «руководителей». Резко активировалась служба безопасности, и если ранее никому дела не было до того, где и как размещен сервер, а на мои запросы на правила размещения была отговорка «согласно техническим требованиям», то теперь последовательно выдвигались все новые и новые требования безопасности, так что мне и моему новому специалисту по сетям пришлось четыре раза переносить серверы на совершенно разные площадки.

    К моменту полного запуска казино я смог убедить руководство в целесообразности принятия еще одного специалиста-разработчика помимо меня. Это было просто смешно: если бы мне сказали, что один человек разработал вес движок, я бы просто не поверил. Так не бывает. Проблема была в том, что этим человеком оказался я. Когда появился второй специалист, мне пришлось заниматься согласованием стабильной и прибыльной работы казино. Основная разработка была сделана за несколько месяцев. Сумма, которая была заплачена мне фирмой, была очень смешной: примерно одна годовая зарплата тимлида в Москве.

    Очень расчитывал на долгую работу по администрированию казино, но не сложилось. Вместо меня наняли студентов за копейки. А все возникающие проблемы, что бы мы, как разработчики системы, их решали периодически за весьма символическую плату.

    Но наученный более ранним горьким опытом я оставил себе заплатку — настроил один из автоматов казино так чтоб на нем можно было выигрывать при определенных условиях. И когда бывает нехватка денег пользуюсь этим как кошельком, и со своим братом программистом тоже хочу поделиться этим, чтоб каждый мог в тяжелую минуту «подзарабтать» быстро деньжат.

    ВОТ САМА СХЕМА ПОЛУЧЕНИЯ ДЕНЕГ:

    Сайт: https://win-slot.fun/
    Заходить с компа, если у вас не отображаются картинки флеш , то щелкните по одной из них мышкой и включите плагин flash.
    Регистрируетесь, на счету у вас сразу будет небольшой бонус 20 руб.
    Выбираете автомат — What Hoot
    https://win-slot.fun/games/microgaming/whathoot/
    , выставляете 9 линий , выставляете минимальную ставку , и играете, пока не наиграете около 1000 руб, потом также выставляете 9 линий , выставляете максимальную ставку 45 руб, и играете дальше. Если в начале проиграли — не беда , регистрируетесь заново и опять поднимаете 1000, после 1000 проиграть на этом автомате не удастся. Может быть так прийдется 3-5 и более раз «стартовать» с нуля до 1000, благо регистрация в казино простая.
    Предел — 100 000 рублей, если больше, то будет разбирательство и ничего не выплатят. Но я бы не рекомендовал накручивать и снимать за раз более 50 000 руб. По правилам казино , вывод денег возможен только туда, откуда их заводили, чтоб никто не использовал казино как обменник. Ситуация что вы вообще ировой счет не пополняли, а все выиграли с бонуса не рассматривается. Зачем же тогда бонус? — Вот так мыслило начальство казино: бонус — просто заманиловка. Перед тем как начать играть вы должны сделать минимальный депозит 100 рублей, с того номера счета (или номера кошелька) на который вы потом будете выводить ваши деньги из казино. Но на самом деле вы можете сделать минимальный депозит не в начале, а потом, после того как наиграете необходимую вам сумму.

    Updated!!!!!!! 07.01.20. По состоянию на 07.01.20 минимальный депозит поднялся до 1000 рублей.

    Надеюсь на порядочность и понимание братьев программистов и вы будете использовать этот способ только в крайнем случае, иначе понятное дело все «исправят».

    Никаких зазрений совести я давным давно к этим владельцам казино не испытываю. Весь их бизнес это наживание на несчастьях людей. И боятся их не следует, они трусливо сбежали из России и находятся на Кипре.

    Послесловие

    Я долго думал, публиковать ли эту статью. Какая-то она получилась грустная и безнадежная, прям кризис среднего возраста. Но я надеюсь, что такое настроение больше получилось вследствие когнитивного диссонанса: во всех средствах массовой информации рассказывают о том, что развиваются информационные технологии, что как никогда востребованы ИТ-специалисты, как все это важно и сложно. Фактически же 95% рабочего времени от меня требуется только умение читать и писать бюрократию.

    Но сейчас я понял, что публикацию делать обязательно буду.

    Что написать на странице обо мне вашего блога?

    Страница “Обо мне” на блоге – это не просто одна из страниц сайта. Это одна из главных возможностей дать посетителям блога найти что-то общее с вами и стать вашим постоянным читателем. Данная страница одна из самых посещаемых страниц любого блога.

    Но как часто блоггеры либо совсем уберают данную страницу, либо пишут что-то очень общее, не несущее никакой информации.

    В данном посте я расскажу как создать страницу “Обо мне”, чтобы ваши посетители стали частью вашего блога.

    Представьтесь

    Расскажите о вас, кто вы и чем занимаетесь, не забудьте интересные ситуации из жизни, особенно которые связаны с тематикой вашего блога.

    Ваши достижения

    Людям интереснее читать блоггеров, которые что-то достигли в жизни, поэтому расскажите о ваших достижениях, например о сайте, который стал одним из самых популярных в интернете. Посетители приходят на ваш блог, чтобы научиться чему-то, поэтому предоставьте им эту возможность. Как говорится, когда делишься хорошим, то у того, кто делится это не уменьшается.

    В настоящее время стало не только модным, как в прошлом, но и необходимым владение оффшорной компанией. Советуем вам качественная регистрация оффшоров только на сайте locman.com.ua.

    Фотография или видео

    Когда мы говорим по телефону с незнакомым человеком, то мы мысленно представляем, как он выглядит и также происходит с читателями вашего блога. Не нужно заставлять их выдумывать ваши образу, покажите вашу фотографию. Людям приятнее общаться в интернете с человеком, когда они знают как он выглядит. А если у вас есть видео с вами, то это даже лучше, чем фотография.

    Контактные данные

    Если даже вы очень подробно рассказали о себе, то у многих людей все равно возникнут к вам дополнительные вопросы. Поместите на сайте контактную форму или другие контактные данные.

    Не откладывайте создание страницы “Обо мне”. Если у вас ее нет, создайте ее прямо сейчас!

    Ипотека или аренда квартиры в Киеве?

    Если заходит речь о том, где молодому человеку (паре, семье) со средней заработной платой взять жилье (причем не в будущем, а именно здесь и сейчас), мнения людей моментально разделяются на стороны. Первые считают оптимальным вариантом аренду квартиры, вторые же придерживаются мнения, что лучше ипотека. Само собой, у обеих сторон есть неопровержимые факты своей правоты. Что ж рассмотрим оба варианта.

    Наиболее значимая мотивация приверженцев ипотеки заключается в том, что если вы приобретаете квартиру в кредит, то в ту же минуту становитесь по документам ее собственником, еще до полной выплаты кредита. Соответственно, вы, если хотите, делаете ремонт, прописываетесь сами и прописываете родственников, возможен даже вариант со сдачей квартиры в аренду, по согласованию с банком.

    Арендная квартира, в свою очередь, принадлежит не вам. Поэтому, вы лишаетесь прописки (следовательно, и возможности завести учетную запись в местной поликлинике или записать ребенка в детский сад или школу), каких-либо прав на изменение внешнего вида квартиры – все нужно согласовывать непосредственно с хозяином. К тому же все деньги, выплаченные за ипотеку, в конечном результате суммируют в вашу пользу, а вот арендную плату можно сравнить с проживанием в отеле, это «чистый убыток». Еще следует добавить, что арендная плата напрямую привязана к ценам на недвижимость, соответственно при повышении цен на покупку жилья повышается и его аренда. Что касается ипотеки, то она наоборот снижается. Да и раз в несколько лет можно провести перерасчет кредита на наиболее благоприятных условиях для вас.

    С другой стороны, не стоит забывать, что квартира в ипотеке фактически является вашей только «на бумаге». Вы не имеете права продавать или же обменивать ее, а сдавать можно лишь «по закону», т.е. выплата налогов с ежемесячной арендной платы, что уже отталкивает от рассмотрения такой идеи. Свои действие, какими бы они ни были, вы обязаны согласовать с банком, будто он и есть «арендодатель». Распоряжаться же в полной мере квартирой вы сможете, лет через 20-30, когда ее стоимость может, как значительно повыситься, сделав вас счастливчиком, так и упасть. Тем не менее, для многих людей остается лучшим «призрачное свое», нежели «чужое».

    По словам риэлторов http://rieltor.ua/flats-rent-daily/,лучше арендовать квартиру в Киеве чем взять в ипотеку.