среда, 1 сентября 2010 г.

[life; work] А ведь и со мной через несколько лет будет так же

За девять лет работы в Интервэйл раза четыре доводилось собеседовать программистов намного (больше чем на 10, а иногда и на 30 лет) старше меня. В одном случае сам соискатель решил с нами не связываться, а в остальных отрицательные ответы давал я. Старался быть объективным.

Конечно, от возраста абстрагироваться невозможно совсем, поскольку есть такое дело, как “глаза горят”. У молодых горят чаще и ярче. Молодого проще увлечь идеей, которая выстрелит разве что лет через пять-шесть. Меня и самого пятнадцать лет назад так заарканили. С опытными людьми такие вещи практически не проходят. Вот предложи мне сейчас броситься с головой в какой-нибудь прожект (вроде SObjectizer-а, только совсем в другой области) и я буду мало того, что сильно думать, так еще и изначально скептически этой затее относиться. Так мне еще 37, а не 47 и уж тем более не 57.

В общем, фактор возраста в моих отказах, наверняка присутствовал. Но я очень надеюсь, что он был весьма незначительным. Главной составляющей все-таки была техническая часть. А она оказывалась далеко не на высоте. Моя команда на C++, не на Java программирует. C++ технических ошибок не прощает. Поэтому лучше перестраховаться и не взять человека, чем потом пытаться заставить хоть как-то задышать C++ный говнокод (опыт, опять же, собственный).

Тем не менее… Осадочек-то остается. Лет через 10-15 на собеседованиях и я буду выглядеть так же. И какой-нибудь молодой орел (возможно даже гораздо более толковый, чем я в его годы) будет смотреть на меня и думать: “Ну и что мне с тобой делать, дядька?”

Почему-то вспомнилось (это эпитафия на одной из могил Александро-Невской Лавры):

Прохожий, бодрыми ногами
И я ходил здесь меж гробами,
Читая надписи вокруг,
Как ты сейчас мою читаешь.
Намек мой понимаешь?
Прощай же, до свиданья, друг.

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

18 комментариев:

buffovich комментирует...

Недавно разговаривал с зам. начальника XXX. Да. Выходец из НИИ с закалкой Фортом и Ассемблером.

Евгений Охотников комментирует...

Дело не в том, какая закалка. Дело в том, насколько человек способен адаптироваться к современным реалиям.

Я боюсь того, что я буду более-менее адаптирован к реалиям лет через 10-15, но меня будут отфутболивать за то, что кому-то покажется, что это не так.

имя комментирует...
Этот комментарий был удален автором.
buffovich комментирует...

От того, что не знаешь что такое Glassfish, Tomcat, .NET WCF, Silverlight, все паттерны проектирования со всё появляющимися новыми, Enterprise Network Connector (в 90-х просто сокет - для сильно умных - BSD сокет), Flexible App Collaboration Environment (в простонародии - IPC). ))

Если я правильно понял твою мысль - то я с нею согласен.

имя комментирует...

и что? вот мне тоже 37, и только в последние годы я почувствовал в себе кое-какие сил
99; не просто адаптироваться к реалиям, а изменить их

(впрочем, знаний еще стоит подгрести)

дальше -- эмоциональный braindump с вкраплениями логики

я и тебе это предлагаю -- есть куча опыта, которую можно осмыслить и выдать результат -- а именно те места с++, что надо улучшить; наборчик таких юз кейсов (ну или просто кейсов) помог бы сделать *хороший* язык поверх с++

вот, например, емнип в SObjectizer-е принято решение идентифицировать агентов строками -- емнип это имеет серьезные отрицательные стороны по проверке во время компиляции, но вероятно полноценное запихивание через название класса привело бы к синтаксической избыточности -- какой именно?

Как можно было бы изменить с++, чтобы таковой избыточности не было?

Как можно было бы изменить с++, чтобы компилятор мог статически проверять полезные вещи несмотря на то, что в SObjectizer-е принято решение идентифицировать агентов строками?

Какие полезные вещи надо портировать из других языков (не просто их названия, а четкое описание в переложении к с++, можно с обильной копипастой из источников, это разрешающих)?

Как сделать так, чтобы хотя бы мелкие задачи (типа чего-то о РОРЗ что ты описывал в блоге) решались за то время, что кажется необходимым на их решение (мне кажется, тут надо опять улучшить язык)?

Каковы реально досаждающие проблемы с++, каковы воркараунды и в чем их недостатки?

Это консолидация опыта во что-то полезное -- т.е. что-то упакованное и автоматизируемое.

