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

    Привет всем, я — сорокалетний программист-самоучка, а это моя история.

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



    Через каких-то 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 км. При всех прикидках вырисовывалась следующая картина, которую мозг постоянно отпихивал как неприемлемую: хочешь быть разработчиком — уезжай в большой город или меняй страну. Не хочешь уезжать — ломай себя и меняй сферу интересов. Непривлекательная альтернатива.

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

    Разработка и ИТ с приставкой «гос»


    По знакомству я устроился в организацию атомной отрасли. Численность ~120 человек, с постепенным ростом количества персонала. Всё ИТ сводилось к серверу 1С и файловому серверу, управляемыми единственным админом, периодически жостко злоупотребляющий алкоголем. 80 компьютеров, одноранговая сеть без домена с черепашьей скоростью и постоянные пропадания компьютеров из сети. Я устроился инженером пуско-наладки: во втором человеке, который бы занимался ИТ, компания, по мнению руководства, не нуждалась.

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

    Какая связь между метрологией, экологическим надзором, и информационными технологиями? Самая прямая — мало кто понимает, чем занимаются специалисты этих направлений. Поэтому всякую «неведомую хрень» сваливают в одну кучу, не взирая на здравый смысл. И безумие продолжается: теперь эффективные менеджеры переводят отдел информационных технологий в сметно-договорное подразделение.

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

    Если же у управленца вдруг возникает понимание необходимости построения ИТ-инфраструктуры, то у него же появляются мечты о том, что все это возникнет само собой из ниоткуда. Другая крайность — что можно сделать любую информационную систему, просто выпустив распоряжение и выделив крупную сумму из бюджета. В купе с тем, что такие управленцы очень смутно представляют себе всю многогранность ИТ-мира, а познания об ИТ-профессиях у них ограничены названиями «сисадмин» и «тыжпрограммист», то с такими людьми очень трудно работать. Невозможно объяснить, что вчерашнего техника по документации нельзя сделать специалистом по базам данных, а очень хорошего мальчика, за которого ручается сам начальник управления, не научишь работе с сетями. И тем более невозможно объяснить, что хороший Linux/Win администратор не должен заниматься закупками, договорами и составлением бесконечных отчетов, а программист не сможет ничего внятного написать, параллельно сопровождая бухгалтерию/кадры/сметы/договора, в промежутках крутя АТС, заправляя принтеры и ведя складскую базу оборудования.

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

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

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

    Ранее я зарекался, что никогда больше не буду работать с 1С. Жизнь внесла свои коррективы. Оказалось, что на предприятии в момент моего поступления не было единых и унифицированных информационных систем по основным направлениям деятельности. По сфере деятельности моего пуско-наладочного отдела, для каждого типового проекта было свое самобытное, уникальное учетное ПО, написанное залетными людьми на коленке. Под новый проект тоже необходимо было иметь пакет программ автоматизации деятельности. Можно было продолжить использовать старое ПО, к которому накопилось много претензий, исходники которого исчезли вместе с разработчиками. А можно было сделать все немного по-другому.

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

    Если необходимость наличия регламента по старым традициям еще понимали, то необходимости в ТЗ на информационную систему (тем более, технического решения) под новый проект никто не видел. Для меня это было удивительно, но я знал, что палец о палец не ударю, пока у меня не будет подписанного ТЗ. Разработчики знают, что ТЗ — это надежный щит от последующих требований «всё переделать». Поэтому я написал и согласовал ТЗ, которое, по сути, никто не читал кроме меня, но которое несколько раз выручало в дальнейшем.

    Никакой другой вменяемой программной платформы, кроме 1С, я найти не смог. Копнул в сторону СПО-шнного OOBase, бесплатного Дебет Плюс, подумывал о Qt, потыкался в Лазарус, помедитировал над документаций ExtJs. Но ничего из этого набора не подходило. Да и где бы я нашел специалистов кроме себя, способных сопровождать такую экзотику? Дальше пришлось восстанавливать скиллы по 1С, разбираться с тонкостями написания конфигурации в режиме тонкого клиента. В итоге за несколько месяцев была написана конфигурация 1С, многопроектная и многопользовательская. Сервер был поднят на CentOs Linux + PostgreSQL. Было организовано подключение соответствующих отделов со всех филиалов предприятия к арендованному физическому серверу на магистральном кольце. Да, все это пришлось делать самому на чистом энтузиазме, как говорится, «в одно рыло».

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

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

    Мы очень рассчитывали на то, что основные суммы сможем заработать на ежегодных договорах по поддержке и развитию системы. Но нет. Традиционно, система была передана на сопровождение карманной ИТ-организации. Ребята не сразу осознали, что им придется столкнуться с Linux-виртуалками и сопровождать БД PostgreSQL, а не весело мышевозить связку 1С+Windows+Microsoft SQL Server. Руководитель стал названивать мне и требовать, чтобы все было переделано на продукты компании Microsoft, причем именно в тот момент, когда уже начались санкции и в стране был взят курс на импортозамещение. Я прикрылся ТЗ и сообщил ему пункты в отраслевых регламентах, в которых разрешалось использование дистрибутивов Linux для информационных систем. После чего попросил его подумать о стоимости, сроках согласования и сроках реализации такой переделки. Видимо, это взымело действие, и спустя пару недель молчания нам предложили заключить договор на техподдержку. На техподдержку третьей очереди. По факту это означало, что на нас будут сваливать все возникающие проблемы, что бы мы, как разработчики системы, их решали за весьма символическую плату. Мы понимали, что такие информационные системы не работают просто так, их нужно и сопровождать, и развивать. Тем более, что первичные данные в нее вводят наши сотрудники по всем площадкам. Поэтому даже на таких условиях согласились. Но дальше дело не пошло: договор на третью очередь должна была инициировать сторона заказчика, но никто этим не стал заниматься и дело спустили на тормозах.

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

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

    Профессиональная деградация


    Не каждый разработчик способен работать в таких условиях, в которых пришлось работать мне: вместо разработки — согласования, феерическая бумажная безопасность, составление договоров на поставку и обслуживание, закупка ПО и лицензий… Как, я еще не сказал? Эффективные менеджеры методично выпускают документы, согласно которым каждый специалист должен заниматься всем спектром всех возможных производственных дел. Это называется вовлеченностью в техпроцесс. Забыт общероссийский классификатор профессий, забыт российский реестр профессиональных стандартов. По мнению менеджеров, каждый сотрудник производственного предприятия должен (пишу по памяти):

    • Быть инициатором и исполнителем работ по подготовке, оформлению и регистрации проектов документов в отраслевых системах документооборота, согласовывать документы письменно и электронно, определять согласующих и обязательных согласующих проекта документа, определять сроки согласования проектов документов, вести учет карточек проектов документов как исполнитель. Кто знает что такое SAP, тот представляет себе этот адъ;

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

      • обоснование максимальной/минимальной цены;
      • локальные сметы, выкопировки либо иные сметы или расчеты;
      • техническое задание, приложения к ТЗ;
      • проект договора с приложением графика поставки продукции;
      • графики оплаты и поставки;
      • заключение ПДТК и РИО;
      • иные документы и приложения, предусмотренные отраслевыми стандартами.
    • При формировании ТЗ необходимо:

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

    • Как инициатор закупочной процедуры, каждый специалист должен запрашивать и обрабатывать технико-коммерческие предложения потенциальных поставщиков на основе которых составляется расчет начальных цен договоров. Инициатор несет ответственность за обоснованность определения плановой стоимости закупки, за обоснованность определения и правильность расчета НМЦ, за соблюдение положений методики расчета НМЦ при определении стоимости заключаемых договоров;

    • Вести деятельность по отражению хозяйственных операций в бухгалтерском учете предприятия и самостоятельной регистрации закупочных документов по расходным договорам. Выполнять сценарии работы по расходному договору: создавать заявку на закупку для нужд производственного подразделения, вводить первичные бухгалтерские и финансовые документы в систему управления предприятием в бизнес-подразделениях владельцев договоров;

    • Оформлять поступление товаров и прочих активов в подразделение (акты), участвовать в комиссиях по приемке и списанию товаров (акты), обеспечивать документальное оформление ввода/вывода в эксплуатацию оборудования и программного обеспечения (приказы и распоряжения);

    • И т. д. про соблюдение безопасности, отраслевых политик и прочего.

    (Тяжело читать это канцелярит? Думаю, что в лучшем случае только каждый десятый смог дочитать эти пункты до середины).

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

    ИТ-отделам в этом смысле не повезло больше всех: как бы ни хотели закрыть глаза на такое непонятное и такое ненужное ИТ, а современная жизнь диктует, что всё завязано на ИТ-технологии. Поэтому на каждом предприятии ежегодно заключается около двух десятков договоров по ИТ направлению: различные виды телефонной связи (внутренняя, местная, междугородняя, международная, мобильная), аренда интернета, прочие защищенные/служебные линии, служба доставки (ведь оборудование надо возить), информационные системы типа правовых, ИТС, базы отраслевой технической документации, обслуживание печатной техники, заправка и ремонт картриджей, аттестации по различным видам безопасности, подача отчетности, криптография, банковские системы, закупочные договора по категорийным и мелким закупкам. Ни в каких других подразделениях нет такого количества заключаемых расходных договоров. Нам же еще «повезло» заниматься метрологией… И если прочитать все требования, выставляемые на сотрудников, и подумать сколько бумаги и подписей надо собрать по каждому договору, с соблюдением всех процедур, и учесть, что отчетные документы по договорам появляются каждый месяц, то станет ясно, что ИТ-отдел вынужден круглый год заниматься совсем не ИТ, а планированием, договорами, закупкой, бухотчетностью, обучением, аттестацией и прочим оформлением Очень Важных Документов.

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

    В общем, у меня сложилось впечатление, что вся производственная деятельность регулируется людьми, которые ориентируются в какой-либо своей узкой области, и навязывают свои узкие ориентиры на подконтрольные предприятия и сотрудников. На нас сваливают требования по всему чему угодно: от закупок до энергетических политик, от экзаменов по электробезопасности до требований в области качества и экологии, от норм энергетики до информационного взаимодействия с представителями правоохранительных органов. Я честно пытаюсь все это барахло понимать и учить. Но я каждый раз с ужасом жду очередных экзаменов. Вдруг я не отвечу на вопрос о технологических системах нормальной эксплуатации и системах безопасности РО, или что-то не то скажу про технологические системы поддержания ВХР? А если я неправильно перечислю основные полномочия органов государственной власти РФ субъектов РФ и органов местного самоуправления в сфере отношений, связанных с охраной окружающей среды? Или, что хуже того, забуду требования к обязательному страхованию ответственности за причинение вреда при эксплуатации опасного производственного объекта? Я смотрю на весь объем документов, которые вписываются в должностные и производственные инструкции, и не понимаю: неужели никто не видит всего этого маразма в количестве требований? Я не знаю ни одного человека, который способен запомнить такой объем информации.

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

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

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

    Послесловие


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

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

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



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

    Подробнее
    Реклама
    Комментарии 763
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        А я немного помоложе, 30 лет. С 5 класса юзал Север (аналог Спектрума от местного завода) на бейсике, потом почитывал про ассемблер (хоть и не писал на нём ничего), в 10 классе накидал rat на delphi, потом много лет си, моделирование всякого научного, недавно java.
        Надеюсь, у меня ещё есть время! =)
        • 0
          Нет, нас, таких, полно.
          • 0
            Согласен :). Полно.
            • 0
              … тогда я говорю себе строго – «Терпеть!» …
              • 0
                Нас много)
              • +4
                Да, в сях контекстно-зависимый синтаксис указателей со звездочкой — это феерический просчет проектировщиков. В том же паскале указатель и разыменовывание определяется по положению слева-справа от идентификатора. Уже одно это помогает легко читать код вместо того, чтобы помнить или выяснять какого типа переменная и смотреть где мы находимся — в части определения или в части выражения.

                Удивительно, что этот просчет сделан в языке, в котором указатели являются самой солью языка.
                • +10
                  Для понимания нужно вспомнить историю Си. Пара аспирантов и пара студентов делала структурный ассемблер для PDP-7. Машина была словной (16 битные слова), а язык безтиповым и назывался Би.

                  От PDP-7 в языке Си остались такие конструкции как эквивалентность arr[i] и *(arr+i). На безтиповом языке для словной машине это было просто сложение.

                  Когда они решили перейти на PDP-11, безтиповым языком было уже не обойтись. PDP-11 была словной машиной с адресацией до байта. То есть по четном адресу можно было прочитать и слово и байт, а по нечетному — только байт. Поэтому им пришлось вводить типы. Ну и сменить название языка на Си.

                  И тогда, для ускорения переделок, была придумана гениальная идея. Вместо описания типа — описывать, какими преобразованиями переменная приводится к базовому типу. int **pp означает, что если дважды разыменовать pp, то получиться int. Этих хаком они упростили себе переделку компилятора,

                  От PDP-11 в Си осталась конструкция *dst++ = *src++, которая транслировалась в одну команду mov (R5)++, (R3)++

                  Если бы вы начали изучение Си с The C Programming Language, то там довольно явно рассказывается об этом…

                  Ну а первые впечатления от Си (1984 год): вау, какой красивый ассемблер! Теперь можно писать код на ЯВУ и понимать, какие команды будут исполняться! Особенность компиляции (из.с в .s, а уж потом в .obj) этому только помогали.

                  Но да, к 1990ому году пришли иные машины и иные компиляторы. И Си перестал восприниматься ассемблером конкретной машины. А хак с заменой описания переменных на описание преобразования в базовые типы — остался.
                  • 0
                    То-то я думал, мне VAX напоминает и автоинкрементную адресацию.
                    • +1

                      Да… система команд PDP-11 была совершенна. Это ее и сгубило :-( Совершенная система, увы, не может развиваться. Просто некуда.

                      • 0
                        Ну как сгубило… она до 1990ого года развивалась.. Правда в 32битном варианте

                        P.S. На спутника ГЛОНАСС летают клоны VAX-11 на микросхемах серии 1839
                        • –2

                          VAX — это все же другая архитектура и другая система команд. У первых моделей еще был режим совместимости, но с середины 80 на это уже плюнули. А сами по себе компьютеры с архитектурой PDP-11 выпускались до 1990 года, просуществовав 20 лет.
                          Прелесть же системы команд PDP-11 была в том, что все команды (как одно-, так и двухадресные) могли использовать все режимы адресации (их было 8) для всех регистров (их тоже было 8, включая SP и PC) в любых сочетаниях.

                          • 0
                            В VAX то же самое. А еще есть трехадресные команды.
                            • 0
                              VAX — это развитие идей PDP-11 на 32битную архитектуру. Насколько я помню, с ортогональностью системы команд там все хорошо было. А вот и картинка


                              image
                              • 0
                                Угу, только тут нет адресации через 15й регистр в теле команды, когда между двумя операндами зашарашивается константа, а сам регистр надо соответственно инкрементировать, и выбрать следующие параметры загодя нельзя.
                                • 0

                                  угу… только это очень упрощенная картинка. Можно долго расказывать, но например код команды может занимать и боле одного байта, между этими красивыми байтами "режим-регистр" могут находиться данные переменной длины (от 1 до 4 байт) и т.п. Там еще и в связи с тем, что появились команды для обработки слов разной длины (1,2, 4 байта) такая катавасия была с циклами обращения к памяти, да еще и шины разные были в разных моделях. В общем субъективно, конечно, но для меня PDP-11 осталась такой милой и уютненькой.

                            • 0
                              Система не совершенна. Проблема — в переменной длине команд, что затрудняет конвейеризацию.
                              • +1

                                на самом деле формально все команды PDP-11 имеют длину 16 бит (одно слово). Двух- и трехсловные команды получаются при использовании косвенной автоинкрементной адресации по 7 регистру (PC). При этом во втором и третьем словах находится не код, а чистые данные — непосредственные аргументы. По-моему очень красивое решение.

                                • 0
                                  Это технически красивое решение, но представим, что нам надо оптимизировать выборку и обработку данных. В каком-нибудь x86 мы читая команду, знаем все про ее аргументы. А здесь — прочли байт, распарсили — ага, это режим 5, берем регистр. А то — смотрим, ага адресация через счетчик команд, надо прочесть из памяти, сам счетчик через АЛУ прогнать и т.д.
                            • +1
                              Синтаксис ассемблера PDP-11 не подразумевает двух плюсов :) и инструкция MOV (R5)+,(R3)+
                              • 0
                                Прошу прощения, забыл за 25 лет, что не работал на PDP-11/
                          • 0
                            +1
                            тоже жизнь началась лет с 12 с Спекртума и хардкора на ассемблере :) А к 40 года, пальцев не хватает на теле что бы перечислить на чем только не писал %)
                            • 0
                              А на чем еще тоько предстоит...:)))
                          • +29
                            Напомнило:
                            видео

                          • +6
                            мне тоже скоро 40, тоже первый комп был Микроша, вселенная дает мне знаки? или издевается? )) спасибо за статью
                            • НЛО прилетело и опубликовало эту надпись здесь
                              • +4
                                Просто мы одного поколения, а в наше время сегодняшной бездны товаров не было. Поэтому у нас есть (были) одинаковые вещи, которые нас сближают. К сожалению, у современных детей даже в одной стране таких точек соприкосновения почти нет. Все очень сегментировано и находится уже в области нематериального: общелюбимые компьютерные игры, сайты, сериалы. Даже материальных гаджетов сейчас так много моделей, что встретиь случайно в жизни любителя такого же очень сложно.
                                • +1
                                  я вас на 10 лет старше и могу сказать то же самое. :-) Слишком много у вас разного. Тот же экзотический МК-52 на картинке вместо массовогоБ3-21 (или БЗ-34 на пару лет позже).
                                  • +1

                                    Скажите приверженцам iPhone :)

                                    • 0
                                      Зато на Андроиде целый зоопарк производителей и десятки тысяч моделей — от откровенного подвала до А-эшелона.
                                  • 0
                                    А у меня был хардкор — отец собрал из спёртых с работы микросхем (в продаже из просто не было) «Микро-80» по схеме из журнала «Радио» за 83 год. Причём проц там был тот, что удалось найти — Z80(он был потом в «Спектрумах»). А поскольку Z80 был по системе команд не на 100% совместим с i8080, под который был интерпретатор Бейсика для Микро-80, то Бейсик не работал. В итоге моё программирования началось с ассемблера, точнее с машинных кодов. ))
                                    Было это в 87 или 88 году… (я лет на 5 Вас старше). Но на «Микроше»(Схема «Радио 86РК») тоже отметился — несколько моих игрушек были успешно мною проданы в сеть игровых салонов города (Тольятти) )))
                                    Прошу прощения за многословность — ностальгия… )
                                    • 0
                                      Я кстати тоже заглядывался на эту схему из журнала Радио. В итоге тоже программировал на машинных кодах, но чтобы сделать готовые игры это крутизна. Как я понимаю по профилю в Хабре в данный момент у вас JAVA?
                                      • 0
                                        Да. Сейчас в основном всё что связано с Java. По большей части серверная. Заглядываюсь на Android — переползти на него. Времени не хватает, но процесс идёт — сделаю несколько конкурентных приложений в Маркет и поползу дальше.
                                        • 0
                                          А мне судьба предоставила сначала 1С, теперь вот полностью надоело, с прошлого года изучаю JAVA и Android studio, есть один проект, небольшая игра.
                                          Сама по себе Java вызывает восхищение и сожаление, что раньше не взялся за нее. Планирую в этом году полностью уйти с 1С, пока что только по финансовым соображениям работаю.
                                          • 0
                                            У меня совсем недавно был застой — работал с продуктом Documentum (хрень на основе Java — почти j2ee) — работал на нём порядка 7 лет. Монструозная штука «в себе», так и не подружился с ним до конца ((
                                            Одно время даже думал что всё — кончился прогер во мне — пора куда-то сваливать. Потом начал пилить андроид, но без опыта не берут — понятно. А год назад удалось слезть с документума, подтянул современные скилы и снова полон сил )
                                            • 0
                                              Интересно, думал только в 1С такое бывает…
                                              А у меня хватило терпения на 17 лет, наверное помогало то, что занимался всегда новыми проектами. Теперь вот не могу нарадоваться Java, посмотрим как дальше пойдет, учу ускоренными темпами по ночам и на работе днем и в машине вебинары, не смотря на 2х детей. Но главное что нравится.
                                              • 0
                                                Не холивара ради, но очень хочется узнать чем Java прельстила по сравнению с 1С?
                                                • +1
                                                  Ожидал этого вопроса, вот почему я начал учить Java:

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

                                                  2.В 1С большие ограничения по дизайну, а в последнее время я сильно проникся material design разрабатываю мобильные приложения. Меня сильно обижает нехотение 1С предоставить возможность кастомизации (сами они предоставить нормальный дизайн не могут)

                                                  3.Сам внутрениий язык 1С не несет никакой индивидуальности, не развивается в сторону масштабируемости, оставаясь на уровне версии 7 (новые операторы работы с бинарными данными или асинхронные или другие дополнения не в счет)

                                                  4.Еще о языке 1С, он очень грязный и учит программиста халявности. Нет типизации, нет case-sensitive, нет инициализации. Все эти вещи может и снижают порого вхождения, но рождают ленивых (в плохом смысле) программистов и урезают напрочь охоту думать (об этом была статья на инфостарте)

                                                  5.Нет ООП, тут можно возразить, что он не нужен, или что он уже частично есть, но это не так! Инкапсуляция? Наследие? Полиморфизм? Когда я изучал Java я смеялся и плакал. Сколько кода можно было написать под другому, какая удобная была бы поддержка таких решений (написанных с ООП)!

                                                  6.Нет нормального IDE. Да разрабатывается 1c development tools, но он еще далек от того, чтобы им серьезно пользоваться, в текущий IDE ужасен, он заставляет вас печатать как печатной машинке, ничего не подсказывает и застрял в 98-м году.

                                                  7.Проприетарный формат решений / баз данных 1С, решения закрыты в бинарном формате, и это во время когда уже сам Microsoft перешел на xml? Да в 1С зашевелились и начали делать выгрузку, но этого мало и с большим опозданием.

                                                  8.В 1С постоянно что-то может вылететь и не работать. в некоторых случаях вы можете поработать напильником, в других случаях вы ничего не можете сделать, так как платформа закрыта и есть только один официальный форум (partnerts.v8.1c.ru) и он тоже закрыт для обычных людей, есть и bugboard но он тоже закрыт от обычных людей), но все эти сайты только если вы из СНГ, а для остальных все еще хуже.
                                                  Клиенты потеряли лицензии, 1С сервер у клиента упал, соединения не закрываются сами, веб-клиент работает недекватно, мобильная платформа рандомно падает и т.д. Все это требует вмешательства 1С и ожидания решения. Нет стабильности.

                                                  9.Любое ваше решение в 1С будет всего лишь надстройкой для 1С Предприятия, вы не можете считать себя программистом в полной мере и считать продукт своим. Он наполовину собственность фирмы 1С (давайте будет честными)

                                                  10.Ваша карьера остановится на 1С, вы не сможете найти работу зарубежом. У меня были фриланс клиенты из-за рубежа, но это не сравнить с количеством с СНГ.

                                                  11.Ваша карьера остановится на 1С, вы не сможете найти работу зарубежом, так как вы не учили язык программирования. В крайнем случае можете сказать что знаете Бейсико-Паскаль. Вы не знаете, что такое ООП, деплой, юнит-тесты, методики разработки, паттерны (боже упаси)

                                                  12.Ваша карьера остановится на 1С, вы не будете развивать свой мозг. (опять будьте честными)

                                                  Что бы меня заставило остаться в 1С:
                                                  — ООП (да да, создание Object -> Document/Catalog/… ->… Даже с метаданными можно это сделать
                                                  — улучшениея языка и укорощение, принудительная типизация переменных, инициализация, Case-sensitive
                                                  — Нормальный IDE (Eclipse далеко не лучший)
                                                  — Отказ от бинарного проприетарного формата
                                                  — Нормальная поддержка JS/HTML/CSS и возможность кастомизации, так же и в мобильной платформе. Все ради нормального дизайна

                                                  Как вы понимаете в 1С этого сделано не будет никогда.

                                                  Теперь о Java, C++, C#:

                                                  1. Java один из наиболее распространненых языков, говорят он наследник С++, много вещей в них похожи, но сейчас у С++ уже много наследников. C# похож сильно, но в силу связи с Microsoft, я отказался от идеи дальше изучать его, так что C++ -> Java это мой путь

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

                                                  3.Java так и просит использовать чужие решения, использовать наследие и проектировать решения заранее (чего не нужно делать в 1С)

                                                  4.Java строг, (но не слишком), требует порядочности, аккуратности и продумывания

                                                  5.Изучая Java вы имеете огромный выбор развития карьеры и покрываете большой рынок JAVAEE / JAVASE / JS фреймворки / Scala / Android, и т.д.

                                                  6.Изучая Java вы узучите паттерны и сильно удивитесь (если вы пришли из 1С)

                                                  7.Прекрасные IDE, Jetbrains/Netbeans/Eclipse/Android studio он продумывает за вас многие вещи и помогает как учитель наблюдающий за вами.

                                                  8.Вы найдете работу зарубежом или из дома фрилансером, вы можете участвовать в конкурсах, в Open-Source, выбор за вами.

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

                                                  Пишите если тоже задумались об уходе с 1С, помогу вам.
                                                  Удачи!
                                                  • 0
                                                    Не холивара ради, но очень хочется узнать чем Java прельстила по сравнению с 1С?


                                                    В 1С объекты уже продуманы и написаны до тебя и для тебя.
                                                    В Java нужно много писать того, что не решает непосредственную задачу, а так сказать, делать «обвязку» под будущее решение задачи.

                                                    Это может быть интересно, так как довольно абстрактно.

                                                    ;)
                                                    • 0
                                                      binkaminka
                                                      В Java нужно много писать того, что не решает непосредственную задачу, а так сказать, делать «обвязку» под будущее решение задачи.

                                                      Можно просто сказать коротко и ясно: В Java нужно много писать.©
                                    • +4
                                      Прочь упаднические настроения! Года через 3 будешь с улыбкой перечитывать
                                      • +18
                                        Многа буквов, не осилил. Видимо у вас много свободного времени, что бы писать такие многословные и пространные тексты. И ВЫ ЖАЛУЕТЕСЬ?!

                                        Радуйтесь. Я тоже помотался по разным там конторам/фирмам, где весело, интересно, но и коммитить свои просветления приходилось часа в три ночи. Сейчас мне 45, работаю в большой конторе, на удаленной работе из дома. На уютном проекте. Ну подумаешь, что WebSphere 6 и ява 6. Я никого не трогаю, меня никто не трогает. Восемь часов рабочий день. 30 дней отпуск, можно даже все 30 подрят взять и с рюкзачком на пять-шесть недель! Красота. Таких проектов в промышленности столько наворотили. Мне их поддерживать еще лет на 20 хватит думаю. Дома занялся автоматизацией, благо сейчас esp и всяких готовых вещей на эту тему полно. Мебель сам собираю. Жизнь прекрасна!
                                        • +20
                                          > Многа буквов, не осилил. Видимо у вас много свободного времени, что бы писать такие многословные и пространные тексты.

                                          То есть, вариант, что текст писался с апреля прошлого года не рассматривается? Именно тогда вышла оригинальная статья, мне понравилась идея, и я начал писать свою, методично, по кусочкам. Сегодня выложил многомесячную работу.
                                          • –9
                                            Возможно если бы Вы ее публиковали «по кусочкам» ее было бы легче читать
                                            • +23
                                              Сорри, привык к крупным формам.
                                              • +28
                                                Не слушайте эти жалобы, всем угодить невозможно… А ваша написана интересным и грамотным русским языком, и является цельной. Я бы тоже так написал!
                                                • +4
                                                  Мне очень понравилось — пока читал, успел забыть про утренний и свежий кофе. Теперь пенка упала, он остыл, но пофиг. Статья важней.
                                                  • +11
                                                    Долой клиповое сознание, отличная форма, размеренная и с деталями. Спасибо.
                                                    • +1
                                                      Хорошо написано, не обращайте внимания.
                                                      P.S. Мне 48, iOS dev на удаленке.
                                                      • 0
                                                        поддерживаю, хорошо написано, актуально, информативно.
                                                        Мне 47, iOS developer, Тель Авив.
                                                        Тоже мысли о свечном заводике или чем то подобном.
                                                        А почему у вас не было попытки уволится из организации и предложить им поддержку проекта? Так часто делают и организации может быть выгоднее даже, чем собственный штат держать.
                                                        • 0
                                                          Спасибо за статью, интересно было почитать.
                                                      • 0
                                                        Я осилил :) Мы с Вами ровесники и путь в ИТ похож. Полностью с Вами согласен.
                                                        Последние 10 лет работаю по 1С — денежно, но неинтересно.
                                                        Для души есть несколько проектов. Но времени на них практически нет…

                                                        Спасибо за статью!!!
                                                      • +8

                                                        Тут немного, читается отлично, ребёнку на ночь сказки большей длины читаются. Не пойму тенденции современного мира писать "обрывками" (кстати в тексте про эту особенность современного интернета как раз написано).

                                                        • 0
                                                          Многа буквов, не осилил.

                                                          А зря, читается легко и с интересом. Хотя сперва тоже было желание не читать статью, а проскроллить до комментариев.
                                                          • +2
                                                            gsaw:
                                                            Ну подумаешь, что WebSphere 6 и ява 6. Я никого не трогаю, меня никто не трогает. Восемь часов рабочий день. 30 дней отпуск, можно даже все 30 подрят взять и с рюкзачком на пять-шесть недель! Красота. Таких проектов в промышленности столько наворотили. Мне их поддерживать еще лет на 20 хватит думаю. Дома занялся автоматизацией, благо сейчас esp и всяких готовых вещей на эту тему полно. Мебель сам собираю. Жизнь прекрасна!

                                                            Гимн поддержки legacy кода. — Да здравствует Cobol! ©
                                                            • +2
                                                              Я научился на яве писать модули вместо кобола и даже получается их на мэйнфрейме запускать. Скоро меня совсем некем будет заменить. :)
                                                              • 0
                                                                А я не Rexx понаписал кучу полезного. Да там не то что заменить, сам далеко не сразу понимаю что происходит
                                                          • +3
                                                            Сам вырвался из подобной рутины через конкурсы. Есть множество конкурсов, на хабре постоянно идут анонсы. По программированию, по машинному обучению, графике, взлому и т.д. Если есть мотивация и время — надо занять на одном из таких конкурсов место в верхней половине таблицы. Это уже является пропуском для предметного разговора с устроителями конкурса и их непосредствеными конкурентами.

                                                            В общем — конкурс — лучшая квалификация, чем свой сайд проект. Работу помогает искать лучше.
                                                            • +9
                                                              Первая часть — просто пост ностальгии. А дальше привычный постсоветский ужас. Огромное спасибо за публикацию.
                                                              • +17
                                                                Да — читать печально — и особенно печально свысоты своих лет — имею ввиду, что я значительно старше автора, и мой путь в области разработки ПО не таков, правда я начинал в другое время, когда машины были большими, сначала отечественными, а потом ЕС-ными.
                                                                Тем не менее я благополучно переехал на персональные компьютеры, освоив по ходу дела самые разные языки и разные операционные системы.
                                                                Но скажу сразу язык С надо программисту знать обязательно, особенно указатели (кому они доставляю проблемыт следует еще потренироваться)
                                                                Автору все-таки не повезло, что не пришлось работать в нормальных программистких фирмах, особенно зарубежных — это правит стиль и учит технологиям. И к слову 40 лет не такой большой возраст для поиска работы в них, короче еще не вечер.
                                                                Как и не вечер 60 лет — все-таки программирование требует только головы, приложенной к компьютеру — главное чтобы было напряжение в сети и доступ к интернет
                                                                Поэтому желаю успехов в сфере информационных технологий, которая дает человеку свободу самовыражения и творчество (кстати — хорошо оплачиваемого)
                                                                • +4
                                                                  Поддерживаю мнение насчет зарубежных фирм (да даже отечественных, работающих профессионально как на себя, так и на аутсорс). Некоторые из них даже предлагают обучение(да, платное), но с дальнейшим вливанием в проект. Придется несколько месяцев попотеть, поизучать кучу новых технологий, но это же и позволит взбодриться. Сам наблюдал рост нескольких персонажей за 40 из «да кому я уже нужен» со вселенской скорбью на лице в людей с улыбкой, которые делают по-настоящему что-то значимое и нужное, да еще и получают от этого кайф и конкурентную ЗП, Удачи автору, и спасибо за статью!
                                                                  • +15
                                                                    Вот именно. Автора надо поругать за упаднические настроения!

                                                                    Мне 58, программирую с 1975, с 1978 зарабатываю этим деньги. Переходить в руководители проектов не собираюсь.

                                                                    Нормальные фирмы дали мне очень многое. Как понимание того, что разработка не ограничивается чисто программистскими инструментами, а есть еще процессы вокруг, взаимодействие в команде и между командами, понимание того, что люди где-то за границей — такие же как и ты, не лучше и не хуже.
                                                                    • +1
                                                                      особенно указатели (кому они доставляю проблемыт следует еще потренироваться)

                                                                      Проблема-то не в указателях, как таковых, а как верно сказал автор
                                                                      как можно было так уродливо сделать такую простую вещь, и почему эту уродскую реализацию еще и приняли в стандарт
                                                                      • +1
                                                                        и что же там уродливого — автору я не стал задавать этот вопрос
                                                                        • 0
                                                                          Я тоже не понял. Особенно про «Зная Ассемблер КР580ВМ80А, и успев поковыряться с i8086». Интеловский ассемблер и C у меня были основными языками лет 7, на них написаны просто груды кода, и ни разу такой мысли не возникало.
                                                                          • 0
                                                                            Здесь скорее всего зависит от того, как вы познакомились с указателями.
                                                                            • 0
                                                                              По каким-то книжкам, не помню уже. Хотя не так и много их было в начале 90-х, но точно не K&R. Что там знакомиться-то, описание уровня «если перед объявлением переменной стоит звёздочка — это указатель, то есть переменная в которой содержится адрес» прочитывается быстрей, чем пишется этот текст. «Арифметические операции меняют адрес не на операнд, а на размер типа» — тоже вроде не бином Ньютона :) Дальше по примерам, по собственным попыткам что-то накодить, если непонятно — в отладчик и в режим дизассемблера.
                                                                              • 0
                                                                                Я не в этом смысле. Я имею в виду само понятие «указатель», как адрес на что-то. Не в Си, а вообще, как сущность. На мой взгляд, в зависимости от того, как понятие «указатель» вошло в вашу жизнь — при изучении Си или до того — синтаксис Си в этой части соответственно не будет или будет казаться «нехорошим». В том числе при работе с формальными параметрами и т.д.
                                                                                Субъективно, разумеется.
                                                                                • 0
                                                                                  После ассемблера и бейсика. Как-то так: указатель — эта переменная, которая инициализируется значением не с помощью mov, а командой lea.
                                                                                  • 0
                                                                                    Интересный подход. Такие объяснения очень наглядно показывают, насколько по-разному устроено мышление у разных людей.
                                                                                    Работая с низким уровнем, я всегда мысленно работаю с абстрактно памятью, максимум — ячейками памяти, но не переменными. Т.е. указатель — это адрес ячейки памяти, но никакой не переменной, потому что видение вон той группы байт переменной — только в моей голове. В макроассемблере, который может работать со структурами, все уже ближе к ЯВУ, разумеется.
                                                                                    • 0
                                                                                      Вот как раз в ассемблере с памятью приходилось иметь дело постоянно, начиная с банального 0B800h и заканчивая всякими ползаниями по резидентам/MCB. А что в C можно точно так же адресовать память даже и не задумывался до какого-то времени, ибо все задачи, в которых это было нужно, решались на ассемблере :)
                                                                                    • 0
                                                                                      Да, тут не расшифровано понятие переменной. А оно многогранное, поэтому если смотреть с низкого уровня, с уровня ячеек памяти и команд процессора по работе с памятью, то все не так просто. К примеру, человек сразу задает вопросы: как организовывается память именованных областей памяти (переменных), где эти имена хранятся и хранятся ли вообще, где и как хранится тип и длина данных, почему имя массива является указателем, получится ли у тебя твой лоад эффективе аддрес при передаче значений через стек, или вместо этого будет что-то пушиться/попаться. А еще надо учитывать оптимизацию, передачу через регистры и прочая, чтобы писать эффективные программы. И как то неприятно осознавать, что у тебя в голове не полная картина кода, а какая-то абстракция, и нижний уровень отдан на откуп магии компилятора. Для скриптовых языков это позволительно, но для «высокоуровневого ассемблера», как его тут называют, — нет, потому что результат реализации машкода от такого «ассемблера» непредсказуем, в отличие от настоящего ассемблера, который однозначно транслируется в машкоды.

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

                                                                                        Что такое сегменты данных и стек было известно до того. Во всяком случае с тех пор, как не стало хватать 64k для всего. Да и дранение данных резидентом в собственном теле от этого мало чем отличается принципиально — те же ссылки на адреса участков памяти, фактически являющихся переменными, только в кодовом сегменте. А если что-то непонятно, то компилируешь и тыкаешься в 5 заветных клавиш: t, d, alt, enter, enter.

                                                                                        где эти имена хранятся и хранятся ли вообще

                                                                                        Уж не помню как в досовские времена назывались objdump и аналоги, но таких вопросов не было. В объектнике — понятно как, что с ними происходит потом тоже не секрет.

                                                                                        почему имя массива является указателем,

                                                                                        Никогда не задавался этим вопросом. Какая разница почему? Просто оно так, это нужно запомнить.

                                                                                        получится ли у тебя твой лоад эффективе аддрес при передаче значений через стек, или вместо этого будет что-то пушиться/попаться

                                                                                        Не уверен — попробуй, сравни :)

                                                                                        И как то неприятно осознавать, что у тебя в голове не полная картина кода, а какая-то абстракция, и нижний уровень отдан на откуп магии компилятора

                                                                                        Это проходит со временем. А пока не прошло — есть инлайн-ассемблер. Довольно быстро понимаешь, что тратить время на игру с ним можно бесконечно, и в результате выиграть только пару копеек. И куда эффективней потратить время на алгоритмическую оптимизацию абстракции, чтобы выиграть на порядок больше. Но по дурости и молодости да, даже исходники всяких unzip/unarj/unlha на ассемблере переписывал «для ускорения»…

                                                                                        людям, пришедшим с низкого уровня, тяжело с сями

                                                                                        Мне не тяжело. Просто быстро стало понятно, что разным задачам разные инструменты.
                                                                                        • +3
                                                                                          >> почему имя массива является указателем,

                                                                                          > Никогда не задавался этим вопросом. Какая разница почему? Просто оно так, это нужно запомнить.

                                                                                          Так задайся, это же твои профессиональные навыки. Ужасно слышать такое от программиста. Я эти вопросы задаю не сам (я то это все расковыривал), а от абстрактного человека, которого ставят перед фактами, не объясняя причин.

                                                                                          Могу посоветовать начать копать от ассемблерного синтаксиса работы с массивами. Как там обозначается база и смещение, как вычисляется адрес ячейки и как он соотносится с синтаксисом символьной записи. Потом надо поработать с реальным ассемблерным кодом, поковырять двумерные массивы, и тогда придет понимание ответа на означенный вопрос.

                                                                                          Не все так бессистемно как кажется.
                                                                                          • +1
                                                                                            Могу посоветовать начать копать

                                                                                            Спасибо, но эти раскопки я произвёл лет 20 назад.

                                                                                            Просто не понимаю зачем оно нужно: влезать в глубокие детали реализации сразу при первичном освоении языка. Какая-то детская торопыжность «хочувсёзнатьскорейскорей». Всему своё время.

                                                                                            Да и вообще, IMHO, при изучении новых языков во многих случаях лишний груз знаний иногда лучше выбрасывать, он поначалу только мешает и тащит в сторону «а вот в XYZ было не так!».
                                                                                            • 0
                                                                                              Абстрагирование уводит человечество в тупик, когда уже не будет понятно как на самом деле оно работает, чтобы создавать действительно правильные вещи.

                                                                                              Всё должно быть простым и естественным. В том числе и языки программирования.

                                                                                              ИТ отрасль на западе приняла страничную организацию памяти как факт, а ведь это костыли. Это как признать инвалида полноценным (прошу прощения у людей с ограниченными возможностями, если это задевает их чувства). И теперь эти костыли с помощью абстрагирования распространяют на все остальные ИТ технологи. Это даже приводит к тому, что новые архитектуры, которые устроены иначе, должны поддерживать не естественные для них механизмы работы с памятью, просто потому, что программисты так привыкли. А ведь такие требования ухудшают архитектуру и соответственно замедляют эволюцию ИТ технологий. И чем дальше тем глубже мы увязаем в этом топком болоте.
                                                                                            • –1
                                                                                              Могу посоветовать начать копать от ассемблерного синтаксиса работы с массивами. Как там обозначается база и смещение, как вычисляется адрес ячейки и как он соотносится с синтаксисом символьной записи

                                                                                              Это так только если считать, что и ассемблер и си начались с х86, а до него ничего небыло ;). На самом деле, скорее всего, скобочки в ассемблер пришли из сей, которые значительно древнее х86. В пидипишном ассемблере (давно не брал я в руки шашек) — ну, вы помните историю сей, — насколько я помню, скобочек небыло. Так что, судя по всему, у вас лишняя сущность и телега впереди лошади :)

                                                                                            • +1
                                                                                              Не было сегментов данных на PDP-11. 64К на задачу и всё. Зато были оверлеи.
                                                                                              • 0
                                                                                                ЕМНИП, в зависимости от аппаратного промежуточного менеджера памяти можно окнами получать доступ к большому куску.
                                                                                                • 0
                                                                                                  Можно. Только не окнами, а страницами. Всего было 8 страниц (по 4К слов каждая). А вот сегментных регистров не было. И поддержки переключения страниц в языках программирования не было. Была поддержка оверлеев.

                                                                                                  Беда в том, что управление страницами из программы — прилично мешало и защите памяти и возможности исполнения на более слабых машинах. Потому и не использовали без сильной нужды.
                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                              • 0
                                                                                                По-моему современные процессоры уже и не предоставляют возможности прямого исполнения программ в машинных кодах, соответственно и ассемблера. Система команд это уже некий уровень абстракции и программа, например на x86 системе команд, потом оптимизируется на аппаратном уровне и в реальности исполняет другую программу.
                                                                                                • 0
                                                                                                  Мир устроен не так, как вам кажется…
                                                                                                  • 0
                                                                                                    А что не так? Определенно речь шла о uOps'ах.
                                                                                                    • –1
                                                                                                      Не так то, что современные процессоры прекрасно «прямо» исполняют программы в машинных кодах. При наличии хорошей памяти и знаний, вы прямо в Hex editor-е «Far Manager»-а можете набрать двоичный файл, который запустится как exe.
                                                                                                      Или написать простенькую программу на ассемблере, слинковать и запустить ее.

                                                                                                      P.S. Не нужно путать машинный код с микрокодом процессора!
                                                                                                      • +1
                                                                                                        Именно. Микрокод это микропрограмма зашитая в процессор, которая преобразует машинный код, который вы набьете в фаре в микрооперации, которые реально то и исполняет процессор.
                                                                                                        • +1
                                                                                                          а вы просто не поняли смысл сообщения slonm, на который кинулись с копьем.
                                                                                                          • 0
                                                                                                            Нет, это вы, видимо, не умеете читать по-русски. Фразу
                                                                                                            По-моему современные процессоры уже и не предоставляют возможности прямого исполнения программ в машинных кодах, соответственно и ассемблера

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

                                                                                                            Еще раз, медленно: современные процессоры ПРЕДОСТАВЛЯЮТ возможность прямого исполнения программ в машинных кодах.
                                                                                                • +1
                                                                                                  Шли бы с PDP-11 все было бы очевидно. Собственно могу дать ответы на все ваши вопросы. Но ответы будут однотипные:

                                                                                                  • В бестиповом языке (а таким был Би) это было разумно. Оставлено для совместимости (ну или просто не стали переделывать).
                                                                                                  • Сделано для упрощения перехода от бестипового языка Би к типовому Си.


                                                                                                  А на PDP-11 — все транслируется очень прозрачно.
                                                                                                  • +1
                                                                                                    Вы объясняете, почему так получилось. А это понятно в принципе и по наитию.
                                                                                                    • +1
                                                                                                      А многое в IT сделано именно так, как было сделать проще.

                                                                                                      Почему в фортране-IV такие странные правила входа и выхода из расширенной области цикла? а это описание поведения первых компиляторов. Почему в фортране такой странный арифметический IF с тремя метками? А это машинная инструкция такая была на IBM 709,

                                                                                                      Почему форматы printf такие? А это было скопировано с форматов фортрана, а в нем — с ассемблерного рантайма того же IBM-709. Скопировано не полностью, форматы фортрана умеют больше сишных, но тем не менее.
                                                                                        • 0
                                                                                          недаром по индексу Tiobe c второй по популярности язык программирования (http://www.tiobe.com/tiobe-index/)
                                                                                        • +3
                                                                                          Там все уродливо, начиная от положения типа слева в определениях, что порождает вывод типа по спирали, и кончая контекстной зависимостью синтаксиса звездочки.

                                                                                          Про спираль тут: http://webhamster.ru/mytetrashare/index/mtb0/1467033248FT6hne92kG

                                                                                          Про контекстную зависимость, думаю, сами знаете, хотя может быть она вас и не напрягает.
                                                                                          • 0
                                                                                            понятие уродливости условно (по польски uroda означает красота), но спорить не буду — хотя предложение других (менее уродливых) обозначений привествуются
                                                                                          • +2
                                                                                            Двусмысленность и нечитаемость. Можно вспомнить сайт-онлайн переводчик сишных выражений. Если начинать с Си — возможно покажется нормальным. Если переходить на него после Ассемблера, как в моем и автора случае — синтаксис в этой части кажется уродливым. Да, не только в части стандарта, скорее в части, что позволяет писать write-only код.
                                                                                            • 0
                                                                                              опыт написания правильных c-шных программ (практика, как критерий истины) говорит. что c дает нормальный код, а плохо писать можно на любом языке… Рекомендую заметки Джэля Спольски, что не повторять его рассуждения.
                                                                                              Насчет перехода с ассемблера не понял ваших проблем.
                                                                                              Нас, в свое время, учили сначала программированию в кодах (то есть даже не ассемблере) и мы смотрели код по дампу памяти. Поэтому любое символизирование было благом, но не только. Использование указателей позволяет мыслить динамическими структурами вместе с пониманием, что любой код может быть данными, а данные кодом.
                                                                                              • +1
                                                                                                опыт написания правильных c-шных программ (практика, как критерий истины) говорит. что c дает нормальный код, а плохо писать можно на любом языке…

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

                                                                                                Насчет перехода с ассемблера не понял ваших проблем.

                                                                                                А нет никаких проблем. Мы говорим о субъективном восприятии синтаксиса.

                                                                                                Использование указателей позволяет мыслить динамическими структурами вместе с пониманием, что любой код может быть данными, а данные кодом.

                                                                                                Разумеется, но это не отменяет
                                                                                                как можно было так уродливо сделать такую простую вещь, и почему эту уродскую реализацию еще и приняли в стандарт
                                                                                              • +2
                                                                                                Да ещё хуже, если с Си начинать. Так-то хотя бы можно отделить мух от котлет: вот — работа с памятью, а вот — сишный синтаксис для работы с памятью, да, он говно, но деваться некуда, надо терпеть. А тут с Си начинаешь, надо одновременно и с памятью учиться, и синтаксис превозмогать. Я с Си начинал, до сих пор глаз дёргается…
                                                                                              • 0
                                                                                                Когда в Си вводили описание типов, то для ускорения сделали хак. Вместо описания типа переменной мы пишем выражение и его результат. int **pp означает, что дважды разыменовывая pp получаем int. Это красиво, для одних и уродливо для других.
                                                                                          • +18
                                                                                            На мой взгляд график в начале статьи неверно интерпретирован. Вполне нормально что нынешние пенсионеры не интересуются IT отраслью и это связано не с биологическим возрастом, а с тем что в их молодости не было IT как класса и интереса к этой отрасли не возникает. Вполне вероятно, что 60-летние пенсионеры через 30 лет будут интересоваться совсем другим.
                                                                                            • +5
                                                                                              Я подумывал об этом, хорошо если так. Но я смотрю на сегодняшных пенсионеров, у которых в молодости была и космонавтика на экранах, и очевидное-невероятное, и наука и жизнь, а они интересуются только лекарствами, коммуналкой и размером пенсий.
                                                                                              • 0
                                                                                                У меня сотруднику за 60, начинал работать еще в КБ с Алексеевым (Каспийский монстр и т.п.). Несколько лет назад освоил программирование на 1С. Работает…
                                                                                                • 0
                                                                                                  Думаю, что те, кого тогда интересовали очевидное-невероятное и наука и жизнь, и сейчас наособицу. Моему отцу 83 года, несколько лет назад при моей поддержке освоил компьютер на уровне текстового процессора, браузера и электронной почты. Не всё получается, но и возраст всё же почтенный. И да, он когда-то выписывал «Науку и жизнь».
                                                                                                  • 0

                                                                                                    А как же домино?

                                                                                                  • 0
                                                                                                    Полностью согласна. Лет 10-13 назад, когда была еще эра КПК, видела деда с КПК, с рюкзаком (с молодежным) и в джинсах. Я еще подумала, вот это да. А в то время еще не вся молодеж была с КПК на ты.
                                                                                                    Так что это дело сугубо каждого. Одни пенсионеры хотят изучать новое и это у них получается. А другим просто это не нужно. Но и опять, это должно быть систематическим изучением. А не то что раз и неожиданно решил заняться программированием. Как говорится, мозг нужно постоянно держать в тонусе. Если перестаешь это делать, то идет своеобразная деградация.
                                                                                                    • +3

                                                                                                      Просто количество выпускаемых программистов удваивается раз в пять лет. (С) Боб Мартин

                                                                                                      • 0
                                                                                                        Количество — не значит качество :)
                                                                                                      • 0
                                                                                                        Согласен, что график будет другим. А откуда этот взят, источник не увидел.
                                                                                                      • +5
                                                                                                        мне 59, коллега, обнимемся
                                                                                                        в компе живу с 1980-го
                                                                                                        • 0

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

                                                                                                          • +7
                                                                                                            чукча читатель, в основном, вот цитаты из резюме

                                                                                                            Закончил Томский институт автоматизированных систем управления и радиоэлектроники.
                                                                                                            Больше 19 лет у меня была своя группа компаний, но ее съели конкуренты.
                                                                                                            В институте в 1980-м первый раз сел за компьютер. После окончания института по распределению работал до 1989 года на военном заводе в опытно-конструкторском бюро, занимался разработкой и модернизацией радиоаппаратуры для атомных подводных лодок, в 1987 собрал свой первый компьютер Радио-86РК. До 92-го года работал в кооперативе инженером-программистом, изготавливал программы на Clipper для сельского хозяйства. С 1992 по 2008 в должности директора ТОО, начинал с поставки компьютеров для Комитета национальной безопасности Казахстана, далее провёл полную компьютеризацию ликеро-водочного завода, коммерческого банка, транспортной инспекции и др. Создал лично и поддерживал в разные годы сайты губернатора, мебельной фабрики, фирмы Посылторг, завода по изготовлению пластиковых окон, автосервиса, интернет-магазина автомобилей, казахстанского землячества в Москве, областной библиотеки, таможенного брокера.
                                                                                                            Все последующие знания приобретены самостоятельно. Здесь не было возможности заниматься чем-то одним и очень глубоко, здесь нужно было заниматься всем – вот хороший пример – контроллер по проведению иммуно-ферментного анализа, встретился один раз в жизни, в городе 2 года искали специалиста, пока не нашли меня, документация на английском, через три дня я составил первую программу и после проведения анализов по этой программе было выявлено и предотвращено распространение птичьего гриппа на птицефабрике.
                                                                                                            Особенно интенсивно программировал в конце 80-х – начале 90-х, в основном на Clipper и C. Сейчас пишу «для сэбэ» роботов ЖЖ на php+mysql, пробавлялся заказами на cs-cart. Сейчас осваиваю андроид под гаджеты. Знаю практически все CMS.
                                                                                                            Линуксоид последние 6 лет.
                                                                                                            Недостатки – медленно работаю из-за скрупулезности и дотошности, сейчас такие не нужны.
                                                                                                            Хотел замутить тему, но не сложилось https://boomstarter.ru/projects/100798/platezhnye_dokumenty
                                                                                                            Написал TDS для высоконагруженных (5 млн хитов в сутки ) проектов (детектор на node.js, админка на yii2).
                                                                                                            Заканчиваю на tf6.ru интернет-радио, там же сделаю веб-телевидение для израильтян, иншаалла.
                                                                                                            Переехал в Россию.
                                                                                                            Такие дела.
                                                                                                            • 0
                                                                                                              1. Зайти на хабр
                                                                                                              2. Найти крутую статью и залипнуть за чтением, попутно ловя себя на аналогиях.
                                                                                                              3. Встретить человека из родного вуза
                                                                                                              4.…
                                                                                                              5. Profit!
                                                                                                              • 0
                                                                                                                Да, ТИАСУР — гигант с тентаклями.
                                                                                                                Какого года издания?
                                                                                                        • +2

                                                                                                          43 года, я просто гораздо меньше стал кодировать, а больше — документировать и тестировать.


                                                                                                          Да и вообще, в основном управляю командой.

                                                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                            • 0
                                                                                                              Так держать! На фрилансе не соскучишься. Хотя более 3 лет назад в нашем «русском» фрилансе как то было веселее (мое мнение).
                                                                                                            • 0
                                                                                                              Передавайте свои знания молодежи, нам передавать особо было некому, учились как могли.
                                                                                                              • +8
                                                                                                                Расскажу как происходит передача знаний на собственном примере.
                                                                                                                Мне за 40 и многое, что описано в статье мне понятно и близко, начиная с изучения ассемблера Z80, ВМ80, i86 (а после PIC, I51 и AVR), заканчивая невозможностью переезда в более крупный город (даже хотя бы в областной центр) без последствий для семьи. Но сейчас не об этом. После 40 вдруг стало появляться желание передавать свои знания молодежи в свободное от основной работы время.

                                                                                                                В центре дополнительного образования города очень обрадовались моему такому желанию, учитывая, что единственному педагогу в сфере техники скоро 80 и он уже 5 лет собирается уйти на давно заслуженный отдых. На радостях предложили 10 часов в неделю за зарплату 3000 рублей в месяц и не понимая, почему мое желание резко поубавилось. После недолгих переговоров, решили, что работа будет сложная и напряженная, а потому нужно сделать 100% надбавки, а это уже целых 6000 рублей в месяц. Ну ладно, заработать там я и не надеялся, хотя преподаватели робототехники в коммерческих кружках на Lego-конструкторах зарабатывают совсем немало.

                                                                                                                Опустим эмоции.
                                                                                                                Помимо написания годового плана занятий мне поставили задачу самостоятельно набрать 2 группы по 25 человек, иначе никакой сложности и напряженности быть не может. Из 50 записавшихся больше половины пришли только на первое занятие и потом пропали. Их родители объяснили это большой загруженностью в школе. Из тех, кто остался больше половины приходят только потому, что родители их отправляют посещать секции, а здесь бесплатно. Есть несколько детей, у которых явно виден интерес и которым хочется передать свой опыт, но если все время уделять только им, остальная масса превратит занятие в неконтролируемый хаос. После полугода занятий руководство потребовало участия детей в конкурсах, и никакие объяснения, что за это время ребенок не сможет сделать поделку, не принимались. Открытым текстом было предложено сделать все самому и написать текст выступления для ребенка. Зарплату напомнить? В конце концов поехал на региональный конкурс в качестве наблюдателя. Что я там увидел? Ту же самую видимость проведения работы с кучей мертворожденных проектов, только чтобы отчитаться, что работа ведется. Я, конечно, дотяну текущий учебный год ради тех единиц, которым интересно, и для которых это может послужить толчком к выбору дальнейшей профессии, как это было у меня, но новую группу в следующем году набирать не вижу смысла.
                                                                                                                Извините за длинный текст, наболело.
                                                                                                                • +1

                                                                                                                  А Вы не думали сделать что-то похожее, но через блог/группу ВК, Khan Academy и что-нибудь codingame.com? На входе будет больше мотивированных студентов.

                                                                                                                  • 0
                                                                                                                    Мысли были, но это совсем другие затраты времени. А начать что-то, и потом бросить ссылаясь на нехватку времени — не мой путь. Может быть еще не созрел для этого…