суббота, 28 февраля 2009 г.

Agile: этапы, условия разработки

h4. 1. Введение в этапы разработки.

Движение к законченному продукту происходит последовательно: от релиза к релизу, причём каждый последний отличается от предыдущего большим функционалом. Внутри каждого релиза проводится несколько итераций, которые затрагивают все этапы разработки.

h5. 1.1 Этапы разработки

*Описание предметной области*
Происходит набор информации, касающейся предметной области, выделяются прецеденты, или сценарии. Прецеденты являются последовательностью действий по достижению заданной цели и служат для выявления требований. Это всегда человеко-ориентированное описание, которое будет происходить на самом верхнем уровне (как правило уровень интерфейса). Например, сценарий "Заказ товара" можно понимать как последовательность: выбор позиции, указание количества, оплата.
*Анализ предметной области и проектирование*
На основании сформулированных прецедентов начинается выделение сущностей, строятся модели предметной области, затем модели классов (с позиции объектно-ориентированного программирования). Разрабатывается архитектура проекта.
*Реализация в программном коде*
Прецеденты служат отправной точкой для написания тестов. Код самого приложения реализуется исключительно под тесты, что приводит к простому достижению результата, исключая всё лишнее.
*Контрольное тестирование*
Проверка на достижение функционала и безошибочность на основании ранее написанных тестов. Тесты пишутся один раз за всё время (см. предыдущий пункт), они редко изменяются.
*Интеграция, внедрение*
Интеграция в рамках Agile является последовательной (от релиза к релизу), то есть она растянута во времени. Однако такой подход позволяет в кратчайшие сроки начать адаптацию персонала клиента к продукту, усиливает эффект обратной связи по требованиям / недостаткам.

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

В конце каждой итерации действенным является презентация перед заказчиком результатов работы - демонстрация достигнутого.

h4. 2. Динамика разработки, некоторые условия рабочего процесса.

Чем характерны выше приведённые этапы? На первом - описании предметной области - происходит тесное взаимодействие с заказчиком. При этом в идеализированной модели Agile, он обладает некоторой свободой по принятию конечного решения, но не всегда. Его полномочия должны быть ограничены здравым смыслом команды разработчиков. При проектировании упор делается на командном взаимодействии, причём важно, чтобы каждый член был свободен в выборе и реализации своих идей, то есть доверие должно иметь место. Это справедливо также и на этапе реализации. В дополнение сюда входит также работа тестировщика с заказчиком для составления сценариев тестирования. Любая интеграция, как было отмечено выше, имеет своей целью усилить вовлечение заказчика в процесс разработки. Это необходимо осуществлять регулярно и часто.

Приведённые тезисы возможны в случае, если:

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

среда, 25 февраля 2009 г.

Иностранный язык

Сегодня увидал интересный способ-упражнение по английскому языку. Заключается в следующем (пишу как было): даются несколько имён собственных, например, Jane, Helene, Pete и им в соответствие ставятся характеристики. Вот как это выглядит
Jane - my friend
Helene - my relative
Pete - a famous person

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

Такую бы систему с 1-го класс гнать, а то и в детсадах: интересно, действенно, практика. Посему вопрос: кто-нибудь знает ресурсы, посвящённые таким вот упражнениям или целым методикам? Очень бы хотелось ознакомиться.

Ницше. Система поведения. Кому это надо?

Сейчас.

bq. Первый принцип: здоровье души рассматривается как болезнь, с крайним недоверием...
Второй принцип: предпосылки сильной и полноцветной жизни, сильные влечения и страсти, слывут препонами для сильной и полноцветной жизни.
Третий принцип: все, что грозит человеку опасностью, все, что может возобладать над ним или погубить его, считается злом и пороком,— его надлежит вырвать из души с корнем.
Четвёртый принцип: человек, сделанный безопасным для себя и других, слабый, низринутый в унижение и скромность, в осознание своей слабости, «грешник» — это и есть самый желательный тип, тот, кого при посредстве некоторой хирургии души можно потом и излечить...

bq. Против чего я протестую? Против того, чтобы эту мелкую и кроткую посредственность, это скучное равновесие души, не ведающее великих приливов великих сил, считали чем-то значительным, а то ещё и эталоном человека.

