среда, мая 16, 2007

Ответ на статью: Путь без конца или Дао русского программиста

Я сегодня выступаю в не очень привычном для себя жанре. Этот пост - ответ.

Я думаю что Максима Кононенко, также известного как Mr.Parker знают все. Ну если и не знают, то слышали про него уж точно очень многие. Он - создатель популярного сайта Владимир Владимирович™, известный блоггер, сетевой писатель и журналист. А также программист. Вот я как раз про это. Некоторое время назад вышел пост Максима под названием: Путь без конца или Дао русского программиста. Именно этот пост я и хочу здесь разобрать. Так что уж не обессудьте, для того чтобы читать дальше придётся сначала сначала прочитать исходный пост.

(замечание: данный ответ также опубликован и как комментарий к самому посту Максима - только без вступительной части)

К вопросу о терминологии

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

  • Руководство разных уровней
  • Бухгалтер
  • Программист
  • Тестировщик
  • Системный администратор
  • Менеджер проекта - подробнее об этой роли я писал вот в этой статье
  • Менеджер продукта - об этой роли я также писал вот в этой статье
  • Специалист по продажам
  • Специалист по рекламе
  • Специалист по связям с общественностью
  • Секретарь
  • Специалист технической поддержки
  • ....
В этот список можно добавить ещё очень много разных "ролей" и я специально не стал нумеровать роли. Только на конкретном примере можно попытаться сказать какая роль "важнее" и я, честно говоря, думаю что не всегда получится. Для того чтобы добиться успеха очень часто бывает важно правильное исполнение ВСЕХ ролей. И при этом совершенно неважно сколько людей исполняет эти роли - важно чтобы все действия, которые нужно исполнять в рамках роли исполнялись эффективно. Мне кажется что многие из упомянутых в посте Максима проблем связаны в основном с тем, что часто бывает так что на человека, исполняющего роль программиста, также возлагаются задачи исполнения и других ролей. С чем не каждый и не всегда может справиться.

Поэтому, на мой взгляд, не очень важно что программисты не умеют продавать программы - это не их задача.

О предмете программирования

Я хочу остановиться на вопросе о предмете программирования. И я прочёл (не буквально, а "увидел", "интерпретировал") в самом посте, а также, кажется в каких-то ответах автора к комментариям на LiveJournal (затрудняюсь их сейчас здесь привести) мнение о том, что программирования как предмета не существует. То есть мне показалось, что автор утверждает: нет никакой "computer science", есть несколько областей математики, плюс некоторые ремесленные приёмы.

Я увидел эту мысль и в утверждениях что "нигде программированию не учат 5 лет" и в том что "
что программирование - не ахти какое сложное занятие".

Я же убежден что "программирование имеет свой предмет, не сводящийся ни к конкретным языкам и системам, ни к методам построения быстрых алгоритмов" (Шень А. "Программирование: теоремы и задачи"). Попробую объясниться.

Дело в том, что программирование, также как и математика, например или к примеру, упоминаемая автором медицина - это очень "широкая" дисциплина. Человек, пишущий скажем компилятор - программист, человек пишущий "графический движок" игры - тоже программист, пишущий plug-in к браузеру Firefox - тоже, пишущий адресную книгу для сотового телефона тоже, но и пишущий на php формочку, чтобы отправить письмо со своего веб-сайта - тоже. Есть масса разных ответвлений и уровней. Как и везде - есть сложные части, а есть простые, есть требующие больших знаний в "сопутствующих" областях, а есть меньших.

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

Остальное

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

P.S. Вот ещё что хотелось сказать. Ведь Максим Кононенко написал ещё и рассказ Покемон. Удивительно что один и тот же человек написал две такие совершенно разные [по духу] работы.

1 комментарий:

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

Если говорить про Покемона, таки да, публикации разные, но не противоречащие друг другу. Я, вот например, понимаю, что могло сподвигнуть написать Покемона, но не понятно - что явилось предпосылкой Дао? хотя..
покемона мог написать человек который был таким задолбаным, ну или по крайней мере видел таких, а Дао - человек который хоть и помнит такое время, но щас уже в другой сфере живет, которая и оказывает на него влияние и формирует суждения, с точностью до его старого опыта..
ЗЫ
все остальное можно обсуждать оочень долго, в целом с автором "ответа на Дао.." я согласен. Вот..