Вот решил поделиться статьей, оригинал которой я опубликовал у себя на блоге вот здесь…
— Для начала, обычное предупреждение: я не претендую на истину в последней инстанции и то, что я рассказываю, основано лишь на моем персональном опыте. Наверняка в России и СНГ есть фирмы, которые набирают других людей и работают совсем иначе чем те, с которыми мне довелось столкнуться. Чтобы далеко не ходить, приведу в пример фирму, возглавляемую моим научным руководителем в университете профессором Андреем Николаевичем Тереховым. Сейчас он возглавляет вполне успешную фирму, специализирующуюся на выполнении софтверных проектов под заказ, включая и изрядную долю оффшорных проектов от западных заказчиков. Так вот, я уверен, что у него-то как раз все точно поставлено как надо и ребята правильные и все хорошо. К сожалению, с его фирмой мне работать не довелось, а с теми, с которыми мне довелось работать, работали так…
Индивидуальные контракторы
Начну с впечатлений от работы с индивидуальными контракторами – что называется, «свободное копье», «freelancers». Мне приходилось работать как с российскими, так и с американскими индивидуальными контракторами, и я должен признать, что американские тоже не мед. Скажем. с ними тоже случается пропасть на недельку, а потом обьявиться со средней достоверности оправданиями. Конечно, при этом ни один американский контрактор у меня не уходил в запой на месяц. И ни один американский контрактор не начинал сотрудничество с предположения, что я собираюсь его кинуть, и не заканчивал с убеждением, что я – лох и придурок.
Как это ни покажется невероятным, но американские контракторы обычно умеют делать то, за что берутся. Причем это касается не только разработки софта, но и других видов деятельности, например, графики или редактирования текстов. И если американский контрактор не является «звездой» в своей профессии, то он это вполне осознает. И при этом, все равно способен сделать работу. Однажды мне пришлось работать с американским контрактором, которые редактировал мне книгу. Да. он не работал раньше редактором газет и журналов. он закончил гуманитарный колледж плюс какие-то дополнительные курсы, плюс будучи натуральным американцем вполне владел родной мовой от рождения, плюс писательствовал помаленьку, а редактирование было для него просто способом подработать. Он не надувал щек, не втюхивал мне какой он крутой, и его вполне устраивало то, что его оплата не столь высока как у профи с длинным послужным списком и репутацией. А меня вполне устраивало, что он не умничает и не пытается переписать книгу за автора, а просто добросовестно чистит неудачно звучащие места. Он честно сделал свою работу, я честно расплатился и написал ему блестящие рекомендации, после чего мы разошлись взаимно довольные результатом.
Чего-то я обещал рассказать о том, что делают российские контракторы, а взамен стал говорить о том, чего не делают американские… Вам это показалось странным, или вы и так все поняли?
Фирмы
Ну, ладно с ними, с индивидуалами… А как работается с российскими и СНГ-шными софтверными компаниями?
Еще раз повторюсь, я не пытаюсь делать обобщений о всем софтверном бизнесе в России, я лишь говорю о моем собственном опыте. Так что делайте на это поправку. Так вот, основываясь на это самом опыте, мое ощущение что главной проблемой разработки софта в России и СНГ является… фундаментализм. Нет-нет, не религиозный, хотя, конечно, как сказать. Очень многие программисты в России имеют действительно хорошее фундаментальное образование, в том числе и в computer science. И это, несомненно замечательно, если только не превращается в религиозный пунктик.
Российский программист готов днями вылизывать схему базы данных, попутно обьясняя вам почему вы – полный идиот в этом вопросе, даже если у всей системы будет десять пользователей и вам глубоко по барабану производительность базы данных. Российский дизайнер старательно потратит время на то, чтобы антиалиасинг картинки на экране был лучше, чем если бы его сделали в Адобе, даже если картинка выведена «блудливой рукой Остапа» и подлежит замене через две недели. Российский программист всегда пишет сортировку сам, а потом долго и нудно ее отлаживает и оптимизирует. А заказчик, который не понимает зачем это нужно – просто идиот. Российский программист всегда знает что нужно заказчику лучше самого заказчика. Потому что он, российский программист – умный, а заказчик – см. выше. И забабахать пользовательский интерфейс, который требует двух Ph.D. в несмежных областях высшей математики и ядерной физики – это, конечно, круто. А пользователь – он тоже идиот, перебьется.
С другой стороны, рутинное тестирование российскому программисту делать просто «западло», даже перед сдачей проекта. В конце концов, заказчик сам знает, что он хочет, вот пусть и проверяет! И если у российского программиста курсор прыгает из первого поля сразу в третье, минуя второе, то и вообще непонятно, чего тут волноваться. А мышка на что??? В общем, когда вы сообщаете об этом дефекте первый раз, вас вообще не читают. А если читают, делают вид, что такого конфуза с вашей стороны просто не заметили. Если же вы продолжаете настаивать, то российский программист удивленно поднимает брови и продолжает играть на своей волынке. И вообще, такие мелочи как отсутствующие мелкие функции или несоответствие спецификациям российского программиста волнуют мало.
Кстати, позвольте высказать гипотезу об одной из причин дефицита в области тестирования и управления проектами. Во время моих приездов в Россию у меня сложилось ощущение – поправьте, если я неправ – что индустрия издательства компьютерных книг в России изрядно закостенела. Имеется очень небольшое количество издательств, практически захвативших рынок, которые сами контролируются людьми с некоторыми фиксированными и изрядно академическими взглядами на разработку софта. Мне приходилось встречать людей, которые считали что управление проектами – это UML, а тестирование должно автоматически генерироваться из этого самого UML. Я осознаю, насколько криво это звучит, но они действительно что-то в этом роде и утверждали. И похоже, что такие люди имеют авторитет в компьютерной издательской среде. Так что, например, когда у моей жены здесь в Америке вышла книга по тестированию, мы даже и не пытались предложить ее российским издательствам, потому что ни одно из них скорее всего не возьмется за перевод и публикацию, даже несмотря на то, что ничего подобного на российских прилавках я не видел.
На самом деле об этом многие пишут, и многие подобные наблюдения критикуют, как будто от критики глаза начнут видеть что-то другое..., но при этом мало кто пытается понять коренную причину подобных проблем. Лично мне кажется, что в корне большинства этих проблем лежит то, что я в шутку обозвал «фундаментализмом», а в более строгих терминах является фундаментальной разницей в системе ценностей американских заказчиков и российских исполнителей.
Заказчик хочет продукт, который будет удовлетворять потребности пользователей, который будет продаваться. Заказчику все равно будет продукт делать это «по науке» или нет, ему просто надо, чтобы он это делал. Это то, за что заказчик платит деньги.
Российский же исполнитель пытается заниматься искусством и «творить нетленку». Такое ощущение, что общий взгляд на вещи в том, что работать за деньги – это вообще недостойно, даже воровать и то благороднее. Поэтому российский исполнитель творит «вечное» и работает за славу, а уж деньги ему такому славному просто по понятиям и так должны. И те, кто этого не понимают – просто идиоты.
Такая фундаментальная разница в системе ценностей приводит к тому, что в России оказывается много артистов и мало мастеров, по крайней мере в разработке софта. Я и сам не пойму каким образом в нищей пост-перестроечной России сохранился оазис такого «робин-гудского» отношения к работе. Не исключено, что причиной этого является серьезная нехватка программистских кадров. Не исключено, что она связана с тем, что очень многие толковые программисты просто уезжают на Запад, где их быстро приучают творить вечное в свободное от работы время (как, например, я сейчас делаю сидя в книжном магазине с кофе и ноутбуком), после чего российский программист действительно оказывается превосходящим и китайского, и индийского, и американского программиста, часто вместе взятых. За счет чего он обзаводится неплохой зарплатой, домом, парой машин, а в России оказывается на одного программиста призывного возраста меньше. Кстати, подозреваю, что призывной возраст также присутствует в этом уравнении.
В общем, если просуммировать, то основные проблемы разработки софта в России по моему опыту и моим наблюдениям таковы:
— Отсутствие бизнес-фокуса, отсутствие интереса, внимания и опыта в важных областях, не входящих в «фундаментальный» круг, как например, устойчивость к платформе, интуитивность и удобство использования, просто внимания к мелочам.
— Слабые опыт, подготовка и культура тестирования, Quality Assurance и Quality Engineering. Нет, честно, неужто так трудно самим проверить, прежде чем втюхивать заказчику?
— Слабая культура IT/software development менеджмента. Это, конечно, здорово, когда индустрия заполнена яркими выдающимися личностями, но менеджеров, способных справиться с этими яркими выдающимися личностями, явно не хватает. Кстати. эта часть проблемы последнее время стала заметно улучшаться, хотя еще и далека от совершенства.
Вообще-то ничего страшного во всем этом нет. Научимся. Китайцам – сложнее, им еще программировать научиться сначала надо, и то справятся со временем, а уж менеджмент и внимание к деталям бизнес заставит. Но пока что иметь дело с Россией в разработке софта – это как говорят в Америке, изрядный «challenge».
— Для начала, обычное предупреждение: я не претендую на истину в последней инстанции и то, что я рассказываю, основано лишь на моем персональном опыте. Наверняка в России и СНГ есть фирмы, которые набирают других людей и работают совсем иначе чем те, с которыми мне довелось столкнуться. Чтобы далеко не ходить, приведу в пример фирму, возглавляемую моим научным руководителем в университете профессором Андреем Николаевичем Тереховым. Сейчас он возглавляет вполне успешную фирму, специализирующуюся на выполнении софтверных проектов под заказ, включая и изрядную долю оффшорных проектов от западных заказчиков. Так вот, я уверен, что у него-то как раз все точно поставлено как надо и ребята правильные и все хорошо. К сожалению, с его фирмой мне работать не довелось, а с теми, с которыми мне довелось работать, работали так…
Индивидуальные контракторы
Начну с впечатлений от работы с индивидуальными контракторами – что называется, «свободное копье», «freelancers». Мне приходилось работать как с российскими, так и с американскими индивидуальными контракторами, и я должен признать, что американские тоже не мед. Скажем. с ними тоже случается пропасть на недельку, а потом обьявиться со средней достоверности оправданиями. Конечно, при этом ни один американский контрактор у меня не уходил в запой на месяц. И ни один американский контрактор не начинал сотрудничество с предположения, что я собираюсь его кинуть, и не заканчивал с убеждением, что я – лох и придурок.
Как это ни покажется невероятным, но американские контракторы обычно умеют делать то, за что берутся. Причем это касается не только разработки софта, но и других видов деятельности, например, графики или редактирования текстов. И если американский контрактор не является «звездой» в своей профессии, то он это вполне осознает. И при этом, все равно способен сделать работу. Однажды мне пришлось работать с американским контрактором, которые редактировал мне книгу. Да. он не работал раньше редактором газет и журналов. он закончил гуманитарный колледж плюс какие-то дополнительные курсы, плюс будучи натуральным американцем вполне владел родной мовой от рождения, плюс писательствовал помаленьку, а редактирование было для него просто способом подработать. Он не надувал щек, не втюхивал мне какой он крутой, и его вполне устраивало то, что его оплата не столь высока как у профи с длинным послужным списком и репутацией. А меня вполне устраивало, что он не умничает и не пытается переписать книгу за автора, а просто добросовестно чистит неудачно звучащие места. Он честно сделал свою работу, я честно расплатился и написал ему блестящие рекомендации, после чего мы разошлись взаимно довольные результатом.
Чего-то я обещал рассказать о том, что делают российские контракторы, а взамен стал говорить о том, чего не делают американские… Вам это показалось странным, или вы и так все поняли?
Фирмы
Ну, ладно с ними, с индивидуалами… А как работается с российскими и СНГ-шными софтверными компаниями?
Еще раз повторюсь, я не пытаюсь делать обобщений о всем софтверном бизнесе в России, я лишь говорю о моем собственном опыте. Так что делайте на это поправку. Так вот, основываясь на это самом опыте, мое ощущение что главной проблемой разработки софта в России и СНГ является… фундаментализм. Нет-нет, не религиозный, хотя, конечно, как сказать. Очень многие программисты в России имеют действительно хорошее фундаментальное образование, в том числе и в computer science. И это, несомненно замечательно, если только не превращается в религиозный пунктик.
Российский программист готов днями вылизывать схему базы данных, попутно обьясняя вам почему вы – полный идиот в этом вопросе, даже если у всей системы будет десять пользователей и вам глубоко по барабану производительность базы данных. Российский дизайнер старательно потратит время на то, чтобы антиалиасинг картинки на экране был лучше, чем если бы его сделали в Адобе, даже если картинка выведена «блудливой рукой Остапа» и подлежит замене через две недели. Российский программист всегда пишет сортировку сам, а потом долго и нудно ее отлаживает и оптимизирует. А заказчик, который не понимает зачем это нужно – просто идиот. Российский программист всегда знает что нужно заказчику лучше самого заказчика. Потому что он, российский программист – умный, а заказчик – см. выше. И забабахать пользовательский интерфейс, который требует двух Ph.D. в несмежных областях высшей математики и ядерной физики – это, конечно, круто. А пользователь – он тоже идиот, перебьется.
С другой стороны, рутинное тестирование российскому программисту делать просто «западло», даже перед сдачей проекта. В конце концов, заказчик сам знает, что он хочет, вот пусть и проверяет! И если у российского программиста курсор прыгает из первого поля сразу в третье, минуя второе, то и вообще непонятно, чего тут волноваться. А мышка на что??? В общем, когда вы сообщаете об этом дефекте первый раз, вас вообще не читают. А если читают, делают вид, что такого конфуза с вашей стороны просто не заметили. Если же вы продолжаете настаивать, то российский программист удивленно поднимает брови и продолжает играть на своей волынке. И вообще, такие мелочи как отсутствующие мелкие функции или несоответствие спецификациям российского программиста волнуют мало.
Кстати, позвольте высказать гипотезу об одной из причин дефицита в области тестирования и управления проектами. Во время моих приездов в Россию у меня сложилось ощущение – поправьте, если я неправ – что индустрия издательства компьютерных книг в России изрядно закостенела. Имеется очень небольшое количество издательств, практически захвативших рынок, которые сами контролируются людьми с некоторыми фиксированными и изрядно академическими взглядами на разработку софта. Мне приходилось встречать людей, которые считали что управление проектами – это UML, а тестирование должно автоматически генерироваться из этого самого UML. Я осознаю, насколько криво это звучит, но они действительно что-то в этом роде и утверждали. И похоже, что такие люди имеют авторитет в компьютерной издательской среде. Так что, например, когда у моей жены здесь в Америке вышла книга по тестированию, мы даже и не пытались предложить ее российским издательствам, потому что ни одно из них скорее всего не возьмется за перевод и публикацию, даже несмотря на то, что ничего подобного на российских прилавках я не видел.
На самом деле об этом многие пишут, и многие подобные наблюдения критикуют, как будто от критики глаза начнут видеть что-то другое..., но при этом мало кто пытается понять коренную причину подобных проблем. Лично мне кажется, что в корне большинства этих проблем лежит то, что я в шутку обозвал «фундаментализмом», а в более строгих терминах является фундаментальной разницей в системе ценностей американских заказчиков и российских исполнителей.
Заказчик хочет продукт, который будет удовлетворять потребности пользователей, который будет продаваться. Заказчику все равно будет продукт делать это «по науке» или нет, ему просто надо, чтобы он это делал. Это то, за что заказчик платит деньги.
Российский же исполнитель пытается заниматься искусством и «творить нетленку». Такое ощущение, что общий взгляд на вещи в том, что работать за деньги – это вообще недостойно, даже воровать и то благороднее. Поэтому российский исполнитель творит «вечное» и работает за славу, а уж деньги ему такому славному просто по понятиям и так должны. И те, кто этого не понимают – просто идиоты.
Такая фундаментальная разница в системе ценностей приводит к тому, что в России оказывается много артистов и мало мастеров, по крайней мере в разработке софта. Я и сам не пойму каким образом в нищей пост-перестроечной России сохранился оазис такого «робин-гудского» отношения к работе. Не исключено, что причиной этого является серьезная нехватка программистских кадров. Не исключено, что она связана с тем, что очень многие толковые программисты просто уезжают на Запад, где их быстро приучают творить вечное в свободное от работы время (как, например, я сейчас делаю сидя в книжном магазине с кофе и ноутбуком), после чего российский программист действительно оказывается превосходящим и китайского, и индийского, и американского программиста, часто вместе взятых. За счет чего он обзаводится неплохой зарплатой, домом, парой машин, а в России оказывается на одного программиста призывного возраста меньше. Кстати, подозреваю, что призывной возраст также присутствует в этом уравнении.
В общем, если просуммировать, то основные проблемы разработки софта в России по моему опыту и моим наблюдениям таковы:
— Отсутствие бизнес-фокуса, отсутствие интереса, внимания и опыта в важных областях, не входящих в «фундаментальный» круг, как например, устойчивость к платформе, интуитивность и удобство использования, просто внимания к мелочам.
— Слабые опыт, подготовка и культура тестирования, Quality Assurance и Quality Engineering. Нет, честно, неужто так трудно самим проверить, прежде чем втюхивать заказчику?
— Слабая культура IT/software development менеджмента. Это, конечно, здорово, когда индустрия заполнена яркими выдающимися личностями, но менеджеров, способных справиться с этими яркими выдающимися личностями, явно не хватает. Кстати. эта часть проблемы последнее время стала заметно улучшаться, хотя еще и далека от совершенства.
Вообще-то ничего страшного во всем этом нет. Научимся. Китайцам – сложнее, им еще программировать научиться сначала надо, и то справятся со временем, а уж менеджмент и внимание к деталям бизнес заставит. Но пока что иметь дело с Россией в разработке софта – это как говорят в Америке, изрядный «challenge».