bq>. Ф. Ницше, Воля к власти, 248-249.

Что выдвигается на первое место? Природное, божественное, обладающее сверхпланом. Расписание глобального обустройства, в центре которого находятся слабые, уравнённые индивиды. Отрицание естественной селекции: теперь живёт и убогий (как в духовном плане, так и в физическом). Жизнь реализует модель медленного самоубийства, тянущегося существования от рождения до старости. Повседневность, выкорчёвывающая цель человека, удушающее спокойствие. Сколько раз вера в божественный промысел была условием кровопролития? Люди уничтожаются с завидной регулярностью. Сегодняшний человек - ничтожество, животное, принадлежащее среде. Кроткая скотина, лишённая воли. Для него мораль - самосохранение, последняя инстанция, переросшая в привычку. Это инструмент в руках определённой группы людей, умело навязываемый и тиражируемый. Мораль произрастает изо лжи. Как часто человек, говорящий о каком-либо явлении, вещи, не обладая ей, выносит обличающие вердикты, штампует "истины"? Это тот, кто изолирован, лишён системы оценок, лишён опыта. Псевдооценки происходят из морали, подпитываются ей.

понедельник, 23 февраля 2009 г.

Философия техники. История (коротенько)

Технику изучали (ну или пытались изучать) с давних пор. В античности происходило разделение теоретического знания (которое понималось как искусство и носило развлекательный характер) и техники (которая привносила полезность - водопровод, дороги), более того, они противопоставлялись.

В средние века, когда внимание было устремлено на духовную сторону, а труд возводился в обязанность (перед Богом), техника тянула независимое существование. Появляются цеха, весьма консервативные учреждения со своим внутренним уставом. В эту же пору намечается обогащение знания: с востока (арабы и Китай) на запад привносится новое (математика). Техника в это время набирает силу, появляются суда, военная техника, развивается горное дело. Где-то в 15 веке требуется большее от техники, начинается повсеместное строительство сложных сооружений. Очевидно, что для его реализации нужен более развитый подход (строительные планы, вспомогательные конструкции).

С 17 века в сознании происходит чёткое разделение на природное (организм) и разумное (механизм). Первое определяет ментальную сторону, второе - материальную, выраженную категориями полезности, проективности.

В 18 веке техника обрастает научным знанием, поскольку требуется своя теоретическая проработка. Аналогично и с наукой, она технизируется.

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

С конца 19 века и весь 20 век техника подвергалась критике. Одни её осуждали (гуманитарии, экзистенциалисты: Хайдеггер, Ортега-и-Гассет, Бердяев), другие видели в ней раскрытие человека как творца (теоретики: Дессауэр).

В общем весьма интересно и нужно. Советую почитать выше обозначенных лиц.

суббота, 21 февраля 2009 г.

GUI Builder для Eclipse

Столкнулся с необходимостью набросать графический интерфейс для java-приложения. Среда разработки - Eclipse - не предоставляет такой функционал по умолчанию, поэтому пришлось порыскать. Отыскал "Jigloo":http://www.cloudgarden.com/jigloo/, бесплатное для некоммерческого использования средство. Со своими задачами справляется, имеется возможность работы с SWT и Swing. Сам я набрасываю на SWT, и что характерно, плагин успешно подцепил рукописный вариант интерфейса.
Устанавливается просто - через update-менеджер: добавляете сайт _http://cloudgarden1.com/update-site_, ищете соответствующую строчку, инсталлируете.

среда, 18 февраля 2009 г.

Уровень громкости

У fluxbox нет стандартного средства контроля и отображения уровня громкости системы. Поэтому, во-первых, нужно средство регулирования, а во-вторых, отображения. У меня рабочий инструмент - ноутбук - снабжён мультимедийными клавишами, среди которых наличествуют "Mute", "Volume+", "Volume-". Поэтому с первой частью уже проще. Задача - привязать кнопки к звуковушке.
Это не сложно: fluxbox предоставляет возможность задать горячие клавиши в файле /home/_user_/.fluxbox/keys.
Добавил вот эти строчки:

