Programming Stone по-русскиДостаточно забавное название, как мне кажется. Собственно, "programming stone" это запись нескольких дней лекций Алана Картера, посвященных проблемам программирования "вообще".
Я уже распространялся на эту тему, но хочется еще раз подчеркнуть: создание больших программных комплексов обычно идет не так, как хочется. Собственно, анализируя этот странный факт, Йордон в "Пути камикадзе" дошел до того, что, фактически, назвал все проекты безнадежными, а успешное завершение какого-либо проекта --- невероятной удачой. То есть, не "из-за", а "вопреки" стараний программистов. Но все равно хочется понять, почему проекты развиваются именно так, а не иначе... Как мне кажется, традиционно существуют две крайних точки зрения на развитие программного проекта. Если кратко, то первая заключается в разработке формальностей, использование которых позволят программистам создать что-либо, отдаленно напоминающие требуемое. Эти формальности обычно сводятся к бюрократизму и, в общем-то, к успеху не приводят (как мне кажется). Другая крайность приравнивает программистов к вольным художникам, которые как-то что-то пишут на одном дыхании, а потом предаются созерцанию... И хотя лично мне вторая крайность как-то ближе, я все равно считаю, что в чистом виде это тоже не сработает. Наверняка, можно найти где-нибудь удачный пример формального контроля, не стесняющего программиста, но разговор не о том. "Programming stone" является попыткой объяснить, почему "свободный художник" это "хорошо". Смею вас заверить, читать этот текст очень интересно. Нет, действительно --- там содержится большое количество здравых идей и я рекомендую с ними ознакомиться... но. Все дело в том, что в большинстве своих случаев "свободные художники" достаточно оригинальные люди. У них свои взгляды на жизнь или работу и спорить с ними по этому поводу часто бывает сложно по причине уж очень большой самоуверенности, часто подкрепленной реально выполненными (успешно выполненными) проектами. Перенос того, что и как может сделать "свободный художник" на всех остальных вряд ли даст что-либо еще "всем остальным", просто потому, что это очень лично и, хотя обычно такими секретами охотно делятся, к ним надо относится с особенным скептицизмом. Собственно, точно так же и с "Programming stone": он достаточно интересен, но принимать все написанное как руковдоство к действию бессмысленно. С другой стороны, "Programming stone" является великолепным примером хорошей и конструктивной критики другой точки зрения, которая навязывается сторонниками формализации процесса программирования. Собственно, очень хорошо показано, почему обычно не работает использование новейших методологий или бюрократического подхода. Тут очень сложно к чему-либо придраться и во многом лично я согласен с "Programming stone", но в тексте нигде нет критики противоположенной точки зрения! Из этого может последовать навязчивый вывод, что поголовный перевод всех в "картостроителей" (как их назвали в русском переводе, я буду придерживаться этого термина) изменит текущую ситуацию в программировании и качестве программного обеспечения.
Надо понимать, что не изменит. Тому есть две причины, первая из которых, главная, заключается в том, что "картостроителем" нельзя сделать человека извне. Я не исключаю, что люди могут кардинально изменять свои взгляды на жизнь, или просто не понимать своего "Я", но никто извне не заставит "паковщика" (еще один термин из русского перевода; все-таки, стоило выбрать что-либо более блазгозвучное) стать "картостроителем" или наоборот. Следовательно эти две категории людей (так поделенные авторами "Programming stone") уже существуют и поэтому сложно представить себе проект с большим количеством задействованных участников, каждый из которых является "картостроителем". Мне могут возразить, например, что "картостроитель" лучше "паковщика" и в подобных ситуациях следует назначать на руководящие должности "картостроителей", а "паковщиков" заставлять выполнять "черную работу". Тоже неверно: не факт, что "картостроитель" будет руководить лучше "паковщика"! Все дело в том, что руководитель вообще не обязан сам чего-то придумывать, он должен принимать решения. А решения он может получать (в больших количествах) от своих советников и помошников, и в его задачу входит выбрать среди всех решений самое приемлимое. Как он будет при этом его выбирать, основываясь на формальной системе, своих чувствах или обращению к святому духу, не суть важно: главное, чтобы решение было правильным. Собственно, тут я вплотную подошел к второй причине. А почему так навязчиво кажется, что "картостроитель" лучше? Хочется отметить, что среди людей, которых я знаю лично, есть один, за которым я могу признать все мыслимые таланты (просто потому что в нем сложно разобраться), но который при этом вызывает настолько противоречивые эмоции среди остальных людей, что те готовы его чуть-ли не придушить. Характер такой. Воспитание, опять же. Но я думаю, что если ему дать интересную задачу, посадить куда-нибудь отдельно от остальных, то он ее как-то сделает. Но у меня нет уверенности, что сделает точно так как надо (то есть, сможет довести до законченного вида) и то, что возможные сотрудники не взвоют раньше просто от того, что он где-то рядом ходит. Хотя это тоже крайность. То есть, "Programming stone" является великолепной критикой "паковщиков", но о "картостроителях", по сути, не говорится ничего. Это мне хотелось бы отметить. Вообще, текст сам по себе очень самоуверен --- но это общая черта талантливых людей. Если это вас коробит, то лучше не расстраиваться. Несколько слов следует сказать о переводе. Сначала хочется выразить благодарность Сергею Козлову, который взял на себя этот труд и сделал доступным текст "Programming stone" многим программистам, которым тяжело читать по-английски. Но с другой стороны... если есть возможность, то лучше читать оригинал. Потому что перевод достаточно корявый, неровный, а местами просто сомнительный. РезюмеТаким образом, мне очень понравился текст "Programming stone" и я рекомендую ознаокмиться с ним всех, кто задумывается о том, как организовать работу группы программистов лучше. При этом, конечно же, нужно помнить про здоровый скептицизм.
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
© 2000-2008, Andrey L. Kalinin mailto:andrey@kalinin.ru |
|