<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>developers.org.ua &#187; akhavr</title>
	<atom:link href="http://www.developers.org.ua/archives/author/akhavr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.developers.org.ua</link>
	<description>сообщество программистов</description>
	<pubDate>Fri, 05 Sep 2008 08:55:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Основи розробки ПЗ: мета + декомпозиція = TDD</title>
		<link>http://www.developers.org.ua/archives/akhavr/2006/12/28/osonvy-rozrobky-tdd/</link>
		<comments>http://www.developers.org.ua/archives/akhavr/2006/12/28/osonvy-rozrobky-tdd/#comments</comments>
		<pubDate>Thu, 28 Dec 2006 11:19:42 +0000</pubDate>
		<dc:creator>akhavr</dc:creator>
		
		<category><![CDATA[Разработка]]></category>

		<category><![CDATA[Статьи]]></category>

		<category><![CDATA[Управление проектами]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/archives/akhavr/2006/12/28/osonvy-rozrobky-tdd/</guid>
		<description><![CDATA[В цьому дописі я покажу як разом працюють добре сформульована мета та декомпозиція в розробці ПЗ і яким чином з&#8217;являється &#8220;розробка керована тестами&#8221; (Test Driven Development, TDD).
Як я вже писав раніше, найважливішим фактором в цілях в розробці програм, це конкретність.  Щойно ми маємо конкретну мету, ми можемо застосувати простий і рекурсивний процес.
Насамперед, коли Замовник [...]]]></description>
			<content:encoded><![CDATA[<p>В цьому дописі я покажу як разом працюють <a href="http://www.developers.org.ua/archives/akhavr/2006/12/13/osnovi-rozrobki-pz-dobre-sformulovana-meta/">добре сформульована мета</a> та <a href="http://www.developers.org.ua/archives/akhavr/2006/12/20/osnovi-rozrobki-pz-dekompozitsiya/">декомпозиція</a> в розробці ПЗ і яким чином з&#8217;являється &#8220;розробка керована тестами&#8221; (Test Driven Development, TDD).</p>
<p>Як я вже писав раніше, найважливішим фактором в цілях в розробці програм, це <em>конкретність</em>.  Щойно ми маємо конкретну мету, ми можемо застосувати простий і рекурсивний процес.</p>
<p>Насамперед, коли Замовник звертається з ідеєю Продукта, ми конкретизуємо її, документуючи бізнес-вимоги і контекст.  Виходячи з того, що будь-який нетривіальний продукт є, врешті-решт, нетривіальним (інакше для чого тут ми, розробники?), ми далі застосовуємо декомпозицію.</p>
<p>Завдячуючи сорокарічній історії індустрії розробки ПЗ, нам не треба винаходити структуру декомпозиції на цьому рівні.  Просто використати вже накопичений досвід.  <a href="http://www.kds.com.ua/">Ми</a> деталізуємо бізнес-вимоги в вимоги до ПЗ, що складаються з</p>
<ul>
<li>архітектури</li>
<li>типів користувачів</li>
<li>моделі даних</li>
<li>функцій користувача (use-cases)</li>
<li>інтерфейс користувача (опис екранів та форм, якщо Продукт матиме графічний інтерфейс або буде вебовим)</li>
<li>опис як все це інтегрується з іншим ПЗ і залізом (включаючи точну версію (версії) ОС, БД та веб серверів, по потребі)</li>
<li>вимоги по безпеці та конфіденціальності</li>
<li>вимоги до ліцензійної політики, де документується як Продукт буде розповсюджуватись Замовником і, відповідно, які сторонні компоненти сумістні по ліцензійним міркуванням</li>
<li>інші вимоги, по потребу</li>
</ul>
<p>і робимо з кожного пункта добре сформульовану мету.</p>
<p>Виходячи з того, що майже всі програмні проекти нетривіальні - тобто не вміщаються повністю в одній голові одного розробника - нам треба провести декомпозицію глибше.</p>
<p>Зазвичай проекти з розробки ПЗ фокусуються на функціональності.  Коли вони зосереджені на даних ми звемо їх інакше - <em>розробка БД</em>.  Коли вони про інтерфейс користувача, ми кличемо їх <em>дизайн</em> (інтерфейсів).  Жоден з цих двох типів проектів не є темою даної статті, тому ми сфокусуємосб на функціях.</p>
<p>Нетривіальна (визначенні див. вище) функціональність ПЗ знову ж таки занадто складна для миттєвої реалізації і ми проводимо декомпозицію далі.  Для кожної функції в переліку ми робимо детальну документацію:</p>
<ul>
<li>коротку назву</li>
<li>мета та опис функції</li>
<li>метод виклику (клік мишою, виклик REST HTTP, виклик функції в вихідному модулі, юніксовий шелл, т.п.)</li>
<li>потік подій</li>
<li>тести, що мають задовольняти умову &#8220;конкретності&#8221; добре сформульованої мети</li>
<li>тікети, якими ми ділимо розробку функції в одиниці роботи для планування</li>
</ul>
<p>Кожен набір тестів має перевіряти кожну можливу категорії неправильного вводу і мати щонайменш один приклад правильного вводу.</p>
<p>Звичайно, ми ділимо функцію на два або більше тікета.  Якщо вона складна або тести нетривіальні, ми призначаємо один тікет на кожен тест.</p>
<p>Тут (і тільки тут) починається власне розробка: функціональність вже добре задана, Розробник погодив з Замовником що означає <em>корректна</em> поведінка функції (use tests, Luke!).</p>
<p>Але тут є потенційна (і велика) перешкода.  В будь-якому нетривіальному проекті (ми ж не займаємость тривіальними, так?) внутрішні залежності між частинами достатньо складні для того, щоб не поміщатись в голову розробника всі одночасно.  Тому, в ідеалі, <em>всі</em> тести мають бути виконані після <em>кожної</em> зміни в вихідному коді.</p>
<p>Ручне виконання тестів швидко перетворюється на кошмар: після кожних п&#8217;яти хвилин розробки виконувати тестів на п&#8217;ять годин.  Добре, що у нас є комп&#8217;ютер для таких механічних задач <img src='http://www.developers.org.ua/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Так, ми приходимо до необхідності <em>автоматичних тестів</em>.  Прямо з вимоги <em>конкретності</em> добре сформульованої мети.</p>
<p>Навіть більше, ми не маємо заморочуватись з цього моменту структурою нашого продукту <em>занадто</em> широко.  Зрозумійте мене правильно, я не кажу що не треба <em>взагалі</em> не думати про це.  Я маю на увазі те, що ви тепер можете безпечно <em>сфокусуватись</em> виключно на наступному тесті, який ви реалізуєте.  І навіть більше, ми можемо писати спочатку тести і потім всього навсього виконувати <em>make test</em> (F9 в моєму ємаксі) для того, щоб побачити що саме не так з поточною реалізацією і в якому напрямку треба рухатись.</p>
<p>Так, відстань між просто автоматичними тестами і розробкою, керованою тестами, дуже коротка.</p>
<p>Бонуси при такому підході:</p>
<ul>
<li>моментально відновлюється фокус розробки, вне залежності коли ви перейшли з неї до іншої задачі - 5 хвилин чи 5 років тому, чи взагалі його вперше бачите</li>
<li>(бонус менеджера, як наслідок попереднього) простіше набрати персонал</li>
<li>ваш Продукт тепер має скелет, що не залежить від реалізації</li>
<li>(бонус розробника, як наслідок попереднього) простий рефакторинг</li>
<li>миттєма поставка: вам треба лише витягти з системи контролю версій останній варіант, що проходив всі тести і поставити Замовнику</li>
</ul>
<p>.. і т.д. і т.п.</p>
<p>Таким чином, все вищесказане показує як два простих принципи <a href="http://www.developers.org.ua/archives/akhavr/2006/12/13/osnovi-rozrobki-pz-dobre-sformulovana-meta/">добре сформульованої мети</a> та <a href="http://www.developers.org.ua/archives/akhavr/2006/12/20/osnovi-rozrobki-pz-dekompozitsiya/">декомпозиції</a> приводять до розробки, керованої тестами.</p>
<p>Зверніть увагу, що це лише початок <a href="http://agilemanifesto.org/">живої розробки</a>.  Викорисвоювучи розробку, керовану тестами, ви, з однаковою легкістю можете реалізувати будь-який раціональний процес розробки, від водопаду до одноденних ітерації в XP.  Єдине що тепер буде неможливим - це знову падіння в хаос.</p>
<p>Звичайно, звички не так просто перебороти і проста вимога писати автоматичні тести часто призводить до того, що розробники пишуть тести <em>після</em> коду.  Але це вже зовсім інша гра, в якій умови задачі підганяються під відповідь.  Типу як у футболі, замість того, щоб влучити м&#8217;ячем у ворота, гравець ставить ворота на м&#8217;яч (дякую за корисну аналогію <a href="http://rashkovskii.com">Юрію Рашковському</a>).</p>
<p>Деякі посилання на нещодавні дописи по TDD і що з нею може піти не так:</p>
<ol>
<li><a href="http://www-128.ibm.com/developerworks/opensource/library/os-php-unit/?ca=dgr-lnxw03UnitTestPHP">корисні критерії тестів</a></li>
<li><a href="http://www.agileadvice.com/archives/2005/05/the_qualities_o.html">якості ідеального тесту</a></li>
<li><a href="http://lauploix.blogspot.com/2006/11/create-test-layers-create-for.html">Багаторівневе тестування</a></li>
<li><a href="http://blog.james-carr.org/?p=44">Як розробка, керована тестами, може піти хибним шляхом</a></li>
<li><a href="http://epsilondelta.net/2006/12/14/python-testing-those-hard-to-reach-places/">Python dependency injection</a> - метод тестування</li>
</ol>
<p><a href="http://www.kds.com.ua/wp/2006/12/27/why-automated-tests/">English translation</a></p>
<br/><a href="http://www.developers.org.ua/archives/akhavr/2006/12/28/osonvy-rozrobky-tdd/#ratings">Оценить статью на сайте</a>.

<hr/>
<strong>Новое:</strong> мы запустили 
<a href="http://www.developers.org.ua/forum/">ФОРУМ</a>!
<hr/>
Свежая вакансия:


<a href="http://www.developers.org.ua/jobboard/747?ref=dou_rss">Программист-разработчик .NET/ MSSQL</a>
  (codasystems)

]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/akhavr/2006/12/28/osonvy-rozrobky-tdd/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Основи розробки ПЗ: декомпозиція</title>
		<link>http://www.developers.org.ua/archives/akhavr/2006/12/20/osnovi-rozrobki-pz-dekompozitsiya/</link>
		<comments>http://www.developers.org.ua/archives/akhavr/2006/12/20/osnovi-rozrobki-pz-dekompozitsiya/#comments</comments>
		<pubDate>Wed, 20 Dec 2006 09:36:57 +0000</pubDate>
		<dc:creator>akhavr</dc:creator>
		
		<category><![CDATA[Разработка]]></category>

		<category><![CDATA[Статьи]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/archives/akhavr/2006/12/20/osnovi-rozrobki-pz-dekompozitsiya/</guid>
		<description><![CDATA[Це другий допис по основах розробки ПЗ. Початок див. &#8220;Основи розробки ПЗ: добре сформульована мета&#8221;.
Цей інструмент, декомпозиція, на відміну від добре сформульованої мети, дуже знайомий розробникам.
Розділяй і володарюй - що може бути простішим?
&#8211; Як можна з&#8217;їсти слона?
&#8211; По шматочках.
Достатньо сказано на цю тему.  Завершу двома посиланнями на вікіпедію: Декомпозиція і Парадигма декомпозиції.  В [...]]]></description>
			<content:encoded><![CDATA[<p>Це другий допис по основах розробки ПЗ. Початок див. <a href="http://www.developers.org.ua/archives/akhavr/2006/12/13/osnovi-rozrobki-pz-dobre-sformulovana-meta/">&#8220;Основи розробки ПЗ: добре сформульована мета&#8221;</a>.</p>
<p><em>Цей</em> інструмент, декомпозиція, на відміну від добре сформульованої мети, <em>дуже</em> знайомий розробникам.</p>
<p>Розділяй і володарюй - що може бути простішим?</p>
<p>&#8211; Як можна з&#8217;їсти слона?<br />
&#8211; По шматочках.</p>
<p>Достатньо сказано на цю тему.  Завершу двома посиланнями на вікіпедію: <a href="http://en.wikipedia.org/wiki/Decomposition_%28computer_science%29">Декомпозиція</a> і <a href="http://en.wikipedia.org/wiki/Decomposition_paradigm">Парадигма декомпозиції</a>.  В цих статтях згадується різниця між об&#8217;єктно-орієнтованною та структурною програмною декомпозицією, але це, насправді, несуттєво.  Інструмент залишається тим же.</p>
<p>Наступна стаття буде присвячена власне реалізації <a href="http://www.developers.org.ua/archives/akhavr/2006/12/13/osnovi-rozrobki-pz-dobre-sformulovana-meta/">добре сформульованої мети</a> і декомпозиції в розробці ПЗ.</p>
<br/><a href="http://www.developers.org.ua/archives/akhavr/2006/12/20/osnovi-rozrobki-pz-dekompozitsiya/#ratings">Оценить статью на сайте</a>.

<hr/>
<strong>Новое:</strong> мы запустили 
<a href="http://www.developers.org.ua/forum/">ФОРУМ</a>!
<hr/>
Свежая вакансия:


<a href="http://www.developers.org.ua/jobboard/752?ref=dou_rss">Test and Tool developer </a>
  (mindspeed)

]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/akhavr/2006/12/20/osnovi-rozrobki-pz-dekompozitsiya/feed/</wfw:commentRss>
		</item>
		<item>
		<title>як (не-)розповсюджуються нові технології</title>
		<link>http://www.developers.org.ua/archives/akhavr/2006/12/19/how-new-technologies-spread/</link>
		<comments>http://www.developers.org.ua/archives/akhavr/2006/12/19/how-new-technologies-spread/#comments</comments>
		<pubDate>Tue, 19 Dec 2006 06:19:58 +0000</pubDate>
		<dc:creator>akhavr</dc:creator>
		
		<category><![CDATA[Бизнес]]></category>

		<category><![CDATA[Статьи]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/archives/akhavr/2006/12/19/how-new-technologies-spread/</guid>
		<description><![CDATA[Чому розробка іде так довго? Чому дійсно нові технології не розповсюджуються як пожежа?
Paul’s Pontifications » Blog Archive » New Software Technology: Blockage On Line
Every company has a few eccentric engineers who try to explain why this or that new technology would be a great investment. Sometimes they are even right. But they are almost never [...]]]></description>
			<content:encoded><![CDATA[<p>Чому розробка іде так довго? Чому дійсно нові технології не розповсюджуються як пожежа?</p>
<p><a href="http://cogito.blogthing.com/2006/12/14/new-software-technology-blockage-on-line/">Paul’s Pontifications » Blog Archive » New Software Technology: Blockage On Line</a></p>
<blockquote><p>Every company has a few eccentric engineers who try to explain why this or that new technology would be a great investment. Sometimes they are even right. But they are almost never taken seriously. And so great technologies that could actually save the world a great deal of money on software development (not to mention improve quality a lot as well) languish on the shelf.</p></blockquote>
<p>Пол дуже добре пояснює чому більшість розробників все ще ммм&#8230;. розробляє на мовах, що засновані на концепціях 60-х років.  Так, я маю на увазі C та C++, Паскаль (що вічно живий через запити на доробку програм під Дельфі) і, так, Джаву.</p>
<p>Ось чому на нас дивляться, не розуміючи, коли ми пропонуємо <a href="http://www.kds.com.ua/wp/development/pythondjango/">розробити проект на питоні</a>, не згадуючи вже і про інші, <a href="http://www.kds.com.ua/wp/2006/10/10/kds-software-group-and-verbdev-announce-a-partnership-program/">менш розповсюджені технології</a>.  Так, Ruby-on-Rails останнім часом набув певної популярності.  Але це ж єдиний приклад.</p>
<p>Отже, чи є шлях компанії з оффшорної розробки ПЗ підвищити свою продуктивність <em>не</em> виконуючи наступний вебовий проект в J2EE/ Struts/ Oracle/ що-б-ще-такого-вліпити?</p>
<p>Стратегічно, є тільки два шляхи, яким така компанія може досягти успіху:</p>
<p>1. Майте хорошу службу продажу, виконуйте обіцяне вчасно і вклавшись у бюджет.  Низький ризик, мала маржа.<br />
1. Мати хороший продукт.  Величезний ризик, величезна маржа (згадайте Skype?)</p>
<p>В будь-якому випадку, компанія має відображати потреби своїх замовників.  Але вибір інструментів на першому шляху здебільного робиться замовниками.</p>
<p>То де ж знайти таких розумних замовників?  Читайте допис Пола.</p>
<p>Єдиний життєзднаний вихід для усталеної структури керівницта перевірити нову технологію - це сформувати стартап.  Внутрішній чи виділити цілком окрему компанію несуттєво.</p>
<p>Тому, якщо ви хочете розробляти <em>не</em>-мейнстрім для когось - шукайте саме таких людей.  Знаходьте стартапи.  Станьте відомими в не-мейнстрімній спільноті вашого уподобання і слухайте уважно.</p>
<p>Ви вирішили іншим шляхом - розробити продукт?  Мої поздоровлення, ви схильні до ризику.  І ви будете винагороджені.  Коли-небуть пізніше.  Можливо.  Якось.  Просто не кладіть всі яйця в один кошик <img src='http://www.developers.org.ua/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.kds.com.ua/wp/2006/12/18/why-so-long/">Варіант англійською</a>.</p>
<br/><a href="http://www.developers.org.ua/archives/akhavr/2006/12/19/how-new-technologies-spread/#ratings">Оценить статью на сайте</a>.

<hr/>
<strong>Новое:</strong> мы запустили 
<a href="http://www.developers.org.ua/forum/">ФОРУМ</a>!
<hr/>
Свежая вакансия:


<a href="http://www.developers.org.ua/jobboard/757?ref=dou_rss">Senior PHP Developer (MGP - 114)</a>
  (MiraSoft Group)

]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/akhavr/2006/12/19/how-new-technologies-spread/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Основи розробки ПЗ: добре сформульована мета</title>
		<link>http://www.developers.org.ua/archives/akhavr/2006/12/13/osnovi-rozrobki-pz-dobre-sformulovana-meta/</link>
		<comments>http://www.developers.org.ua/archives/akhavr/2006/12/13/osnovi-rozrobki-pz-dobre-sformulovana-meta/#comments</comments>
		<pubDate>Wed, 13 Dec 2006 17:37:43 +0000</pubDate>
		<dc:creator>akhavr</dc:creator>
		
		<category><![CDATA[Разработка]]></category>

		<category><![CDATA[Статьи]]></category>

		<category><![CDATA[Учеба]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/archives/akhavr/2006/12/13/osnovi-rozrobki-pz-dobre-sformulovana-meta/</guid>
		<description><![CDATA[(гостевая статья, прислал Андрей Хаврюченко)
Враховуючи сорокарічну історію індустрії розробки програмного забезпечення, жаль що так небагато розробників розуміють базу, психологічний фон своєї роботи.
В цьому можна пересвідчитись не тільки перевіривши живу статистику успішності програмних проектів (половина проектів або відміняється або вилазить за первісні межі), але й просто поспілкувавшись з сусідами по кімнаті, співробітниками, студентами.
Я веду курс з [...]]]></description>
			<content:encoded><![CDATA[<p>(<em>гостевая статья, прислал Андрей Хаврюченко</em>)</p>
<p>Враховуючи сорокарічну історію індустрії розробки програмного забезпечення, жаль що так небагато розробників розуміють базу, психологічний фон своєї роботи.</p>
<p>В цьому можна пересвідчитись не тільки перевіривши живу статистику успішності програмних проектів (половина проектів або відміняється або вилазить за первісні межі), але й просто поспілкувавшись з сусідами по кімнаті, співробітниками, студентами.</p>
<p>Я веду <a href="http://www.kds.com.ua/training">курс з розробки програмного забезпечення</a> і тільки половина моїх студентів на першій, установчій, лекції дає правильну відповідь на питання</p>
<blockquote><p>З чого Ви почнете проект з розробки ПЗ?</p></blockquote>
<p>І це навіть в найпростішій моделі проекту: один замовник - один розробник&#8230;</p>
<p>Ну добре, мої студенти - не зірки МІТ-у або КалТеху, але половина!?..</p>
<p>Проект з розробки ПЗ - це проект.  За визначенням<br />
<a href="http://en.wikipedia.org/wiki/Project">Вікіпедії </a> та PMI це означає, що:</p>
<ul>
<li>у нього є початок</li>
<li>у нього є кінець і</li>
<li>він пов&#8217;язаний зі створеннямcreation of <em>чогось</em></li>
</ul>
<p>Іншими словами, у кожного програмного проекта є <em>мета</em>.</p>
<p>То чому ми не використовуємо методи психології, які публічні і давно доступні, як допомогу в цьому процесі досягнення мети?</p>
<p>В психології особистості, досягнення мети - одна з найбільш розроблених частей.  Фактично, все наше життя - це процес досягнення цілі, що складається з цілей меншого масштабу.</p>
<p>Між досягненям і недосягненням мети є, м&#8217;яко кажучи, помітна різниця.  І якщо мене цікавить як <em>виконати</em> мій проект, натуральним є питання</p>
<blockquote><p>Які необхідні компоненти цілі, що можна досягти?</p></blockquote>
<p>Та це ж елементарно!  &#8220;Not a rocket science&#8221;, пустити гугл шукати &#8220;<a href="http://www.google.com.ua/search?q=well+formed+goal">well formed goal</a>&#8221; (добре сформульовану мету).  На момент написання <a href="http://www.kds.com.ua/wp/2006/12/13/well-formed-outcome/">англійського варіанту</a> цієї статті, гугл видає статтю Вікіпедії&#8221;<a href="http://en.wikipedia.org/wiki/Well-formed_outcome">Well formed outcome</a>&#8221; третьою.</p>
<p>Основними критеріями добре сформульованої мети є:</p>
<ol>
<li><em>Позитивність.</em>  Це означає що будь-який проект, метою якого є, скажімо, &#8220;недопуск спаму і вірусів на комп&#8217;ютер&#8221; є одразу приреченим на невдачу.  Ніхто просто не в стані досягти <em>не</em>буття чого-небуть точно так же як і довести негативне твердження.  Для перевірки, доведіть що ви не п&#8217;єте коньяк вранці.</li>
<li><em>Конкретність.</em> Це найважливіша властивість хорошої мети в програмному проекті.  Знайте що Ви побачите, почуєте, відчуєте коли досягнете мети (наприклад певна функція ПЗ буде працювати корректно).  Будьте настільки конкретними, наскільки Ви можете.  І навіть більше.    Використовуйте всі сенсорні системи для визначення вашої мети.  Неконкретність - перша причина зриву в досягненні цілі.</li>
<li><em>Бути можливою і досяжною.</em>  Можна вважати, що практично будь-яка (корисна) мета - досяжна.  Та на практиці цей критерій насамперед означає, що Ви, той хто прагне досягти цієї мети, вважаєте її можливою та досяжною.  <em>Прямо тут і зараз.</em>  Цей критерій пов&#8217;язаним з наступним:</li>
<li><em>Наявність всіх ресурсів.</em>  Майте комп&#8217;ютре, майте інтернет-з&#8217;єднання, майте електрику та волю для виконання проекту, знайте та умійте те, що треба, якісно спілкуйтесь з Замовником, і т.д., і т.п.  Майже будь-що можна вважати ресурсом (включаючи перелік цих критеріїв), що Вам доступен або не доступен.  З мого досвіду, недостатні ресурси - друга за частотою причина недосягнення мети.</li>
<li><em>Добре окреслений часовий проміжок.</em>  Ні, пане Замовнику <em>це має бути готово на вчора</em> не являється добре окресленим часовим проміжком.</li>
<li><em>Екологічність.</em>  Ви, хто працює над досягненням результату, знайте чого він буде коштувати і що за собою потягне.  Так, отримати мілліон внаслідок грабунку банку може бути добре сформульованою метою.  Але тільки якщо Ви приймаєте ціни та наслідки такої поведінки.  Я - ні.</li>
</ol>
<p>Весь механізм досягнення добре сформульованих цілей забезпечується самою природою.  Мозок людини, від кори до спинного мозку налаштований на досягнення цілей.  Вся еволюція від бактерії через трилобітів до <em>homo sapiens</em> - це процес успішного досягнення цілей.  Ті, хто не досягав мети - зходив з дистанції.  Його з&#8217;їдали.  Так що буквально кожна людина (я не знаю нелюдських розробників ПЗ, якщо вам такі відомі - дайте знати) має всередені виключно потужний механізм досягнення будь-якої мети.</p>
<p>Для мене, програмний проект - це кампанія по перекладу.  Розробник перекладає ідеї Замовника на машинну мову.  Критерії, окреслені вище - всього навсього інструкції для перекладу нечітких намірів в <em>щось</em> що наша підсвідомість розуміє і звична до виконання.</p>
<p>То чому б реально не зробити перший крок для досягнення мети - добре її визначити?</p>
<p>Англійський варіант <a href="http://www.kds.com.ua/wp/2006/12/13/well-formed-outcome/">Software Development Basics: Well-Formed Outcome</a></p>
<br/><a href="http://www.developers.org.ua/archives/akhavr/2006/12/13/osnovi-rozrobki-pz-dobre-sformulovana-meta/#ratings">Оценить статью на сайте</a>.

<hr/>
<strong>Новое:</strong> мы запустили 
<a href="http://www.developers.org.ua/forum/">ФОРУМ</a>!
<hr/>
Свежая вакансия:


<a href="http://www.developers.org.ua/jobboard/308?ref=dou_rss">Senior .NET Developer, EPAM</a>
  (EPAM Systems, Kiev, Kharkov, Lviv, Dnepropetrovsk)

]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/akhavr/2006/12/13/osnovi-rozrobki-pz-dobre-sformulovana-meta/feed/</wfw:commentRss>
		</item>
		<item>
		<title>No Rigid Agile, just Rigid Minds</title>
		<link>http://www.developers.org.ua/archives/akhavr/2006/12/05/no-rigid-agile-just-rigid-minds/</link>
		<comments>http://www.developers.org.ua/archives/akhavr/2006/12/05/no-rigid-agile-just-rigid-minds/#comments</comments>
		<pubDate>Tue, 05 Dec 2006 19:28:16 +0000</pubDate>
		<dc:creator>akhavr</dc:creator>
		
		<category><![CDATA[Управление проектами]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/archives/akhavr/2006/12/05/no-rigid-agile-just-rigid-minds/</guid>
		<description><![CDATA[Прокоментую &#8220;Rigid Agile?&#8220;:
Mishkin Berteig from Agile Advice follows up and tries to explain. The hypothetical situation is Sarah. Sarah’s bosses want her to work on a different project for a day, to add a feature that would give them a sale. To me, this is a simple cost/benefit analysis. Is the feature (and resulting sale) [...]]]></description>
			<content:encoded><![CDATA[<p>Прокоментую &#8220;<a href="http://fishbowl.pastiche.org/2006/11/16/rigid_agile">Rigid Agile?</a>&#8220;:</p>
<blockquote><p>Mishkin Berteig from Agile Advice <a href="http://www.agileadvice.com/archives/2006/11/the_case_for_co.html">follows up and tries to explain</a>. The hypothetical situation is Sarah. Sarah’s bosses want her to work on a different project for a day, to add a feature that would give them a sale. To me, this is a simple cost/benefit analysis. Is the feature (and resulting sale) worth losing a day of Sarah’s work on her current project? If so, get the stakeholders to remove one day of work from the current iteration to compensate. Problem solved.</p>
<p>[...]As an exercise, re-read the two articles, and all the pronouncements about how Sarah spending a day on another project would “stop the whole team” (Berteig’s words), cause the whole iteration to be reset and seriously damage both the business’s trust in the development team and Sarah’s self-worth. Now imagine she instead had to take the day off to care for her sick three-year old son.</p></blockquote>
<p>Я повністю погоджуюсь з <a href="http://www.agileadvice.com/archives/2006/11/the_case_for_co.html">аналізом AgileAdvice</a>.  І це не зміниться доти, доки хто-небуть не зможе звести поряд:</p>
<ul>
<li>сейлза або Замовника що хоче &#8220;всього двогодинну&#8221; фічу що &#8220;має бути в онлайні вчора&#8221;</li>
<li>Замовника поточного проекту</li>
<li>розробників.</li>
</ul>
<p>До цих пір <strong>жодного</strong> рішення, що вдовольнить всіх, досягти <strong>неможливо</strong>.  Питання: наскільки часто у вас вдовольняються ці умови?  У мене - досить рідко.</p>
<p>І, навіть можливість досягнення рішення, не гарантує що воно буде знайдено.  Навіть якщо цей сейлз і Замовник поточного проекту - одна і та ж людина.  Я на те, що вони домовляться, грошей не поставлю - у мене є такий замовник.<br />
Це трапляється тому, що кожен замовник (включаючи замовника що прямо зараз сплачує твою роботу) інтерпретує <strong>будь-які</strong> слова сказані (і навіть не сказані) йому як твоє зобов&#8217;язання.  Навіть якщо було написано тричі 24-м кеглем і жирним шрифтом, що це лише попередня оцінка. <img src='http://www.developers.org.ua/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
І будьте певні, будь-хто, хто просить тебе втулити &#8220;термінову крихітну додаткову опцію всього на дві години&#8221; очікує що при цьому всі ваші попередні зобов&#8217;язання будуть дотримані.  <strong>Навіть якщо він каже зворотнє!</strong> (Невже хтось очікує, що він скаже <strong>своєму  </strong>боссу/замовнику, що він власноруч відклав проект?  Ха!  Завжди є розробники, на яких можна ткнути пальцем!)</p>
<p>Отже, єдиним <u>чистим</u> рішенням, якщо таке відбувається на початку ітерації - злити план ітерації в /dev/null і перепланувати її.  Перезаключивши всі домовленності по ній.</p>
<p>Або явно сказати що <strong>нічого</strong> на даній ітерації не гарантується.<br />
Якщо хтось думає, що є інше рішення, у мене є для нього <strong>крихітний</strong> проект &#8220;з фіксованими вимогами&#8221; <img src='http://www.developers.org.ua/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  І Бруклінський міст на додаток.</p>
<p>Ах да!..    Люди хворіють&#8230;  Ну да, вони уходять у відпустку, хворіють і їх збиває автобус.  Но хіба це специфічне для Agile Development?<br />
Вдалої розробки!</p>
<p><a href="http://www.kds.com.ua/wp/2006/12/05/no-rigid-agile-just-rigid-minds/">English translation</a></p>
<br/><a href="http://www.developers.org.ua/archives/akhavr/2006/12/05/no-rigid-agile-just-rigid-minds/#ratings">Оценить статью на сайте</a>.

<hr/>
<strong>Новое:</strong> мы запустили 
<a href="http://www.developers.org.ua/forum/">ФОРУМ</a>!
<hr/>
Свежая вакансия:


<a href="http://www.developers.org.ua/jobboard/754?ref=dou_rss">Technical Writer</a>
  (mindspeed)

]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/akhavr/2006/12/05/no-rigid-agile-just-rigid-minds/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