bc. # volume settings, using common keycodes
# if these don't work, use xev to find out your real keycodes
123 :Exec amixer -c 0 set Master 3dB+
122 :Exec amixer -c 0 set Master 3dB-
121 :Exec amixer sset Master,0 toggle

Для моего ноута клавиши 123, 122, 121. Для вашего спросите у _xev_

Клавиши привязаны, теперь про визуализацию. Есть такое средство, называющееся xosd_cat, которое входит в состав пакета _xosd_. Эта программулька позволяет отображать текст и полоски прогресса (или как их там) на экране, поверх всего происходящего. Сразу меня заинтересовала возможность вывода горизонтального бара, которому передаётся процент наполнения (естественно, меньший или равный 100).
В общем получился вот такой скриптик:

bc. #! /bin/sh
channel="$1"
pers=$(amixer -c 0 get "$channel" | grep -o -P '[(d{1,3}%)]' | grep -o -P 'd{1,3}')
killall -KILL osd_cat
osd_cat -A center -p middle -d 1 -b percentage -P "$pers"

Переменная _channel_ содержит название ползунка, который я двигаю и, следовательно, уровень громкости которого я хочу отобразить. Переменная _pers_ извлекает информацию об уровне громкости, далее ищет нужное поле о проценте и в конце получает число (от 0 до 100). Дальше убивается уже существующий процесс отрисовки уровня, рисуется новая картина. Для пущей доступности я нарёк этот скрипт как "osd_volume.sh" и скопировал его по назначению /usr/bin/.

Последний штрих - меняю файл /home/_user_/.fluxbox/keys

bc. 123 :Exec amixer -c 0 set Master 3dB+ ; osd_volume.sh Master
122 :Exec amixer -c 0 set Master 3dB- ; osd_volume.sh Master
121 :Exec amixer sset Master,0 toggle

суббота, 14 февраля 2009 г.

Шаблон Expert

Я подробнее рассмотрю каждый шаблон. Начинаю с Expert, так как он первый по списку. Продолжу в прямой последовательности без прыжков через.
Общие замечания были "перечислены ранее":http://twowords.ru/development/15/osnovnye-shablony-proektirovaniya, сейчас же хочу проиллюстрировать диаграммой и кодом.

Главное положение, выдвигаемое шаблоном, говорит о том, что обязанность назначается тому классу, который имеет всё необходимое для её выполнения.

Я рассматриваю следующую ситуацию: есть кот, холодильник и сосиски в холодильнике. Кот открывает дверцу и оглядывается. Конечно, в реальности кот бы сам подсчитал количество сосисок, но в мире ПО этим непременно должен заняться сам холодильник. Почему? А всё потому, что он, как хранитель питательного мяса, _знает_ достаточно.

Ниже диаграмма.
!http://twowords.ru/images/3.gif!

На данный момент не располагаю инструментом для построения диаграмм последовательностей (ну нет их в Eclipse в стандартном плагине UML2). Посему пока диаграмма классов.

Код для каждого класса в отдельности.

public class Cat {
public void myau(){
System.out.print("myau!");
}
public void lookRound() {
Refrigerator.getInstance().Initialize();
Integer weight = Refrigerator.getInstance().getSausagesWeight();
System.out.println(weight.toString());
}
}


public class Refrigerator {
private List sausages;
static Refrigerator instance;
public void Initialize() {
sausages = new Vector();
sausages.add(new Sausage(50));
sausages.add(new Sausage(100));
}
private Refrigerator() { }
public static synchronized Refrigerator getInstance() {
if (instance == null) {
instance = new Refrigerator();
}
return instance;
}
public Integer getSausagesWeight() {
Integer weight = 0;
for (Sausage s : sausages) {
weight += s.getWeight();
}
return weight;
}
}


public class Sausage {
private Integer weight;
public Sausage(Integer w) {
weight = w;
}
public Integer getWeight() {
return weight;
}
}

Последовательность такая:
Cat c = new Cat();
c.myau();
c.lookRound();

Вывод:

bc. myau!150

пятница, 13 февраля 2009 г.

Основные шаблоны проектирования.

