Jun. 7th, 2010
Фреймворкизм
Jun. 7th, 2010 12:23 pmНа прошлой неделе в конторе на которую я нынче работаю была куча собраний. Много говорильни. И я кое что полезное вынес из этого всего для себя.
Знаете что происходит с программистами когда их опыт программирования достигает некой кондиции?
Сейчас расскажу. Но сперва напомню о водителях. Самый опасный стаж для водителя - год. Когда вы проездили за рулём год у вас складывается ощущение уверенности в себе, навыка, готовности к неожиданностям. Ложное ощущение. Права такова что проездив за рулём год вы скорее всего не сталкивались ещё ни разу с реальными обстоятельствами в которых от вас правда потребуется что-то экстраординарное, большее чем справиться с маневрированием при параллельной парковке. Но ведь год - это же целый год. Это же опыт.
Вот так опыт делает из водителя опасную фигуру на дороге. Годовой опыт скрывает от него реальную опасность. Он-то сам за себя уверен что он ого-го какой уже водила. А вот они все вокруг чё попало за рулём делают, все эти неумехи рулящие куда попало.
Вот теперь о программистах.
У каждого программиста наступает в жизни стадия фреймворкизма. Это такая стадия на которой он решает что умеет уже программировать и знает как надо это делать. И он решает что всех вокруг надо этому научить. Ровно также как годовалый водила уверен что именно он едет как надо, а все вокруг чёпопало вытворяют. Также и программист в стадии фреймворкизма уверен в том же самом. Это именно он знает как правильно. Как надо и как лучше.
Как называть переменные, где фигурные и прочие скобки должны быть, как правильно строить ирерархии классов и как организоваывать очереди сообщений. Всё знает.
Знание всего - большая отчетственность. И программист в стадии фреймворкизма берёт её на себя. Всю полноту ответственности за то как всё надо правильно организовать и всё правильно построить. Он начинает работать над своим фреймворком.
ФРЕЙМВОРК! Форева! Ура!
И вот волшебным образом программист уже не производит вообще никакого конечного продукта.
Он занят теперь более важным делом - строительством правильного фреймворка. Обучением всех как правильно надо программировать. Читает лекции. Даёт уроки. Личным примером показывает как надо. Становится настоящим фреймворкером.
Если в коллективе обнаруживается несколько фреймворкеров, то коллектив вообще перестаёт что-либо производить. Вся деятельность превращается в упражнения по правильной организации процесса юнит-тестирования, документирования, делигации прав, определения порядков обсуждения и утверждения состава структур данных и интерфейсов. Диаграммы производятся как обои на бумажной фабрике. Устанавливаются Вики и всякие кодо-вспомогательные средства позволяющие ещё быстрее и эффективнее находить зависимости между различными частями кода. Каждый фрагмент экспериментального кода подвергается глубочайшему анализа на предмет покрытости процедурами тестирования, на предмет цикломатической комплексности, связности, консистенотности, документальности, распределённости, ре-юзабильности, юзабильности, и т.д. и т.п. Вобщем хоть святых выноси.
Суть же происходящего в том что вместо программного продукта которым кто-то будет пользоваться теперь коллектив производит КОД. Код как конечный продукт. Код этот никто кроме самого этого коллектива никогда само собой не увидит, но он уже является предметом истиной гордости и экземпляром чистого искусства.
Примечательно что фреймворкеры патологически глухи. Они могут только вещать. Говорить, учить, издавать стандарты и правила. Слышать о реальных задачах, примерах и проблемах они не могут. Не до того. Они только проповедуют правильный подход который сам собой автоматически решит все проблемы.
Реальную же работу фреймворкеры делать не берутся. Это ниже их. Кнопки перставлять, формы составлять, реализоываыавть сами процедуры и алгоритмы - это задача для низшего класса, для мало опытных программистов которые ещё не доросли до великого понимания высоких истин программирования фреймворков. Фреймворкер же будет исключительно заниматься высшими материями - следить за чистотой продукта. Стоять на страже стандартов, правильности подхода и концептуальности.
Труд фреймворкера само собой более важен чем труд тупого кодера. От него же всё зависит! Если бы не его великая архитектурно-фреймворкерская мудрость, то ничего бы не было. Программа бы внутри представляла собой говнокод который постоянно приходжится штопать, исправлять, миллион раз переделывать. Оно бы всё постоянно крашилось, вело себя непредсказуемо и процесс регрессивного тестирования занимал бы недели там где юнит-тестиг справляется за минуты.
Мамонты и динозавры как известно вымерли.
Вместе с ними вымирают как правило и коллективы в которых количество фреймворкеров превосходит число простых программистов. Тех кто НЕ занят строительством фреймворков, а производит собственно продукт.
Спросите у фреймворкера за что конечный потребитель их продукта платит деньги...
И он ответит - "За качество!" И гордо поднимет вверх подбородок или даже указательный палец.
А качество чего? Качество структуры данных или качество имён методов интерфейсов?
Упс... и вот на этом месте обычно начинается полемика о том что лучше трактор который ломается и пашет или идеальный трактор который никогда не ломается, но которого нет. Спор вечный и неразрешимый.
Неразрешимый потому что кто-то в конечном итоге должен сесть и сделать хоть какой-то трактор. Кому-то придётся вконечном итоге сесть и сделать ХОТЬ КАК ТО чтобы работало. И для конечного потребителя будет совсем не важно как оно там устроено внутри. Ему это, дураку такому, оказывается не интересно даже. У него свои есть в жизни задачи и восторга идеальностью орагнизации итерфейсов он почему-то дурак такой не разделяет.
Оказывается что для пользователя вообще не важно какой трактор. Важно чтобы вспахано было.
Но это уже следующая стадия развития которая наступает ПОСЛЕ фреймворкизма. До неё надо ещё дорасти тем кто одержим строительством правильных фреймворков. И чем скорее каждый из них это осознает, тем больше у него шансов не оказаться среди динозавров.
Перестань быть фреймворкером! Покажи продукт!
Знаешь как надо и как правильно - продемонстрируй!
Лучший способ доказать что твой подход лучше, эффективнее, надёжнее, быстрее - показать экземпляр готового конечного продукта обладающего всеми этим качествами.
Один из изобретателей языков программирования ещё тогда в шестидесятые сказал что одним из способов описания языка программирования является пример правильной программы на нём написанной.
Вот также и фреймворк. Лучшим подтверждением правильности мировоззрения его создателя является конечный продукт им же самим на нём же самом построенный.
Говоришь что так программировать быстрее? Докажи! Сделай быстрее меня. Сделай больше за тот же отрезок времени.
Говоришь что реже ломается? Покажи! Сделай что-то что не ломается. Сделай и покажи.
Уверен что так делать лучше и реже придётся чинить, Покажи! Сделай, выпусти, дай пользоваться людям и покажи как редко это приходится чинить.
Помни! Твой фреймворк сам по себе ничего не стоит. Ценностью обладает только конечный продукт. Пока его нет - вся твоя работа над фреймворком это пустая трата времении.
Если всё что твоя программа делает - надпись на экране "Hello World!" то всё что ты сделал - "Hello World!" и не важно как сложно и чудесно оно там внутри устроено. Это некому оценить и никто никогда это не захочет оценить. Чтобы это стало продуктом нужно чтобы оно что-то делало помимо своей высокой внутренней организации.
Знаете что происходит с программистами когда их опыт программирования достигает некой кондиции?
Сейчас расскажу. Но сперва напомню о водителях. Самый опасный стаж для водителя - год. Когда вы проездили за рулём год у вас складывается ощущение уверенности в себе, навыка, готовности к неожиданностям. Ложное ощущение. Права такова что проездив за рулём год вы скорее всего не сталкивались ещё ни разу с реальными обстоятельствами в которых от вас правда потребуется что-то экстраординарное, большее чем справиться с маневрированием при параллельной парковке. Но ведь год - это же целый год. Это же опыт.
Вот так опыт делает из водителя опасную фигуру на дороге. Годовой опыт скрывает от него реальную опасность. Он-то сам за себя уверен что он ого-го какой уже водила. А вот они все вокруг чё попало за рулём делают, все эти неумехи рулящие куда попало.
Вот теперь о программистах.
У каждого программиста наступает в жизни стадия фреймворкизма. Это такая стадия на которой он решает что умеет уже программировать и знает как надо это делать. И он решает что всех вокруг надо этому научить. Ровно также как годовалый водила уверен что именно он едет как надо, а все вокруг чёпопало вытворяют. Также и программист в стадии фреймворкизма уверен в том же самом. Это именно он знает как правильно. Как надо и как лучше.
Как называть переменные, где фигурные и прочие скобки должны быть, как правильно строить ирерархии классов и как организоваывать очереди сообщений. Всё знает.
Знание всего - большая отчетственность. И программист в стадии фреймворкизма берёт её на себя. Всю полноту ответственности за то как всё надо правильно организовать и всё правильно построить. Он начинает работать над своим фреймворком.
ФРЕЙМВОРК! Форева! Ура!
И вот волшебным образом программист уже не производит вообще никакого конечного продукта.
Он занят теперь более важным делом - строительством правильного фреймворка. Обучением всех как правильно надо программировать. Читает лекции. Даёт уроки. Личным примером показывает как надо. Становится настоящим фреймворкером.
Если в коллективе обнаруживается несколько фреймворкеров, то коллектив вообще перестаёт что-либо производить. Вся деятельность превращается в упражнения по правильной организации процесса юнит-тестирования, документирования, делигации прав, определения порядков обсуждения и утверждения состава структур данных и интерфейсов. Диаграммы производятся как обои на бумажной фабрике. Устанавливаются Вики и всякие кодо-вспомогательные средства позволяющие ещё быстрее и эффективнее находить зависимости между различными частями кода. Каждый фрагмент экспериментального кода подвергается глубочайшему анализа на предмет покрытости процедурами тестирования, на предмет цикломатической комплексности, связности, консистенотности, документальности, распределённости, ре-юзабильности, юзабильности, и т.д. и т.п. Вобщем хоть святых выноси.
Суть же происходящего в том что вместо программного продукта которым кто-то будет пользоваться теперь коллектив производит КОД. Код как конечный продукт. Код этот никто кроме самого этого коллектива никогда само собой не увидит, но он уже является предметом истиной гордости и экземпляром чистого искусства.
Примечательно что фреймворкеры патологически глухи. Они могут только вещать. Говорить, учить, издавать стандарты и правила. Слышать о реальных задачах, примерах и проблемах они не могут. Не до того. Они только проповедуют правильный подход который сам собой автоматически решит все проблемы.
Реальную же работу фреймворкеры делать не берутся. Это ниже их. Кнопки перставлять, формы составлять, реализоываыавть сами процедуры и алгоритмы - это задача для низшего класса, для мало опытных программистов которые ещё не доросли до великого понимания высоких истин программирования фреймворков. Фреймворкер же будет исключительно заниматься высшими материями - следить за чистотой продукта. Стоять на страже стандартов, правильности подхода и концептуальности.
Труд фреймворкера само собой более важен чем труд тупого кодера. От него же всё зависит! Если бы не его великая архитектурно-фреймворкерская мудрость, то ничего бы не было. Программа бы внутри представляла собой говнокод который постоянно приходжится штопать, исправлять, миллион раз переделывать. Оно бы всё постоянно крашилось, вело себя непредсказуемо и процесс регрессивного тестирования занимал бы недели там где юнит-тестиг справляется за минуты.
Мамонты и динозавры как известно вымерли.
Вместе с ними вымирают как правило и коллективы в которых количество фреймворкеров превосходит число простых программистов. Тех кто НЕ занят строительством фреймворков, а производит собственно продукт.
Спросите у фреймворкера за что конечный потребитель их продукта платит деньги...
И он ответит - "За качество!" И гордо поднимет вверх подбородок или даже указательный палец.
А качество чего? Качество структуры данных или качество имён методов интерфейсов?
Упс... и вот на этом месте обычно начинается полемика о том что лучше трактор который ломается и пашет или идеальный трактор который никогда не ломается, но которого нет. Спор вечный и неразрешимый.
Неразрешимый потому что кто-то в конечном итоге должен сесть и сделать хоть какой-то трактор. Кому-то придётся вконечном итоге сесть и сделать ХОТЬ КАК ТО чтобы работало. И для конечного потребителя будет совсем не важно как оно там устроено внутри. Ему это, дураку такому, оказывается не интересно даже. У него свои есть в жизни задачи и восторга идеальностью орагнизации итерфейсов он почему-то дурак такой не разделяет.
Оказывается что для пользователя вообще не важно какой трактор. Важно чтобы вспахано было.
Но это уже следующая стадия развития которая наступает ПОСЛЕ фреймворкизма. До неё надо ещё дорасти тем кто одержим строительством правильных фреймворков. И чем скорее каждый из них это осознает, тем больше у него шансов не оказаться среди динозавров.
Перестань быть фреймворкером! Покажи продукт!
Знаешь как надо и как правильно - продемонстрируй!
Лучший способ доказать что твой подход лучше, эффективнее, надёжнее, быстрее - показать экземпляр готового конечного продукта обладающего всеми этим качествами.
Один из изобретателей языков программирования ещё тогда в шестидесятые сказал что одним из способов описания языка программирования является пример правильной программы на нём написанной.
Вот также и фреймворк. Лучшим подтверждением правильности мировоззрения его создателя является конечный продукт им же самим на нём же самом построенный.
Говоришь что так программировать быстрее? Докажи! Сделай быстрее меня. Сделай больше за тот же отрезок времени.
Говоришь что реже ломается? Покажи! Сделай что-то что не ломается. Сделай и покажи.
Уверен что так делать лучше и реже придётся чинить, Покажи! Сделай, выпусти, дай пользоваться людям и покажи как редко это приходится чинить.
Помни! Твой фреймворк сам по себе ничего не стоит. Ценностью обладает только конечный продукт. Пока его нет - вся твоя работа над фреймворком это пустая трата времении.
Если всё что твоя программа делает - надпись на экране "Hello World!" то всё что ты сделал - "Hello World!" и не важно как сложно и чудесно оно там внутри устроено. Это некому оценить и никто никогда это не захочет оценить. Чтобы это стало продуктом нужно чтобы оно что-то делало помимо своей высокой внутренней организации.
Фреймворкерство как модель поведения
Jun. 7th, 2010 04:00 pmВ качестве аппендикса к.
Когда фреймворкер говорит - "Надо делать вот так!", то он имеет в виду "ТЫ должен делать вот так пока я занят анализом ошибок в твоей работе."
Когда фреймворкер говорит - "Это повысит производительность нашего труда", то фактически это означает "Помимо того что ты уже делаешь тебе надлежит делать ещё вот это чтобы мне тратить меньше времени на анализ твоей производительности труда."
Когда фреймворкер говорит - "Надо делать вот так!", то он имеет в виду "ТЫ должен делать вот так пока я занят анализом ошибок в твоей работе."
Когда фреймворкер говорит - "Это повысит производительность нашего труда", то фактически это означает "Помимо того что ты уже делаешь тебе надлежит делать ещё вот это чтобы мне тратить меньше времени на анализ твоей производительности труда."
Chelsea Girls
Jun. 7th, 2010 09:33 pm
Был такой некто Энди Воол в 1966-м году изобрёл кино которое показывалось одновременно на двух экранах. Ну или точнее на одном экране разделённом на две половины. В каждой половине шла своя история, а звук менялся плавно с одной истории на другую. Съёмки обеих историй постепенно менялись то в чёрно-белое, то в цветное кино. Истории естественно периодически пересекались.
Действие фильма происходило в отеле Chelsea где собирались разные люди. Большинство из занятых в киноленте людей играли в нём сами себя. Люди все были по тем временам знаменитые и что называется творческие. Если короче, то богема плотно сидящая на самолюбовании и наркоте.
Этот фильм критиками считается лучшей из киноматографических работ Энди Воола.
Кто смотрел скажите честно - понравилось кино?