А теперь про "закалку асмом и фортом". Опыт сам по себе имеет тенденцию обесцениваться -- допустим, на современных процах, не зная про conditional move, хорошоий асм не написать, да и вообще компиляторы получше человека научились асму (ну не всему, ладно). А был бы у этого чувака хитрый макроассемблер с оптимизацией (или хитрый форт с оптимизацией), "знающий" его приемы -- вполне возможно щас бы он управлял коллективчиком, который писал бы на нем.

Теперь насчет реализации. "Кто будет реализовывать и насколько это будет сложно реально юзабельно". Тут большая тема, как-нить изложу, но вкратце

1. я обязательно буду реализовывать (возможно как кривоватую, так и обязетельно полноценную версию), но *никаких* обещаний по объему и срокам не даю

2. с++ его тьюринг-полными шаблонами позволяет тупому макропроцессору "заюзать" систему типов с++; несмотря на жутко сложную грамматику с++ много чего (возможно неточно) можно выцепить (с о
95;ень редкими ошибками) опять довольно простыми способами типа рег. выражений

3. ну и полноценная версия -- это приятный язычок поверх с++, умеющий подцеплять любой плюсовый код, в т.ч. шаблоны. Без такого язычка имхо с++ и дальше будут загибаться.

buffovich комментирует...
Этот комментарий был удален автором.
buffovich комментирует...

Я конечно понимаю, что я полный стоматолог в микрохирургии глаза, но всё-таки не могу не высказать одну индуцированную предыдущим постом и моими долгими аналитическими изысканиями идею:

А почему бы не возвратиться к идеи SCADA Objectizer. Написать свой DSL с возможностью >>двухстороннего<< интерфейса с другими языками (C , C++) посредством каких-нибудь стандартных библиотек (libffi). На мой взгляд годная бы вещь получилась.

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

имя комментирует...

> Написать свой DSL с возможностью >>двухстороннего<< интерфейса с другими языками (C , C++)

По-моему, DSL сам по себе лишен смысла, смысл есть только в embeddedDSL. То есть строить DSL внутри какого-то удобного языка.

Насчет двустороннего интерефейса -- это однозначно хорошо и необходимо, но будут ли по этому интерфейсу "проходить" шаблонные классы например?

имя комментирует...

хотя моя реакция даже на "DSL персонально только для SObjectizer" все равно была бы положительная -- был бы интересный объект для изучения и рассмотрения сильных и слабых сторон

Евгений Охотников комментирует...

@buffovich:

>Если я правильно понял твою мысль - то я с нею согласен.

Скорее дело не в незнании, что такое Glassfish. А в том, что с возрастом не будет в голосе пиетета перед каким-нибудь очередным Ultra-Mega-Super-Puper-Glassfish.

Евгений Охотников комментирует...

@имя:

> и только в последние годы я почувствовал в себе кое-какие сил
99; не просто адаптироваться к реалиям, а изменить их


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

Евгений Охотников комментирует...

@buffovich:

>А почему бы не возвратиться к идеи SCADA Objectizer. Написать свой DSL с возможностью >>двухстороннего<< интерфейса с другими языками (C , C++) посредством каких-нибудь стандартных библиотек (libffi). На мой взгляд годная бы вещь получилась.

Этот разговор в данной теме уже оффтопик. Мы продолжим его как-нибудь позже.

Rustam комментирует...

Это первые признаки того что психологи называют "кризис среднего возраста", говорят самый страшный у мужиков :)

Евгений Охотников комментирует...

@Rustam: думаю, что у меня первый яркий принак обнаружился, когда я сильно увлекся дартсом. Для меня самого это было удивительно, пока я не понял, что это тот самый кризис подобрался -- захотелось самому себе доказать, что я еще чего-то могу добиться. Пусть в дартсе, а не с новой женой на 15 лет моложе меня :)))

Rustam комментирует...

Дартс и даже новая жена понятно, тут людей вот как http://www.rsdn.ru/forum/job/3942934.flat.aspx#3942934 колбасит :)

Евгений Охотников комментирует...

>тут людей вот как http://www.rsdn.ru/forum/job/3942934.flat.aspx#3942934 колбасит :)

Был у меня знакомый, который долго ремонтами занимался (классно, кстати говоря, делал). Потом плюнул на все и ушел в торговую сеть по дистрибьюции кофе и чая.

Rustam комментирует...

Ну в 90-ые резкие смены работы практически нормой были, я и сам например каменщиком и штукатуром немало поработал :)

Евгений Охотников комментирует...

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

А в 90-е да, было мрачно временами.