В тексте будут использоваться следующие обозначения. A, B, C - классы (или объекты). (X), (Y) - действия, обязанности или методы. Рассматриваются следующие шаблоны:
  • Expert
  • Creator
  • Low Coupling
  • High Cohesion
  • Controller
  • Polymorphism
  • Pure Fabrication
  • Indirection
  • Protected Variations
Expert Шаблон Expert предполагает следующее: обязанность объекту назначается из способности объекта выполнить эту обязанность. Другими словами, когда встаёт вопрос "Кто должен предоставлять эти данные?", обязанность о предоставлении переходит к объекту, который имеет возможность их предоставить (имеет знания или имеет выход на объекты, которые помогут получить эти знания). Пример: А знает о В; необходимо произвести действие (X); если А имеет всю необходимую информацию для выполнения (X) (в том числе ту, которая содержится в подчинённом классе B), то он и будет его выполнять. Creator Паттерн Creator распределяет обязанности о создании объектов. A будет являться создателем экземпляров B в том случае, если подразумевается, что: он включает в свой состав экземпляры В; обращается к их методам. Нередко роль создателя отдаётся более высшему элементу по иерархии (например, клетка будет создателем попугайчиков). Low Coupling Шаблон Low Coupling исповедует принцип низкой степени связывания. Связывание определяется как знание класса о других классах (например, тех, которые являются его атрибутами). Чем меньше связан объект А с объектами {B, C...}, тем более податлив он. В обратном случае - создание супер-класса, обладающего знаниями о множестве других классах - возникает эффект зависимости (необходимо отслеживать изменения в подчинённых объектах) и неповоротливости (сложность расширения возможностей или перестраивания логики). Как это выглядит: объект А создаёт экземпляр класса В и добавляет этот экземпляр в хранилище С. В этом случае А должен знать о В и С. В одном случае он - создатель В, во другом он - эксперт С. Если, например, класс А делегирует С о создании экземпляра В, то он будет обладать меньшей степенью связывания. Цепочка будет: А делегирует С создание В; В создаёт С. High Cohesion Шаблон High Cohesion звучит как большая степень зацепления. Это значит, что объект должен стремиться к функциональной обособленности и узкой специализации. Необходимо избегать раздутых интерфейсов путём их дробления на малые интерфейсы. Правда существуют ситуации, когда в интерфейсах царит функциональный хаос и когда это оправданно. А оправданно это может быть лишь с точки доступности и лёгкости использования. При этом создаётся супер-интерфейс, в который включаются разнородные методы и свойства, но, поскольку они собраны в одном месте, для некоторых лиц это скорее достоинство. Данный шаблон связан с Low Coupling: необходимо стремится с одной стороны к функциональному разграничению обязанностей, а с другой - к такому распределению обязанностей, чтобы связывание оставалось на низком уровне. Controller Шаблон Controller подразумевает создание такого интерфейса (или класса), который сам не обрабатывает запросы, а делегирует их. Как правило, используется сценарный подход: под прецедент разрабатывается интерфейс, который включает все методы, необходимые для его выполнения. Например, контроллер может быть промежуточным слоем между интерфейсом пользователя и логическим уровнем программы. Сюда же может быть применим принцип High Cohesion. Polymorphism Нужно заложить основу - абстрактные классы и интерфейсы - на базе которой будет наращиваться весь функционал. Жёсткая логика (if-then-else) заменяется на логику реализаций. Что это даёт: каждая реализация уникальна, прорабатывается в соответствии с намерениями разработчика; изменение части кода программы не обязывает вносить исправления в других частях. Pure Fabrication Шаблон предполагает введение искусственного объекта, которые не является частью предметной области, но несёт вспомогательный функционал. Используется для повышения степени зацепления. Indirection Когда необходимо связать два класса, которые относятся к различным аспектам, то в этом случае используется шаблон Indirection. В самом простом случае шаблон может работать так: А знает о В (знает о интерфейсе), но не подозревает о С (реализации этого интерфейса); А делает запрос у В, а реализация С, проделав некоторые вычисления, возвращает результат А. Protected Variations Этот шаблон гласит: распоряжайся только своими знаниями, а к чужим не смей обращаться. Если объект А в числе своих атрибутов содержит В, который в свою очередь включает С, то А следует работать исключительно с В, но не лезть в дела С ("вассал моего вассала - не мой вассал"). Что это даёт: прыжки через головы вложенных зависимостей выходят боком при изменении логики программы. Если что-то поменяется, то не исключена переработка этой цепочки взаимодействия. Кроме того, такая ситуация своего рода повышение смыслового связывания, а оно как и простое недопустимо.

