?

Log in

No account? Create an account
 
 
16 February 2009 @ 12:02 pm
Записки программиста.  
Где программисты лучше.

Много-много лет у меня тянется полу-шутливай спор с Толей Усковым на тему, «где программисты лучше» - «у нас» (что для мены давно стало «у них» и, по-видимому, «было») или в Америке (кстати, Толя, где ты? Очень давно тебя не слышал.).
Я больше склонялся, к тому, что в Америке – хотя, иногда, расстроившись от какого-нибуди общения с американскими программистами думал «нет, пожалуй у нас/вас».  Хочу оговориться, что программистами я называю программистов в терминологии А.С.Кронрода: в этом смысле этот термин нигде почти уже применяется. То есть не людей, наученных профессионально (иногда, виртуозно) пользоваться теми или иными инструментами (как то языки программирования, базы данных или еще что), а, скорее инженеров-исследователей специализирующихся или на решении задач с использовании компьютеров (с значительной долью программирования) или на создание упомянутых выше инструментов. Это определение отлично, скажем, от определения Миши Донского, который декларировал окончание этой профессии.

А иногда (как и сейчас) я задумавался: а можно ли вообще, по честному, сравнить мое поколение (+-мое, то есть все с кем я существенно соприкосался) «русских» - поколение программистов вырасших в СССР с неким обобщенным образом «американских программистов» - вогникшем на бызе «американских» - то есть нех не «русских», с которыми мне привелось работать или в достаточной степени профессионально общаться за время моей жизни в Америке.

И, хотя я иногда и впадаю в отчаянье общаясь с некоторыми местными программистами, Россия (я так для простоты буду называть «мое» советское поколение программистов) все же конкуренции в таком сравнении не очень выдерживает.

Прежде всего, в СССР я работал в одном и самых сильных коллективов. Если оценивать не только сильнейших но еще и их концентрацию, то, возможно, беспрецендентно силлном (по крайней времени, в определенный период). А зналЖ или читал/слышал, а часто был лично знаком – с значительным процентов выдающихся программистов. А здесь в Америке – ничего похожего. Работаю – с кем придется, количество людей стоящих (неправильное слово: нихочу никого обидеть – не стоящих, а всего лишь таких, с которыми мне хотелось бы и.или было бы интересно профессионально общаться) – в сотни случаев больше. Првда появилось больше возможностей заочного общения – через интернет, но все равно «круг охвата» значительно меньше и гораздо более случайный (если не средний), по сравнению с советскими «сливками». Так что сравнение происходид между лучшими и некоторой, в значительной степени, случайной выборкой из гораздо большего множества. Это сравнимо с мнением немалого числа «русских» емигрантов, что американские школы гораздо хуже: щни пытаются сранивать московскую 22/7/57/... школу с первой попавшейся американской школой местечка, которое они выбирали, чтобы было по средствам, но по возможности, безопасно было жить...

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

Практика программирования (Гутер Арлазаров и Усков).
Программирование в содержательных бобознасчениях (Брудно).
Сборник под редакцией А.П.Ершова про алфа транслятор (и некоторые их же препринты, которые мне попадались).
Публикации о языке Рефал (Турчин, С. Романенко и др.).
Тоненькая книжечка про Алгол (А.Л.Брудно).
Наверное, я что-то еще забыл.

Еще соображение в пользу Америки: еще одна полу-случайная выборка. Пару лет назад я интервьюировался в Google (куда не попал – работаю сейчас в Yahoo). Googlе не случайное американское место: там прикладывают громадные усилия, чтобы заманить хороших работников. Так вот, среди людей, с которыми я общался (оеоло 8) было два (!) человека с которыми общаться для меня было интересно (независимо от факта интервью). Один был молодой (сравнительно) доктор из Стенфорда – его звали как-то по-французски, кажется Жан-Клод, а фамилию я не помню. Первый раз он интервьюировал меня по телефону, а потом пригласил меня на ланч – это второе мобщение было, по гугловской традиции, не интервью, а беседа, не имевшая никаких последствий. Так вот – удовольствие от этой беседы запомнилось. Мы быстро нашли общие интересы (их было несколько) и успели минут за двадцать обменяться по ним мнениями – довольно близкими.
Вторым был Алекс Мартелли – человек постарше, приехавший не так давно из Италии. Я помню, лет 10 назад, спорил с ним немножко в Usenet-е о целесообразности некоторых расширений С++, и, возможно о чем-то еще. Это было довольно жесткое интервью, и, поэтому, гораздо менее интересно. Но разговагивать все равно было приятно и интересно: не так часто удается мне содержательно поговорить с кем-нибудь о некоторых узких проблемах объектно-ориентированных языков программирования.
Правдо надо честно сознаться, что среди остальных интервьюэров один или два были довольно серыми...

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

1. - Упоминавшияся мною «ремесленная» тенденция: напор на профессиональное применение инструментов и методик. Иногда это доходит до абсурда: в одной компании, где я работал не так давно (кстати, это были в основном, русские, учившиеся в России), считалось клевым (правильный перевод для cool? :-) ) использовать singletons (C++). И люди, не очень понимая зачем это (хотя хорошо понимая что это такое и как устроено) понатыкали их всюду, гда нужны были глобальные переменные (возможно еще, им в коллежде снижали оценку за глобальные переменные и goto ). А так как порядок инициализации не всегда работал правильно – в main() вставили фиктивные обращения к этим синглетонам... (вообще, немало вреда наделала, вообще-то очень неплохая, книга Gamma et. аl.).
Это вообще один из признаков ремесленного подхода: меньше думать, больше делать (да еще и «как учили»).

2. – Отсутствие или очень слабая математическая культура. Здесь в коледжах часто выбирают или математику или computer science. То что программистам нужна математика, притом, фундаментальная (особенно опыт, тренировка понимания, оперирования и доказательств математических фактов, хотя порой очень полезны и собственно знания) – понимают мало.

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

Все – пора закругляться. Точного ответа не получилось, но склоняюсь я все-таки в пользу Америки. Правда, опять же в недавнем прошлом, маня очень приятно удивили своей квалификацией и способностями двое русских молодых ребят, не из Москвы, которых я взял в свою микро-группу – несмотря на то, что мы работали на расстоянии, не видев друг друга и со сдвигом во времени в 11 часов!
 
 
 
Fima F.wet_kimono on February 18th, 2009 04:50 am (UTC)
.