четверг, 12 февраля 2009 г.

Коммуникации и их правила

В этой заметке я попытаюсь выяснить ключевые и значимые моменты коммуникации.
Не секрет, что вопрос этот весьма щепетильный, интересный: много книг по нему написано, придумали даже целую технику НЛП, но речь не о том.

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

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

Обмен, которые идёт непрерывно между участниками, направлен на удовлетворение их целей. Но вопрос обогащения информации не может проходить постоянно: получая что-то необходимо отдавать. Потом очень интересным явлением является самопознание: в разговоре раскрываются собственные мысли и суждения, которые прежде не выходили на свет, так что и это важно, и нельзя исключать.

Наконец, выводы - получаемые после коммуникации - на вес золота. Главная составляющая - понимание, получение знаний в чистом виде. Частично через опыт собеседника, частично - предположения (но на основе того же опыта). Ещё больше - удовольствие. Обмен многогранен, особенно, когда собеседник соответствующий твоим интересам. Ну и, конечно, не надо забывать, что полученные выводы существуют лишь в твоём мире ценностей и категорий, это - твоя правда и ничья более.

Итак, получилось 4 кита, на которых зиждется коммуникация: манера; обмен знаниями; контроль внешнего и внутреннего состояния; фильтрация знаний, получение выводов - своих знаний. Манера общения завязана на внимании, которое определяется внутренним "Я". Обмен преследует цели, а значит имеет дело с вниманием (направляющим разговор в нужную сторону). Выводы (или знания для себя) зависят от "Я" и это необходимо учитывать в дальнейших коммуникациях.

Действовать - во благо.

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

Начать хотя бы с желаний. Есть ли человек, который ничем бы не интересовался? Пожалуй нет, всегда пробивается отголосок воли (даже загнанной в угол; кстати кем?). Важно услышать себя, а услышав, дать себе свободу и возможность действовать.

Вот и есть желание, дальше дело за малым - планы, распределение. Кто этот летописец ваших действий? Только одно - будущее в ваших глазах. Через устремления воли, через поэтапное осуществление намеченного (а вы уже наметили?) происходит формирование вашей действительности, её обновление под вас. Через стремления происходит раскрытие человека и это не обязательно тупиковая ветвь: достигнув одного непременно захочется попробовать иного, возможно, более близкого и необходимого.

Планировать с удовольствием, чтобы всё существо ваше трепетало перед желаемым (а теперь уже неизбежным). Вот тут пригодится какое-то стимулирование. Вы, как средоточие телесного и духовного, в одной стороны можете предложить себе благодарность, а с другой побаловать какой-нибудь наградой в форме съестного или другой приятной (и нужной) мелочи.

И вот затем - движение к желаемому, которое по сути своей не отличается от самого планирования, и даже приятнее его. Посудите сами, ощущение движения, поэтапного исполнения, чувство, что всё двигается в нужном направлении, придаст уверенность и привнесёт удовлетворение в ваших делах и начинаниях.

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

PS: по следам Дзен-привычек.

вторник, 10 февраля 2009 г.

Про мышление 2

Осилил за сегодня ещё одну книгу, теперь уже англоязычного автора, вернее авторов - братьев Бьюзен. Называется "Супермышление". Предлагается подход построения интеллектуальных карт (или карт памяти; mind-maps иначе), которые переворачивают устоявшиеся традиции и предлагают воспользоваться безграничными возможностями мыслительного аппарата - мозга - с упором на ассоциативное мышление.
Желая дораскрыть тему думания и мучений человека в этом интересном процессе, дополняю предыдущую заметку "Про мышление".
Вот, кстати, чтобы её долго не искать:

bq. Наш процесс думания построен по принципу комнаты. Представьте себя в ней. Думаю, сделать это несложно, если вы не на улице. Осмотритесь. Что видите? Не знаю, что вы там видите, но вот я вижу стол, два шкафа, три кровати, холодильник и прочие стулья, тумбы. Как нетрудно догадаться, я обитаю в общежитии. Но это к вопросу о мышлении отношения не имеет.
Теперь я желаю ответа на вопрос, что находится в холодильнике? Да бог его знает, что в нём. Как узнать? А узнать можно попав в холодильник, оказаться в нём. Так же и со шкафом, тумбами. Принцип матрёшки: от очевидного к сокрытому, от общего к частному.
Любой вопрос есть постановка цели (здесь - а что же внутри). Какой путь?: мы видим только то, что отвечает нашему уровню вложенности, то есть мы ощущаем лишь те вещи, которые находятся в комнате (как и мы); чтобы разглядеть другое - сокрытое - надо быть на другом уровне - более глубоком.
Теперь, перенесёмся к мышлению человека. Например, школьнику дадено задание написать сочинение. И он вроде бы написать не прочь, но начать сложно. Чем он располагает при написании сочинения? У него есть стандартная последовательность по типу Завязка - Кульминация - Развязка. Ещё есть тема, выражающая основную мысль. И потому ему сложно начать (а в последствии продолжить на каком-то этапе, например, Кульминации), что он не представляет как и почему ему следует это писать: не видит перспективы, углубления, развития. Конечно не видит! Так и должно быть. Его ошибка (если это его ошибка, а не всей системы образования) в том, что не оглядывается по сторонам, пытается вникнуть (разглядеть сердцевину) через стенки холодильника. И он ошибается, потому что вывод его оценивается жалкой вероятностью.
Отсюда совет: не надо искать истину там где тебя нет.

Я приводил пример школьника, который сидит перед пустым листом бумаги и "пытается" выжать из себя очередную строчку, так вот у Бьюзенов похожая ситуация, и расписана достаточно подробно, только мальчик - не мальчик, а аспирант (стр. 14). Ближе к концу книги даётся даже последовательная инструкция "Как правильно писать сочинение." (стр. 206), конечно, с точки зрения предлагаемой методики, но строго, логично и очень интересно.

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

Насчёт современного положения дел тоже расписано, правда в розоватых тонах и с надеждой на будущее (стр. 280). Но с точки зрения авторов так и должно быть: они приводят конкретные примеры, свидетельствующие об активном распространении приводимых техник в сфере образования (Западная Европа и США), а также в бизнесс-учреждениях.

Книжка дико интересная, а главное - полезная. Проходить мимо нельзя. В общем - http://www.koob.ru/toni_buzan/mind_map_book.

PS: Фуух! Две книги за день: одна - 150 страниц, другая - 322. Буду всё-таки придерживаться формулы "один день - одна книга".

понедельник, 9 февраля 2009 г.

Грызуны-акселераторы

Прочитал сегодня труд Дмитрия Лёушкина "Турбо-суслик". Книга о том, как расстаться с пережитками прошлого, глядеть на мир по новому. Автор придерживается весьма фривольного письма (в соответствии с нашим _демократическим_ временем), что кому-то покажется отпугивающим, а кому-то в самый раз - близким и родным-обиходным. Формат - совокупность техник, завершённых приёмов, то есть инструкция к действию: прочитал - сделал. Название странное, но это прихоть автора - внести свою терминологию. _Суслики_ (как в том убеждён господин Лёушкин) — кодовое название закрытой рабочей группы практикующих, которые работали с данными техниками с начала их создания.

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

В конце книги приводятся ЧАВО читателей и автора. Вот интересный момент:

bq. В. Если я «ликвидирую личность» — каким я стану? Идиотом, что ли?
О. Не волнуйтесь, мы не занимаемся промыванием мозгов и стиранием памяти. Полная ликвидация личности с помощью этой системы невозможна. Скорее, речь идёт об опустошении материала, из которого «сделана» личность, что ведёт в увеличению «пустотности» — а чем более «пустым» является человек, тем более текучим он является. То есть по мере работы спектр ваших возможностей будет расширяться — вы будете все меньше и меньше привязаны к старой личности и каким-то навязываемым ею моделям поведения, и будете понимать, что фактически вы можете быть любыми. Любыми, какими только захотите, ограничений нет.

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

Саму книгу можно забрать "тут":http://www.koob.ru/leushkin/turbo_suslik

суббота, 7 февраля 2009 г.

Обо мне

Моё имя Пименов Михаил. Занимаюсь тем, что учусь в аспирантуре - тема диссертации связана с системами диагностирования технических объектов. Интересуюсь разработкой ПО, особенно волнуют вопросы проектирования архитектуры и управления проектом на всех стадиях жизненного цикла. Изначально решил открыть три направления: собственно разработка ПО, философия (в любых проявлениях, меня тема интересует), затем находки (коими полнится интернет). Кроме того, разгребать бардак в голове буду с помощью раздела "Мысли". На будущее думаю открыть направления по базам данных (опять же проектирование), потом поднять тему управления собственным временем. Ещё подумываю о ряде записей, связанных с вопросом "Как найти себя в жизни?". Если есть какие-то вопросы, пишите на mupimenov at gmail dot com

Небольшое добавление. Теперь кандидат технических наук.

Сартр. Стена

Три арестанта, один из которых молод. Приговор, который укорачивает жизнь ровно на столько, сколько они сами готовы отдать, выбросить за ненадобностью. Экзистенция в самой крайней форме: цена жизни - вздор, когда она протянется ещё несколько часов. Может трагедия, страдание? Нет, не в этом случае. Скорее чувство искреннего присутствия в мире. Ощущение бессмысленности, но в тоже время удовольствия от прожитых мгновений. Приговорённые меняются. Они смотрят иначе, слышат иначе, чувствуют иначе. Для них открывается новое, доселе неизвестное, выраженное в образе стены, к которой они прижмутся мокрыми от пота спинами. Метаморфоза души, когда тело уже не твоё: оно боится, тянет за собой "Я" в бездну. Но то упирается, пытается смотреть, слышать и чувствовать, ведь открылась истина, до которой в другой ситуации не было бы возможности дотянуться. Исход. Обречённое бессознательное ликует от достигнутого и требует своего праздника - слиться со стеной, влажной от воспоминаний былого.

Жан Поль Сартр "Стена", читаем.

Сколько это - бесконечность?

В голове внезапно возник вопрос: который час? Это прозвучало словно молния ударила в дерево. Так отчётливо и пронзительно вспыхнул яркий свет и озарил мое сознание. Я не хочу открывать глаза, хотя кажется уже утро. Или может это только сон. Пересилив себя, я открыла глаза. Проявились очертания комнаты, наполненной предметами, о которых и не хотелось бы особо думать. Это даже как-то отрезвляло душу, но выглядело ложью и непременно стало бы ложью. Я опять закрыла глаза. Пытаясь вернуть это подвешенное, трудноуловимое состояние, пытаясь вырваться из этого безжизненного, пустого мира, мира вещей и бесполезных слов, я жаждала остаться. Но я сдалась. Ведь знаю, что бесполезно вот так цепляться за мечту и изводить себя. Я встала с постели, хотя и против своего желания, и подошла к окну. Там вдали не было ничего, за что мог бы ухватиться взгляд и это было восхитительно. Бескрайняя даль знала ответы на все вопросы, ведь она их и придумала.
Позже я сварила себе кофе и, намазывая на хлеб брусничное варенье, смотрела бездумно телевизор. Меня не волновало, что там происходило, ведь там ничего не происходило, ведь там было Единственное. Не было звуков, которые бы прерывали моё воспоминание, не было ничего, лишь этот образ. И он - это я. По другому и не объяснить. Он - это я, так просто, но удивительно, неповторимо. Раньше я бы не поверила в такое, а сейчас готова отдаться дьяволу, дабы вернуть его сюда, сею же секунду.
Но ничего не происходило, я оставалась здесь той же мечтательной и счастливой, которой была вчера и дни назад.

вторник, 3 февраля 2009 г.

Что дальше?

Фактически всякое крупное возрастание влечёт за собой и огромное отмирание частей и разрушение: страдание, симптомы упадка характерны для времён огромных движений вперёд: каждое плодотворное и могущественное движение человеческой мысли вызывало одновременно и нигилистическое движение. Появление крайней формы пессимизма, истинного нигилизма, могло бы быть при известных обстоятельствах признаком решительного и коренного роста, перехода в новые условия жизни.
Ф. Ницше, Воля к власти, 112.

Пожалуй нужна встряска, громкая песнь колоколов, чтобы, наконец, человек проснулся. Но сейчас пока тишина и мерное посапывание. Забытье. Летаргия. Мы так привыкли спать, что забываем, почему должны это делать.

Кто такой нигилист? Это человек, абсолютно ясно осознающий, что ему навязывают ложь. С упорством неизбежного монотонная речь вдавливает "правду". В её репертуаре библия, партийные уставы социалистов и демократов, националистов. Для единственного: умертвить человека, безболезненно сделать его рабом. Выход?

понедельник, 2 февраля 2009 г.

Agile: почему именно эта модель?

Клиент всегда прав (с Agile он прав очень часто)

К классическим моделям разработки относится водопадная [waterfall] модель. Её отличает строгая последовательность: составление плана - написание документации (под ключ) - проектирование - разработка - тестирование - ввод в эксплуатацию. В этой цепочке требования клиента должны быть жёстко описаны, и только после этого начинается работа над дизайном (архитектурой) проекта. Но кто может дать гарантию того, что требования не изменятся? Только сам клиент, но такая ситуация редка, да и невозможна, ибо заказчику не безразличны его вложения. В обратном случае вышло бы так: деньги я вложил, делайте как сочтёте нужным, а в конце меня всё устроит. Нонсенс! Требования меняются: как со стороны клиента (уточнения, пересмотры, пожелания), так и со стороны среды, в которой будет крутится продукт.

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

В случае модели Agile существует постоянное взаимодействие разработчиков с клиентом, что направлено на снижение доли ошибки в требованиях и мгновенное реагирование на изменение последних.

Возврат инвестиций

Другая немаловажная ситуация связана с материальными вкладами клиента. Если что-то пойдёт не так, и заказчик пожелает разорвать отношения с разработчиком, то в случае водопадной модели он останется без денег и без ПО. Это почти наверняка так, поскольку цикл разработки не завершён, то есть, например, не проводилось тестирование, а следовательно, продукт сырой и никому не нужный. Что в случае с Agile? Здесь иначе, даже вот как: клиент с первых итераций получает работающее ПО (пусть и не обладающее всеми нужными функциями, но стабильное).

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

Мыслить перспективой

Модель Agile исповедует работу небольшими итерациями, в которые входят работы из всех этапов проектирования: составление плана, анализ требований, разработка архитектуры, программирование, тестирования, ввод в эксплуатацию (только нагрузка на каждый вид работы разная от итерации к итерации: на первых шагах актуальна проработка прецедентов и требований; на других - программирование).

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

Вместо вывода.

Agile - ваш выбор (как клиента), если:

  • результат нужен как можно раньше
  • вы не знаете что вам нужно, но хотите узнать
  • вы желаете контролировать риски

воскресенье, 1 февраля 2009 г.

Сартр. Стена

Три арестанта, один из которых молод. Приговор, который укорачивает жизнь ровно на столько, сколько они сами готовы отдать, выбросить за ненадобностью. Экзистенция в самой крайней форме: цена жизни - вздор, когда она протянется ещё несколько часов. Может трагедия, страдание? Нет, не в этом случае. Скорее чувство искреннего присутствия в мире. Ощущение бессмысленности, но в тоже время удовольствия от прожитых мгновений. Приговорённые меняются. Они смотрят иначе, слышат иначе, чувствуют иначе. Для них открывается новое, доселе неизвестное, выраженное в образе стены, к которой они прижмутся мокрыми от пота спинами. Метаморфоза души, когда тело уже не твоё: оно боится, тянет за собой "Я" в бездну. Но то упирается, пытается смотреть, слышать и чувствовать, ведь открылась истина, до которой в другой ситуации не было бы возможности дотянуться. Исход. Обречённое бессознательное ликует от достигнутого и требует своего праздника - слиться со стеной, влажной от воспоминаний былого.

Жан Поль Сартр "Стена", читаем.