<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Мурк Дотком</title>
	<atom:link href="http://mourk.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mourk.com</link>
	<description>70 лет в интернете</description>
	<lastBuildDate>Tue, 25 Oct 2011 19:35:53 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.3</generator>
	<item>
		<title>Resolution Independence — родовая травма компьютеров&#160;Apple</title>
		<link>http://mourk.com/2011/10/25/apple-resolution-independence-sucks/</link>
		<comments>http://mourk.com/2011/10/25/apple-resolution-independence-sucks/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 19:32:46 +0000</pubDate>
		<dc:creator><![CDATA[mourk]]></dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[health]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://mourk.com/?p=196</guid>
		<description><![CDATA[Совсем недавно вышла долгожданная операционная система Mac OS Lion. В нее вошло множество полезных изменений, повышающих удобство работы с системой и делающих ее более похожей на&#160;iOS. К сожалению, Apple не реализовала в операционной системе то, о&#160;чем многие пользователи (включая меня) просят уже давно и&#160;что существует в других ОС — resolution&#160;independence. Что такое Resolution Independence,&#160;или независимость [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Совсем недавно вышла долгожданная операционная система <a href="http://www.apple.com/ru/macosx/lion/">Mac OS Lion</a>. В нее вошло множество полезных изменений, повышающих удобство работы с системой и делающих ее более похожей на&nbsp;iOS. К сожалению, Apple не реализовала в операционной системе то, о&nbsp;чем многие пользователи (включая меня) просят уже давно и&nbsp;что существует в других ОС — <a href="http://en.wikipedia.org/wiki/Resolution_independence">resolution&nbsp;independence</a>.</p>
<p>Что такое Resolution Independence,&nbsp;или независимость от разрешения, если по-русски? RI — это возможность операционной системы рендерить определенные элементы интерфейса без жесткой их привязки к пиксельной сетке: пропорции этих элементов по отношению к другим элементам могут меняться при изменении разрешения. Необходимо это для того, чтобы люди с особо крупными&nbsp;или особо мелкими разрешениями экрана видели элементы интерфейса такого&nbsp;же размера, как и&nbsp;остальные.</p>
<p>Частным, наиболее востребованным, случаем RI являются масштабируемые шрифты, независящие от разрешения. Не уверен, реализован&nbsp;ли в <span style="white-space:nowrap">какой-то</span> операционной системе полноценный RI, но независимые от разрешения шрифты реализованы в AmigaOS еще в&nbsp;1991, в Windows — в 1995&#8230; сейчас 2011 год, и независимые от разрешения шрифты не реализованы в Mac OS до сих&nbsp;пор.</p>
<p><img src="http://mourk.com/wp-content/uploads/2011/10/OSX_ResIndependance_Comparison.png" alt="OSX ResIndependance Comparison" title="OSX_ResIndependance_Comparison.png" border="0" width="500" height="250" /></p>
<h3>Так в чем&nbsp;же&nbsp;проблема?</h3>
<p>Чтобы понять проблему, давайте измеряем физическое разрешение стандартных экранов при помощи <a href="http://pxcalc.com/">простого&nbsp;калькулятора</a>.</p>
<ul>
<li>Рядом у меня стоит 19-дюймовый монитор, его разрешение — 1280&times;1024. В прошлом все операционные системы были рассчитаны на такое соотношение сторон и физическое разрешение, которое составляет 86 DPI (точек на дюйм). Запомните это значение. При таком значение DPI во всех операционных системах можно работать, чрезмерно не напрягая&nbsp;зрение.</li>
<li>Этот текст я пишу за 24-дюймовым монитором с разрешением 1920&times;1200, его физическое разрешение — 94.3 DPI. При таком разрешении физический размер текста в программах уже немного меньше, когда кегель ниже 10, глаза очень быстро&nbsp;устают.</li>
<li>У меня есть MacBook Pro (выпущенный в конце прошлого года) с матовым экраном. Диагональ экрана ноутбука — 15.4 дюйма, а разрешение 1680&times;1050, то есть физическое разрешение у него получается аж 128.6 DPI. Это почти на 50% больше стандартных 86DPI, то есть текст на экране становится на 50% мельче. При таком разрешении практически во всех программах с настройками по-умолчанию человеку с нормальным зрением работать очень неудобно, человеку с плохим зрением — просто&nbsp;невозможно!</li>
</ul>
<p>В результате в каждой программе  мне приходится увеличивать размеры шрифтов, чтобы с компьютером можно было комфортно работать&#8230; И то удается его сменить не&nbsp;во всех программах. Еще хуже дело обстоит с вебом. Теоретически достаточно в броузере увеличить размер шрифтов по-умолчаниию. И действительно, на всех сайтах в интернете, где тексты заданы в относительных величинах (em, %), текст становится нормального размера&#8230; К сожалению, 80-85% всех сайтов в интернете верстают мудаки, не заботащиеся о пользователях. Они задают  размеры шрифтов абсолютными величинами&#8230; В результате при высоком разрешении текст всегда очень-очень&nbsp;мелкий.<br />
Но уж лучше я везде буду вручную увеличивать шрифты, чем пользоваться ноутбуком с глянцевым экраном (кстати, у глянцевого Macbook Pro физическое разрешение 108 DPI, что тоже слишком мелко, но и не&nbsp;катастрофично).</p>
<p>Прослеживается еще одна неприятная тенденция — компания Apple постепенно уменьшает диагонали экранов в своих компьютерах iMac, оставляя прежние разрешения. То есть раньше разрешение 1920&times;1080 было у 23-дюймовой модели, и 2560&times;1440 у 30-дюймовой. Теперь&nbsp;же такие разрешения у&nbsp;21.5 и 27-дюймовых моделей соответственно. DPI первой — 102.5, второй —&nbsp;108.8.</p>
<p>Однажды я запустил Windows 7 в виртуальной машине на своем макбуке&#8230; В настройках экрана я выбрал использование шрифтов размером 125% вместо стандартных ста&#8230; И в&nbsp;миг система стала показывать шрифты удобоваримого размера! Во всех приложениях, на всех веб-сайтах! То, на&nbsp;что в&nbsp;MacOS у меня уходят часы настройки, в Windows решается за считаные секунды&#8230; уже 16 лет&nbsp;подряд!<br />
Меня впечатлило одно из обсуждений <a href="http://forums.macrumors.com/archive/index.php/t-352057.html">проблемы Resolution Independence на маке</a> — из него видно, что многие люди покупали топовые модели Macbook Pro и&nbsp;iMac с высоким DPI, а потом&nbsp;либо возвращали их назад в магазин,&nbsp;либо ставили Windows вместо MacOS, потому что элементы интерфейса системы на&nbsp;их экранах были слишком&nbsp;мелкими.</p>
<p><img src="http://mourk.com/wp-content/uploads/2011/10/windowsrules.jpg" alt="Windowsrules" title="windowsrules.jpg" border="0" width="500" height="360" /></p>
<p>Меня очень угнетает тот факт, что проблема существует уже давно, а&nbsp;Apple не делает никаких телодвижений чтобы решить ее: концентрируется вместо этого на простоте перехода новых пользователей с iOS на&nbsp;MacOS вместо того, чтобы решить проблемы старых пользователей. Для меня это послужило веской причиной дальнейшего использования т.н. Hackintosh&#8217;а на домашнем компьютере вместо покупки&nbsp;iMac&#8217;а.</p>
<p>Надеюсь, эта статья поможет людям не допустить ошибку при покупке техники&nbsp;Apple.</p>
]]></content:encoded>
			<wfw:commentRss>http://mourk.com/2011/10/25/apple-resolution-independence-sucks/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Обзор очков Gunnars для работы за&#160;компьютером</title>
		<link>http://mourk.com/2011/09/06/gunnars-glasses-for-computer/</link>
		<comments>http://mourk.com/2011/09/06/gunnars-glasses-for-computer/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 07:38:25 +0000</pubDate>
		<dc:creator><![CDATA[mourk]]></dc:creator>
				<category><![CDATA[Lifehack]]></category>
		<category><![CDATA[health]]></category>
		<category><![CDATA[lifehacks]]></category>

		<guid isPermaLink="false">http://mourk.com/?p=188</guid>
		<description><![CDATA[Давно уже меня волнует проблема усталости глаз при работе за компьютером. В сотнях однообразных статей-советов на разных лайфхак-сайтах рекомендуют делать перерывы каждые N минут, использовать для этого специальные таймеры, делать упражнения, чтобы не развивалась близорукость. Но это как-то сложно и неудобно: я&#160;не хочу забивать напоминаниями свой календарь, GTD-планировщик&#160;или ставить на компьютер специальные раздражающие таймеры, заставляющие [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="http://mourk.com/wp-content/uploads/2011/09/gunnars-glasses-300x199.jpg" alt="Очки Gunnars" title="gunnars-glasses-300x199.jpg" border="0" width="300" height="199" style="float:left; padding-right: 0.5em" />Давно уже меня волнует проблема усталости глаз при работе за компьютером. В сотнях однообразных статей-советов на разных лайфхак-сайтах рекомендуют делать перерывы каждые N минут, использовать для этого специальные таймеры, делать упражнения, чтобы не развивалась близорукость. Но это <span style="white-space:nowrap">как-то</span> сложно и неудобно: я&nbsp;не хочу забивать напоминаниями свой календарь, GTD-планировщик&nbsp;или ставить на компьютер специальные раздражающие таймеры, заставляющие выходить из состояния «потока», чтобы давать глазам&nbsp;отдохнуть.</p>
<p>Несколько месяцев назад сотрудники нашли <a href="http://habrahabr.ru/blogs/gadgets/121142/">статьи</a> (<a href="http://habrahabr.ru/blogs/gadgets/121230/">еще одна</a>) об очках Gunnars, которые помогают меньше уставать при работе за компьютером. Я и раньше слышал о специальных очках для работы за компьютером, но&nbsp;это были <span style="white-space:nowrap">какие-то</span> отечественные поделки жуткого вида, эффект которых никто из моих знакомых не&nbsp;подтверждал.<br />
Вскоре сотрудник купил себе очки Gunnars Halogen и подтвердил положительный эффект. После этого очки заказал и&nbsp;я.</p>
<p>О <a href="http://www.gunnars.com/technology/">технологиях</a> компании Gunnars и теоретических вопросах  можете почитать в указанных выше статьях на Хабрахабре и&nbsp;на сайте Gunnars, я&nbsp;же собираюсь поделиться собственными&nbsp;впечатлениями.</p>
<h3>Впечатления</h3>
<p>Итак, небольшой обзор в&nbsp;пунктах:</p>
<ul>
<li>В линейке Gunnars много разных очков (стоят от&nbsp;$100 до&nbsp;$189). Я решил не рисковать и взял самые навороченные — <a href="http://www.gunnars.com/shop/Halogen.html">Halogen</a>. Так что обзор посвящен именно им, эффект других моделей может быть немного другим.&nbsp;</li>
<li>Очки немного выгнутые, в&nbsp;них угол обзора больше, чем в обычных, изображение немного контрастней, и кажется, что&nbsp;они его самую малость приближают, хотя заявлено, что без&nbsp;диоптрий.</li>
<li>Сделаны из пластика, достаточно качественного и легкого. В других моделях встречаются и металлические оправы. Веселит гордая надпись Made In China на одной из&nbsp;дужек.</li>
<li>В этих очках иногда чувствуешь, что у тебя чуть-чуть слезятся глаза и потому моргаешь чаще&nbsp;обычного.</li>
<li>Когда снимаешь очки — несколько секунд чувствуешь дезориентацию, экран монитора кажется&nbsp;выпуклым.</li>
<li>В первый&nbsp;же день использования я почувствовал положительный эффект от очков. Вечером после работы резкость зрения у меня обычно падает, но с этими очками вечером зрение так&nbsp;же резко, как и&nbsp;днем!</li>
<li>Общая усталость после работы за компьютером действительно немного меньше. Как оказалось, в этом есть и свой минус — тянет посидеть за компьютером дольше, потому что&nbsp;не чувствуешь естественную усталость глаз, как прежде — в результате можешь еще сильнее насиловать свой&nbsp;организм.</li>
<li>В играх, вопреки моим ожиданиям, измененный угол обзора не помог вообще никак.  В Quake Live и Battlefield BC2 я&nbsp;не стал лучше стрелять и&nbsp;не стал быстрее замечать врагов, появляющихся с края экрана. С другой стороны, меньше устаешь во время игры, особенно хорошо я прочувствовал это во время прохождения Deus Ex: Human Revolution с&nbsp;его 20+ часовым&nbsp;геймплеем.</li>
<li>В комплект поставки, помимо самих очков, входят рекламные буклеты, скидочный купон и футляр для очков. Раньше давали более-менее качественный футляр, теперь&nbsp;же — хлипкий картонный, но и&nbsp;на том&nbsp;спасибо.</li>
<li>Работать с цветом в этих очках по понятным причинам не следует, потому специально для фотографов, графических дизайнеров и.т.п. есть возможность заказать очки с не-желтыми стеклами. На сайте Gunnars, правда, сказано, что эффект от&nbsp;них не настолько выражен, как от&nbsp;желтых.</li>
<li>Самое неприятное — доставка. Когда сотрудники заказывали очки в Киев — это им стоило $50. Мне, спустя несколько недель, доставка стоила уже все $60. При этом сотрудникам очки пришли крутой почтой FedEx, мне&nbsp;же их послали дешевеньким USPS Internarional, с которым ты даже не можешь отследить состояние посылки, когда она покидает территорию США. Я написал в Gunnars жалобу по этому поводу, они извинились и сказали, что отправка в Украину FedEx&#8217;ом за $50 была для&nbsp;них убыточной, потому перешли на&nbsp;USPS. Самое главное разочарование ждало меня, когда посылка, наконец, пришла: на посылке было четко написано, что стоимость доставки — $30, а не&nbsp;$60.</li>
</ul>
<p><img src="http://mourk.com/wp-content/uploads/2011/09/halogen_400.jpg" alt="Gunnars Halogen" title="halogen_400.jpg" border="0" width="400" height="169" /></p>
<h3>Выводы</h3>
<p>Сейчас, спустя месяц после покупки, у меня сформировалось четкое мнение об очках Gunnars. Они не избавили от головных болей, не улучшили сон и&nbsp;не сделали мое зрение лучше, но в&nbsp;них я действительно устаю меньше при работе за компьютером, и резкость зрения к вечеру не&nbsp;падает.<br />
Людям, проводящим за компьютером пару часов в день, такие очки ни к чему, тем&nbsp;же, кто за компьютером регулярно проводит более 5 часов, настоятельно рекомендую очки Gunnars. Цены на очки и, особенно, на доставку мне кажутся неоправданно завышенными, но зрение все-таки&nbsp;дороже.<br />
Во избежание недоразумений хочу сразу сказать — эти очки не заменяют зрительные упражнения и перерывы в&nbsp;работе.</p>
<p>Если будете покупать до 30 сентября 2011 — можете воспользоваться моим 15% скидочным кодом <em>ThankU11</em>. Очки Halogen, например, с&nbsp;ним будут стоить не&nbsp;$189, а&nbsp;$160.</p>
]]></content:encoded>
			<wfw:commentRss>http://mourk.com/2011/09/06/gunnars-glasses-for-computer/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Agile головного&#160;мозга</title>
		<link>http://mourk.com/2011/08/16/agile-wannabes/</link>
		<comments>http://mourk.com/2011/08/16/agile-wannabes/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 18:59:58 +0000</pubDate>
		<dc:creator><![CDATA[mourk]]></dc:creator>
				<category><![CDATA[Менеджмент]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://mourk.com/?p=179</guid>
		<description><![CDATA[Помню, лет 5-6 назад гибкие методологии разработки казались чем-то очень простым, удобным и человечным — глотком свежего воздуха на фоне монструозных бюрократических процессов разработки ПО, царивших в то&#160;время. Времена меняются, теперь Agile — это мейнстрим. И что&#160;же, благодаря этому повсеместно программные продукты стали делаться качественнее и удобнее для конечных пользователей? Проекты стали делаться без срывов [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Помню, лет 5-6 назад гибкие методологии разработки казались <span style="white-space:nowrap">чем-то</span> очень простым, удобным и человечным — глотком свежего воздуха на фоне монструозных бюрократических процессов разработки ПО, царивших в то&nbsp;время.<br />
Времена меняются, теперь Agile — это мейнстрим. И что&nbsp;же, благодаря этому повсеместно программные продукты стали делаться качественнее и удобнее для конечных пользователей? Проекты стали делаться без срывов сроков и раздувания бюджета? Несомненно — в редких случаях стало лучше, но в основном&nbsp;же все осталось примерно на том&nbsp;же уровне, что и&nbsp;было.<br />
Знаете&nbsp;почему?</p>
<h3>Проблема в&nbsp;людях!</h3>
<p>Процессы изменились, но люди остались прежними — такими&nbsp;же трусливыми некомпетентными балбесами, для которых формальное применение процесса важнее пользы (или вреда) от этого процесса. Ведь для большего нужно включать мозг, <span style="white-space:nowrap">что-то</span> анализировать, брать на себя&nbsp;ответственность.</p>
<p>Представим классическую для вебдванольного аутсорсинга ситуацию: клиент, не понимающий, чего&nbsp;же он хочет, менеджер проекта и аналитик (возможно, менеджер и аналитик в одном лице), роли которых сведены к интерпретации требований клиента на понятный программистам язык и контролю выполнения ими работы, ну и, конечно&nbsp;же, кучка инженеров, ожидающих любых указаний «сверху», требующих, чтобы все было описано как можно подробнее, и уверенных, что&nbsp;их задача состоит в том, чтобы писать хороший код и угождать&nbsp;руководству.</p>
<p>Такой продукт ОБРЕЧЕН! В лучшем случае, его удастся сделать, уложившись в срок, может даже в бюджет, но&nbsp;он никогда не станет успешным,&nbsp;понимаете?</p>
<h3>Корни&nbsp;профанации</h3>
<p><img style="float: right;" title="believe-agile.jpg" src="http://mourk.com/wp-content/uploads/2011/08/believe-agile.jpg" alt="Agile головного мозга" width="275" height="256" align="right" border="0" />Проблема в том, что к Agile-техникам люди подходят, как к формальному набору обрядов, которым необходимо следовать с религиозным бездумием. Типичный список обрядов&nbsp;таков:</p>
<ol>
<li>Ежедневное стоячее scrum-совещание всей команды на 15 минут, где все должны ответить на 3 вопроса: «что сделал», «что будешь делать?», «что препятствует выполнению твоей&nbsp;работы?».</li>
<li>Разбиваем процесс на итерации (обычно одинаковой&nbsp;продолжительности).</li>
<li>Ведем требования к проекту в виде User Stories. Вешаем их&nbsp;на доску, оцениваем истории в поинтах вместо часов. Может, даже играем с членами команды в planning&nbsp;poker.</li>
<li>В конце итерации проводим ретроспективу, чтобы послушать, кто что думает о&nbsp;происходящем…</li>
<li>Некоторые еще добавляют чисто инженерные практики вроде парного программирования, разработки через тесты и парного code&nbsp;review.</li>
</ol>
<p>Скажите честно, вы действительно думаете, что именно в этих пяти пунктах состоит Agile и именно это нужно, чтобы продукт, который вы делаете, стал&nbsp;успешным?</p>
<p><img title="Fotolia_32789945_XS.jpg" src="http://mourk.com/wp-content/uploads/2011/08/Fotolia_32789945_XS.jpg" alt="Fotolia 32789945 XS" width="424" height="283" border="0" /></p>
<p>Давайте взглянем на <a href="http://agilemanifesto.org/iso/ru/">Agile-манифест</a> — документ, на основе которого как&nbsp;раз и появились гибкие методологии&nbsp;разработки:</p>
<blockquote>
<ul>
<li><em>Люди и взаимодействие</em> важнее процессов и&nbsp;инструментов</li>
<li><em>Работающий продукт</em> важнее исчерпывающей&nbsp;документации</li>
<li><em>Сотрудничество с заказчиком</em> важнее согласования условий&nbsp;контракта</li>
<li><em>Готовность к изменениям</em> важнее следования первоначальному&nbsp;плану
</li>
</ul>
<p>То есть, не отрицая важности того, что справа, мы всё-таки больше ценим то, что&nbsp;слева.
</p>
</blockquote>
<p>По-моему, очень зрелые и трезвые мысли. Обратите внимание, в манифесте вообще ничего не говорится о пяти описанных выше обрядах! Более того, в определенных ситуациях эти обряды могут быть даже противоположны тому, о&nbsp;чем говорится в&nbsp;Agile-манифесте.<br />
Успешное выполнение проектов и создание успешных софтверных продуктов — это, в первую очередь, вопрос культуры и опыта, но никак не методологии! Гибкие методологии — это всего лишь наборы рекомендаций и техник, без соответствующей культуры они не помогут вашему проекту ровным счетом&nbsp;ничем!</p>
<p>Scrum-совещания быстро станут унылой бюрократией, если члены команды и&nbsp;без того регулярно делятся друг с другом информацией о своей работе и проекте,&nbsp;либо если члены команды просто не видят пользы в этих совещаниях. Разделение проектной работы на итерации и&nbsp;их четкое планирование вряд&nbsp;ли даст <span style="white-space:nowrap">какой-то</span> ощутимый выхлоп, если работа над проектом состоит, в основном, в исправлении багов и вялой поддержке пользователей. Planning Poker вряд&nbsp;ли принесет хоть <span style="white-space:nowrap">какую-то</span> пользу, если команда состоит из одного разработчика, одного тестировщика и одного дизайнера, каждый из которых слабо разбирается в работе коллег. Code Review и TDD для одноразовых проектов (рассчитанных, например, чтобы один раз показать <span style="white-space:nowrap">где-то</span> на презентации и все) скорее помогут вам успешно просрать бюджет, чем сделать продукт лучше для целевой&nbsp;аудитории.</p>
<p>Работать надо&nbsp;не «чтобы было Agile», а с умом! Управление проектами — это не&nbsp;про методологии, это про людей, про&nbsp;их цели и ожидания, про&nbsp;их коммуникацию, про их&nbsp;мотивацию!</p>
<h3>Что&nbsp;же нужно для гибкого процесса&nbsp;разработки?</h3>
<p>Я постарался собрать информацию о том, что&nbsp;же нужно для разработки успешных продуктов на основе публичной информации о разных проектах, данных от знакомых менеджеров и инженеров, личного опыта и здравого смысла. На мой взгляд,&nbsp;это:</p>
<ul>
<li>Четкое понимание бизнеса, для которого делаются продукты: понимание целевой аудитории продуктов, которые ты делаешь. Эти знания должны быть, как минимум, у лидеров проектной команды и заказчика проекта, а в идеале — у всех участвующих в процессе&nbsp;людей.</li>
<li>Профессионализм проектной команды. Если у&nbsp;нас есть несколько талантливых опытных разработчиков, дизайнер, QA и менеджер — этого еще не достаточно, чтобы считать команду профессиональной, нужно еще многое… Умение всех этих людей работать над общей целью, отлично осознавая, как делается работа коллег в смежных областях. Понимание того, как следует себя вести, если <span style="white-space:nowrap">что-то</span> пошло не так, как планировалось, и нужно резко менять курс, импровизировать. Иногда необходимо браться за откровенно неинтересную&nbsp;работу.</li>
<li>Профессионализм заказчика продукта (в случае работы над собственным продуктом это может быть сама проектная команда). Заключается он в&nbsp;том самом понимании бизнеса, умении адаптироваться к изменениям рынка, прислушиваться к мнению команды, умению вовремя распознать в команде проекта инвалидов и послать их&nbsp;подальше.</li>
<li>Достаточная смелость, чтобы вовремя признать свои ошибки и донести их&nbsp;до остальных участников проекта, а&nbsp;не стараться тянуть до последнего&nbsp;или вообще скрыть свои ошибки. Опять&nbsp;же касается это всех людей, вовлеченных в&nbsp;проект.</li>
<li>Мотивация, конечно&nbsp;же! Если участники проекта по <span style="white-space:nowrap">какой-то</span> причине не хотят заниматься тем, чем занимаются — ничего хорошего из этого не выйдет, сила воли безграничной не&nbsp;бывает.</li>
</ul>
<p>Если вам есть, что сюда добавить — отметьтесь в комментариях к&nbsp;статье.</p>
<h3>На&nbsp;прощание</h3>
<p>Нужно думать головой, а&nbsp;не пытаться следовать методологиям как религиям. Если людям не интересен проект, над которым они работают, а лидеры проекта не понимают, чего хотят — то проблема именно в людях, а&nbsp;не в «неправильной» методологии. Даже если будешь проводить стэндап-митинги, ретроспективы и играть в planning poker — проект всеравно&nbsp;сдохнет!<br />
Работать с умом гораздо сложнее тупого следования набору формальных обрядов, но&nbsp;это единственный надежный способ делать качественные программные продукты в рамках разумных сроков и&nbsp;бюджетов.</p>
]]></content:encoded>
			<wfw:commentRss>http://mourk.com/2011/08/16/agile-wannabes/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Как я реализовал GTD с помощью Remember The&#160;Milk</title>
		<link>http://mourk.com/2011/08/08/gtd-with-remember-the-milk/</link>
		<comments>http://mourk.com/2011/08/08/gtd-with-remember-the-milk/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 21:55:09 +0000</pubDate>
		<dc:creator><![CDATA[mourk]]></dc:creator>
				<category><![CDATA[Lifehack]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[Remember The Milk]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://mourk.com/?p=160</guid>
		<description><![CDATA[Если вы не знаете, что означает методология Getting Things Done — пожалуйста, почитайте о ней, прежде чем продолжать чтение этой&#160;статьи. Однажды ко&#160;мне в гости зашел приятель и спросил, чем я обычно занимаюсь по работе. Я просто открыл Remember The Milk и показал ему список выполненных&#160;задач. Remember The Milk — это очень гибкое и удобное веб-приложение [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Если вы не знаете, что означает методология Getting Things Done — пожалуйста, <a href="http://ru.wikipedia.org/wiki/Getting_Things_Done">почитайте о ней</a>, прежде чем продолжать чтение этой&nbsp;статьи.</p>
<p>Однажды ко&nbsp;мне в гости зашел <a href="http://www.ivanpirog.com/">приятель</a> и спросил, чем я обычно занимаюсь по работе. Я просто открыл <a href="http://www.rememberthemilk.com/">Remember The Milk</a> и показал ему список выполненных&nbsp;задач.</p>
<p><img src="http://mourk.com/wp-content/uploads/2011/08/rtm-logo.png" alt="Rtm logo" title="rtm logo.png" border="0" width="200" height="100" align="left" /><a href="http://www.rememberthemilk.com/">Remember The Milk</a> — это очень гибкое и удобное веб-приложение для работы со списками задач, не навязывающее <span style="white-space:nowrap">каких-то</span> жестких правил работы. Благодаря этому RTM можно использовать просто как линейный список задач(вроде списка покупок в магазине), но можно реализовать на&nbsp;его основе свою мощную GTD-систему. Причем, реализации у разных людей получаются иногда совершенно&nbsp;непохожими.</p>
<p>RTM существует уже 4&nbsp;или 5 лет, и я пользуюсь им почти с самого старта проекта. За это время я перепробовал десятки разных GTD-планировщиков, но всякий раз возвращался назад к RTM — ни одно другое средство не было для меня столь&nbsp;же&nbsp;удобным.</p>
<h3>Организация списков задач и поиск по&nbsp;ним</h3>
<p>В Remember The Milk у меня существует несколько списков задач: 4 базовых и 2-3 smart-list&#8217;а (о них позже). Для начала давайте поговорим о базовых&nbsp;списках:</p>
<ul>
<li><strong>Inbox</strong> — по-умолчанию все новые задачи попадают именно в этот список, по сути он является дампом памяти. Появилась <span style="white-space:nowrap">какая-то</span> идея, задача&nbsp;или важная мысль — бросаешь ее в&nbsp;inbox, чтобы не&nbsp;забыть.</li>
<li><strong>Actions</strong> — самый важный список.  В нем находятся задачи на ближайшие несколько дней. Большинство задач в нем&nbsp;либо нужны очень срочно,&nbsp;либо очень важны для меня,&nbsp;либо и&nbsp;то и другое.  В списке Actions нет смысла держать больше задач, чем можешь успеть до конца недели, потому у меня в&nbsp;нем обычно не более 15-20 задач (одни задачи решаются, другие приходят из остальных трех&nbsp;списков).</li>
<li><strong>Someday</strong> — если задачи не очень важны в данный момент&nbsp;или не очень срочны, но о&nbsp;них все еще важно не забывать — они попадают именно в список Someday. Например, «слетать на неделю в Сирию и Ливан»&nbsp;или «Почитать книгу «Внутри торнадо» Джефри&nbsp;Мурра».</li>
<li><strong>Waiting</strong> — особый список для задач, выполнить которые я&nbsp;не могу сейчас по независящим от меня причинам, но смогу потом: типичный пример такой задачи — «Купить книгу «The Four Steps to the Epiphany» в электронном виде, когда она появится в&nbsp;Amazon Kindle&nbsp;Store».</li>
</ul>
<p>Помимо самого текста к любой задаче в RTM можно добавить много полезной&nbsp;мета-информации:<br />
<img src="http://mourk.com/wp-content/uploads/2011/08/task-options.png" alt="Task options" title="task options.png" border="0" width="264" height="338" align="right" /></p>
<ul>
<li>Приоритет (всего&nbsp;3)</li>
<li>Метки</li>
<li>Deadline</li>
<li>Продолжительность</li>
<li>URL</li>
<li>График&nbsp;повторений</li>
<li>Набор текстовых&nbsp;заметок.</li>
</ul>
<p>Метки — пожалуй, единственный из атрибутов, который я использую всегда (кроме inbox&#8217;а: вы&nbsp;же помните, что&nbsp;он служит просто разгрузкой для мозга?). С помощью меток я разделяю задачи на контексты и проекты. Просто определил для себя, что теги начинающиеся с&nbsp;«p-» — это проекты, а теги начинающиеся с&nbsp;«@» — контексты,&nbsp;например:</p>
<ul>
<li><strong>@computer</strong> — контекст для задач, которые мне нужно выполнить за&nbsp;компьютером.</li>
<li><strong>@reading</strong> — контекст для напоминаний о том, что я хочу <span style="white-space:nowrap">что-то</span>&nbsp;прочитать.</li>
<li><strong>@writing</strong> — аналогично, контекст для идей тех&nbsp;или иных&nbsp;статей</li>
<li><strong>@adility</strong> — задачи, связанные с компанией, где я&nbsp;работаю</li>
<li><strong>@travel</strong> — идеи будущих путешествий, задачи по подготовке путешествий&nbsp;и.т.п.</li>
</ul>
<p><img src="http://mourk.com/wp-content/uploads/2011/08/tasks-overview-by-tag.png" alt="Часть моих задач в контексте @reading" title="tasks overview by tag.png" border="0" width="600" height="400" /></p>
<p>В дальнейшем в один клик можно увидеть списки задач по определенным контекстам, проектам, приоритетам и.т.п. Результаты поиска можно сохранить и использовать заново в дальнейшем: это и есть т.н. smart lists — мощнейшая функция&nbsp;RTM.</p>
<p>Не знаю как вам, но&nbsp;мне тяжеловато оперировать большими списками задач, кроме того, я стараюсь работать сфокусированно, не отвлекаясь на ерунду: во время работы не хочу, скажем, видеть задачи, связанные с путешествиями&nbsp;или чтением литературы и.т.п., дома&nbsp;же я&nbsp;не хочу обращать внимание на рабочие задачи (трудоголизм до добра не доводит). В результате я просто создал 2 smart-листа на основе текущих задач в&nbsp;Actions:</p>
<ul>
<li><strong>Work</strong> — невыполненные задачи из списка Actions с тегом @adility. Многие задачи в этот список у меня попадают, даже минуя inbox, потому что&nbsp;они появились сегодня, и выполнить их нужно тоже сегодня. Экспериментально я обнаружил: если в списке больше 10 задач — явно я <span style="white-space:nowrap">что-то</span> делаю не так, слишком&nbsp;оптимистично.</li>
<li><strong>Misc</strong> — невыполненные задачи из списка Action с любыми тегами кроме&nbsp;@adility.</li>
</ul>
<h3>Ежедневная работа со&nbsp;списками</h3>
<p>Первое что важно запомнить — чтобы система была системой, а&nbsp;не просто набором слабо связанных задач, ее нужно регулярно поддерживать в актуальном&nbsp;состоянии.<br />
Каждый день я просматриваю список задач в&nbsp;inbox, проставляю им необходимые теги, дедлайны, заметки и переношу их&nbsp;из inbox&#8217;а&nbsp;либо в Actions,&nbsp;либо в Someday, изредка в Waiting. Каждый день я расставляю приоритеты задачам в Actions. Задачи с высоким приоритетом почти всегда выполняю в тот&nbsp;же день. Стараюсь разбирать задачи пораньше, в течение часа после того как проснусь. Ежедневно на&nbsp;это уходит всего 5&nbsp;минут.</p>
<p>Кроме того, раз в неделю, по воскресеньям, я просматриваю весь список задач в Waiting и&nbsp;Someday:</p>
<ul>
<li>Отбираю самые важные задачи на следующую&nbsp;неделю.</li>
<li>Проверяю, можно&nbsp;ли уже приступать к выполнению задач из&nbsp;Waiting.</li>
<li>Вспоминаю, чем вообще собирался заниматься, какие у меня были&nbsp;идеи.</li>
<li>Убираю потерявшие актуальность задачи: часть из&nbsp;них оказывается бесполезной&nbsp;или слишком неинтересной, часть задач я выполняю, мимоходом забыв о всяких там&nbsp;GTD.</li>
</ul>
<p>Я не живу по строжайшему расписанию и&nbsp;не делаю всегда то&nbsp;что нужно вместо того что хочется — у меня для этого сила воли не&nbsp;та, тем не менее, GTD помогает эффективно расходовать свое время и&nbsp;не забывать ни о&nbsp;чем важном (главное — не забыть записать в&nbsp;RTM). Но когда у меня появляется свободное время — стараюсь избегать прокрастинации и делать <span style="white-space:nowrap">что-то</span> полезное, что соответствует настроению, состоянию. Сегодня вечером, например, я собирался устроить занятие музыкой (учусь играть на гитаре) и почитать книгу, но почувствовал, что читать лень и пальцы болят еще с прошлого занятия, а&nbsp;вот написать <span style="white-space:nowrap">что-то</span>, что давно собирался, готов&#8230; Заглянул в список задач с тегом @writing — и&nbsp;сел писать эту статью. Все&nbsp;просто.</p>
<h3 id="rememberthemilk">Почему Remember The Milk лучше чем&nbsp;другие?</h3>
<p>Большую часть того, что я описал, можно выполнить и в других GTD-инструментах. Почему&nbsp;же я использую именно Remember The Milk и&nbsp;чем он лучше&nbsp;других?</p>
<ol>
<li>Это веб-приложение. Соответственно, не нужно никакой специальной синхронизации для работы с&nbsp;ним с нескольких компьютеров&nbsp;или мобильных устройств, не нужно думать о бекапах и сохранности данных. Раньше с RTM можно было работать даже в оффлайне благодаря технологии Google Gears. К сожалению, Google эту технологию прикрыла в пользу HTML5 local storage, а&nbsp;на последнюю  RTM еще не&nbsp;перешли.</li>
<li>Smart Lists — о&nbsp;них достаточно написал выше. Подобной штуки не встречал больше&nbsp;нигде.</li>
<li>Эффективная работа с клавиатурой. Поразительно, но почти все task-manager&#8217;ы построены по принципу «ткнул мышкой, ввел задачу, ткнул мышкой еще 3-4 раза в разные места интерфейса, чтобы настроить параметры задачи». Это&nbsp;же чертовски долго, особенно, для приложения, которое должно разгружать мозг&#8230;  Иногда во время всяких совещаний я добавляю (а позже уточняю и приоретизирую) более десятка разных задач — и&nbsp;все это занимает считанные секунды, благодаря клавиатурным сокращениям и.т.д. Интерфейс, рассчитанный только на работу мышью/тачпадом сжирает больше времени на наведение курсора и клики мышью, чем на запись самой задачи. Только не подумайте, что RTM — сугубо для клавиатурных гиков, все действия в&nbsp;нем можно проводить и мышкой, как в остальных аналогичных инструментах, но с клавиатуры это можно делать намного&nbsp;быстрее!</li>
<li>Гибкость. Другие инструменты навязывают вам свой унифицированный процесс. Это удобно на первых порах, но лишает дополнительных удобств. С RTM&nbsp;же я сначала придумал процесс, затем реализовал его в RTM&#8230; и потом еще долгое время адаптировал под свои нужды, когда решал, что&nbsp;так будет&nbsp;удобнее.</li>
</ol>
<p>В следующий раз могу поделиться готовыми рецептами использования Remember The&nbsp;Milk.</p>
]]></content:encoded>
			<wfw:commentRss>http://mourk.com/2011/08/08/gtd-with-remember-the-milk/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Обновленный блог Мурк дотком, теперь с витамином&#160;C!</title>
		<link>http://mourk.com/2011/08/08/still-alive/</link>
		<comments>http://mourk.com/2011/08/08/still-alive/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 21:49:14 +0000</pubDate>
		<dc:creator><![CDATA[mourk]]></dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://mourk.com/?p=164</guid>
		<description><![CDATA[За последние 3 года на этом сайте появилась всего одна новая&#160;статья. Десятки раз я начинал писать что-то новое, но каждый раз решал что результат недостаточно хорош для публикации и бросал. У меня не было сил и времени заканчивать статьи, не было никакого желания доводить до&#160;ума устаревший движок блога, да и сама тематика блога казалась недостаточно&#160;полезной. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>За последние 3 года на этом сайте появилась всего одна новая&nbsp;статья.<br />
Десятки раз я начинал писать <span style="white-space:nowrap">что-то</span> новое, но каждый раз решал что результат недостаточно хорош для публикации и бросал. У меня не было сил и времени заканчивать статьи, не было никакого желания доводить до&nbsp;ума устаревший движок блога, да и сама тематика блога казалась недостаточно&nbsp;полезной.</p>
<p>Со временем стало ясно: интересующие меня темы востребованы сильнее чем прежде, более-менее глубоких статей о&nbsp;них в рунете катастрофически мало, аудитория блога почти не уменьшилась за годы бездействия, а знакомые все так&nbsp;же настырно просят написать статьи на ту&nbsp;или иную&nbsp;тему.<br />
Теперь, после некоторых изменений в моей жизни, могу и хочу снова заниматься этим сайтом: у меня вновь достаточно мотивации, сил и времени. Главная тематика сайта остается прежней: интернет, управление проектами и работа с людьми, технологии, лайфхаки и самосовершенствование, MacOS и продукция Apple. Разве что, теперь хочется больше писать об интернете и способах повышения качества жизни, меньше о&nbsp;технологиях.</p>
<p>Сайт переведен на другой движок и хостинг, чтобы можно было сконцентрироваться на текстах, а&nbsp;не&nbsp;на бекапах, доработке админки и.т.п. Старые комментарии, к сожалению, перенести не удалось. Прошу прощения за возможные&nbsp;глюки.</p>
<p>Хотите сделать сайт лучше? Расскажите, какие из&nbsp;тем блога наиболее интересным&nbsp;вам!</p>
]]></content:encoded>
			<wfw:commentRss>http://mourk.com/2011/08/08/still-alive/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Инфраструктура Ruby on&#160;Rails</title>
		<link>http://mourk.com/2009/07/08/ruby-on-rails-infrastructure/</link>
		<comments>http://mourk.com/2009/07/08/ruby-on-rails-infrastructure/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 22:44:49 +0000</pubDate>
		<dc:creator><![CDATA[mourk]]></dc:creator>
				<category><![CDATA[Разработка]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://mourk.com/?p=105</guid>
		<description><![CDATA[<p>С Ruby on Rails в рунете сложилась непростая ситуация: вроде, есть блогеры, о нем пишущие, есть специализированные сайты, но почему-то людям, желающим попробовать рельсы и начинающим rails-разработчикам, найти <em>полезную</em> информацию по Rails крайне трудно.</p>

<p>Знаете, что происходит в итоге? Рождается масса заблуждений препятствующих распространению мощной технологии.</p>]]></description>
				<content:encoded><![CDATA[<p>С Ruby on Rails в рунете сложилась непростая ситуация: вроде, есть блогеры, о&nbsp;нем пишущие, есть специализированные сайты, но <span style="white-space:nowrap">почему-то</span> людям, желающим попробовать рельсы и начинающим rails-разработчикам, найти <em>полезную</em> информацию по&nbsp;Rails крайне трудно.</p>
<p>Знаете, что происходит в итоге? Рождается масса заблуждений препятствующих распространению мощной технологии. Например:</p>
<ul>
<li>«Гибкая разработка веб-приложений в среде Rails» — лучшая книга для любого Rails-разработчика» — бред собачий! Это книга «для чайников», не отражающая реалий rails-разработки.</li>
<li>«Rails — это вещь в себе» — еще больший бред. Rails, <span style="white-space:nowrap">вообще-то</span>, обладает мощной инфраструктурой, включающей множество сторонних сервисов и библиотек.</li>
</ul>
<p>Тестирование и непрерывная интеграция, отладка и профилирование, автоматизация проверки качества кода, выполнение асинхронных задач, развертывание приложения на серверах и&nbsp;его мониторинг — все это примеры типичных задач в разработке и поддержке серьезых веб-приложений, которые в&nbsp;Rails обычно решаются отнюдь не штатными средствами, но мощными сторонними решениями, являющимися частями инфраструктуры&nbsp;Rails.<br />
Давайте&nbsp;же рассмотрим инфраструктуру подробнее.</p>
<h3>Развертывание приложения</h3>
<p>В Ruby есть очень мощный инструмент для работы с удаленными unix-серверами — <a href="http://www.capify.org/">Capistrano</a>. Он&nbsp;же является стандартом де-факто для развертывания рельсов на production/staging серверах.</p>
<p>Принцип работы Capistrano в контексте рельсов простой — разработчик с локальной машины запускает capistrano, который в свою очередь подсоединяется к удаленному серверу через SSH и выполняет ряд команд: вытягивает свежую версию приложения из репозитория, создает для&nbsp;нее отдельную директорию и устанавливает символические ссылки для директорий со статическим контентом, перегружает веб-сервер и другие сервера (например, сервер для полнотекстовой индексации и поиска данных). Большим плюсом Capistrano в сравнении с аналогичными инструментами является поддержка rollback&#39;ов. То есть в случае неудачного развертывания проекта Capistrano откатит все в исходное состояние.</p>
<p>Выше описан простейший пример работы Capistrano, который обычно выполняется с помощью его стандартных рецептов (скриптов). Вообще&nbsp;же с помощью капистрано можно можно разворачивать приложения в нескольких окружениях, можно разворачивать приложения сразу на кластерах серверов, можно на этих кластерах удаленно чистить кеш и вообще выполнять любые команды, которые можно выполнить в консоли unix-сервера. Существуют отдельные наборы рецептов капистрано, например <a href="http://github.com/jamis/capistrano-ext/tree/master">capistrano-ext</a>, <a href="http://github.com/toy/dump/tree/master">Dump</a>&nbsp;или <a href="http://github.com/rubaidh/rubaidhstrano/tree/master">rubaidhstrano</a>, позволяющие автоматизировать резервное копирование баз данных и синхронизировать статические файлы (как и базы данных) в локальном окружении разработчика с production&#39;ом.</p>
<p>Кстати, capistrano совсем не обязательно использовать с рельсами, впервые я с&nbsp;ним столкнулся полтора года назад, тогда с помощью Capistrano мы разворачивали PHP(symfony)-приложения на кластерах серверов.</p>
<p>Нет предела совершенству. В след за Capistrano появились проекты <a href="http://railsmachine.github.com/shadow_puppet/classes/ShadowPuppet/Manifest.html">Shadow Puppet</a> и <a href="http://github.com/railsmachine/moonshine/tree/master">Moonshine</a>. Shadow Puppet — это инструмент для автоматизации настройки самих unix-серверов, с&nbsp;его помощью можно автоматизировать установку всего софта, библиотек, создание пользователей, настройки безопасности — очень полезный инструмент системного администратора. Moonshine представляет собо надстройку над Capistrano и&nbsp;Shadow puppet, позволяющую автоматически настроить «голый» удаленный сервер и развернуть на&nbsp;нем Rails-приложение, имея на удаленном сервере всего лишь пользователя с sudo-правами. К сожалению, в настоящий момент Moonshine поддерживает только Ubuntu Server 8.10 и Git-репозитории.</p>
<p>Существует альтернатива Capistrano — <a href="http://rubyhitsquad.com/Vlad_the_Deployer.html">Vlad the Deployer</a>, он проще в использовании, но&nbsp;на фоне Capistrano функционал Влада кажется скудным.</p>
<h3>Профилирование, мониторинг производительности, слежение за ошибками</h3>
<p>Представим, что&nbsp;вы запустили свой rails-проект. Он оказался настолько удачным, что новость о&nbsp;нем появилась на главной странице <a href="http://www.wired.com/">Wired</a>&nbsp;или <a href="http://digg.com/">Digg</a>. После чего проект в лучшем случае стал работать очень-очень медленно, в худшем&nbsp;же просто повалился нахуй. После этого работа резко принимает авральный характер, вы анализируете тонны логов, заново прогоняете стресс-тесты и прочими способами пытаетесь найти узкие места в системе и устранить проблемы.</p>
<p>Задачу профилирования и мониторинга производительности решают такие сервисы, как <a href="http://www.fiveruns.com/">Five Runs</a>, <a href="http://www.newrelic.com/">New Relic</a> и <a href="http://scoutapp.com/">Scout</a>. Функциональность у всех трех похожа, потому расскажу о таких средствах на примере NewRelic&#39;а, являющегося лидером тройки.</p>
<p>Когда приложение развернуто в production-окружении, начинает работать специальный rails-плагин NewRelic RPM. Он собирает информацию о каждом запросе к приложению, о каждом запросе к базе данных, времени выполнения этих запросов (и, соответственно, времени загрузки страниц), нагрузке на процессор, вызванной этими запросами. Время от времени эти данные отправляются на сервер NewRelic фоновым процессом. После этого на сайте NewRelic&#39;а можно посмотреть множество отчетов, показывающих, например, самые медленные контроллеры, самые медленные SQL-запросы и отдельные транзакции, причем, легко можно посмотреть использование индексов в запросах. Кроме того, NewRelic хранит статистику, потому можно отслеживать динамику нагрузок, удобно сгруппированные отчеты об ошибках (мы&nbsp;же не хотим читать длинные логи?) и многое другое.</p>
<p>Естественно, можно использовать NewRelic и в development-окружении, в этом случае он является больше инструментом профилирования, нежели мониторинга и статистики.</p>
<p>Для тех, кому не нужна настолько подробная (и дорогая) статистика, которую дает NewRelic, но нужно удобно отслеживать ошибки, происходящие на production-серверах, есть простой сервис — <a href="http://hoptoadapp.com">HopToad</a>. Можно, конечно, для этой цели пользоваться rails-плагином с говорящим именем «<a href="http://github.com/rails/exception_notification/tree/master">Exception Notifier</a>», но&nbsp;он может в определенных ситуациях может неприятно заспамить ваш почтовый ящик.</p>
<h3>Тестирование, проверка качества кода</h3>
<p>Честно говоря, автоматическое тестирование — один из моих любимых аспектов Rails, такое обилие разнообразных крутых инструментов тестирования я видел, пожалуй, только в Java.</p>
<p>По умолчанию рельсы используют стандартный рубишный Test::Unit в качестве тест-фреймворка. Однако, в последнее время все более модным становится т.н. <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">Behavior Driven Development</a>, и в руби появился свой BDD-фреймворк — <a href="http://rspec.info/">RSpec</a>, который плотно интегрируется с рельсами. Судя по коду разных современных проектов, RSpec в ruby-мире сейчас даже более популярен, чем Test::Unit.</p>
<p>В RSpec входит собственное средство для создания mock-объектов (необходимых, например, при тестировании контроллеров), однако вместо него можно использовать более развитые <a href="http://mocha.rubyforge.org/">Mocha</a> и <a href="http://flexmock.rubyforge.org/">Flex Mock</a>.</p>
<p>С целью минимизации времени, затрачиваемого на рутинное написание тестов, был разработан <a href="http://thoughtbot.com/projects/shoulda/">Shoulda</a> — набор макросов для совместного использования Rails и Test::Unit. <a href="http://thoughtbot.com/projects/shoulda/">Посмотрите</a>, насколько более простым и читабельным он делает код&nbsp;тестов.<br />
Специально для людей, предпочитающих RSpec был выпущен аналог Shoulda под названием <a href="http://remarkable.rubyforge.org/">Remarkable</a>.</p>
<p>Для заполнения приложения тестовыми данными в рельсах по умолчанию применяется механизм <a href="http://en.wikipedia.org/wiki/Test_fixture">fixtures</a>, однако это не всегда удобно, например, в случаях, когда нужно сгенерировать много сущностей, — в таких случаях на помощь приходит генерация через фабрики объектов, наиболее известным средством для этого в рельсах является <a href="http://github.com/thoughtbot/factory_girl/tree/master">factory_girl</a>.</p>
<p>Хотите «настоящего» BDD, чтобы можно было описывать требования к будущему функционалу простым языком и в итоге превращать их в функциональные/интеграционные тесты? — попробуйте&nbsp;<a href="http://cukes.info/">Cucumber</a>.<br />
Если вам, как и мне, Cucumber кажется излишеством, существует другой мощный инструмент — WebRat. Задача «крысы» — интеграционное тестирование, то есть пройтись по страницам сайта, прокликать формы, убедиться в том, что сервер вернул ожидаемый результат. Сценарии WebRat писать очень просто и&nbsp;он интегрируется с любыми тест-фреймворками для&nbsp;Ruby. В обычном режиме работы WebRat&#39;у даже не нужен броузер для прогона тестов. Однако бывают ситуации, когда нам необходимо тестировать операции, выполняемые JavaScript&#39;ом, в этом случае WebRat можно запустить в другом режиме работы: он будет использовать <a href="http://seleniumhq.org/">Selenium</a>(который, в свою очередь, использует броузер) для прогона тестов. Поддерживать&nbsp;же подобные webrat-тесты ощутимо проще, чем чистые Selenium-тесты.</p>
<p>Специально для проверки уровня покрытия кода тестами существует инструмент <a href="http://eigenclass.org/hiki/rcov">RCov</a>. Кроме RCov, существуют инструменты для автоматической проверки сложности кода и просто «детекторы говнокода». Их можно запускать по отдельности, а можно воспользоваться <a href="http://metric-fu.rubyforge.org/">metric_fu</a>, включающим в себя все эти проверки вместе с rcov.</p>
<h3>Непрерывная интеграция</h3>
<p>При работе над масштабным проектом,&nbsp;или просто в случае распределенной разработки часто возникают проблемы из серии «Петя, после твоего коммита опять сломался билд, срочно чини!»&nbsp;или более характерное для славянских программистов «Ебаный в рот! Кто сломал билд?». Одним из очевидных спобов решения таких проблем является «<a href="http://martinfowler.com/articles/continuousIntegration.html">непрерывная интеграция</a>». Для Ruby в целом и рельсов в частности существует своя версия известного CI-средства —&nbsp;<a href="http://cruisecontrolrb.thoughtworks.com/">CruiseControl.rb</a>.<br />
Существует также альтернатива — <a href="http://integrityapp.com/">Integrity</a>, но&nbsp;ее я&nbsp;ни разу не&nbsp;пробовал.
</p>
<h3>Сервера приложений</h3>
<p>Стандартным сервером приложений Rails является однопоточный <a href="http://mongrel.rubyforge.org/">Mongrel</a>. Как правило, его запускают кластером из нескольких серверов, после чего балансируют нагрузку между ними при помощи apache&nbsp;или nginx. Такой способ запуска Rails-приложений является наименее эффективным (с точки зрения потребления ресурсов) из всех возможных.</p>
<p>Лучшим решением запуска rails-приложений является <a href="http://www.modrails.com/">Phusion Passenger</a> (также известный как mod_rack и mod_rails). Passenger встраивается модулем в веб-серверы Apache и&nbsp;Nginx и динамически выделяет ресурсы рельсам, подобно <em>mod_wsgi</em> для&nbsp;python и <em>mod_php</em> для&nbsp;PHP. Естественно, это позволяет экономнее расходовать ресурсы сервера и упрощает развертывание приложений.</p>
<p>Для полноты картины стоит отметить <a href="http://code.macournoyer.com/thin/">Thin</a>. Это сервер, работающий аналогично Mongrel&#39;у, но быстрее и потребляя при этом меньше ресурсов.</p>
<h3>Асинхронное выполнение задач</h3>
<p>Существует ряд задач, которые выполняются сравнительно долго, например, конвертация видео&nbsp;или загрузка файлов на <a href="http://aws.amazon.com/s3/">Amazon S3</a>. Такие задачи желательно (а во многих случаях — обязательно) выполнять в фоне. Долгое время наиболее распространенным инструментом асинхронного выполнения задач в рельсах был <a href="http://backgroundrb.rubyforge.org/">BackgroundRB</a>, однако brb потребляет неприлично-много ресурсов, потому рекомендую альтернативный инструмент — <a href="http://github.com/purzelrakete/workling/tree/master">Workling</a>.</p>
<p>По умолчанию Workling работает в паре с message queue сервером Starling, разработаным изначально для Twitter&#39;а, однако не советую использовать Starling в production&#39;е. Вместо старлинга можно использовать любой <a href="http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol">amqp</a>-совместимый сервер, например, <a href="http://www.rabbitmq.com/">RabbitMQ</a>&nbsp;или <a href="http://activemq.apache.org/">ActiveMQ</a>.</p>
<h3>Мониторинг процессов</h3>
<p>Одним из главных недостатков Ruby являются утечки памяти. В <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> и&nbsp;Ruby 1.9 эту проблему частично решили. Но в суровые времена, когда все гоняли рельсы сугубо на Mongrel&#39;ах и&nbsp;Ruby 1.8.6, проблема стояла значительно серьезнее, чем сейчас, потому необходимым было средство, которое следило&nbsp;бы за процессами Mongrel&#39;а и перегружало его при достижении лимита потребляемой памяти. Чаще всего для этих целей использовали совсем не рубишный <a href="http://mmonit.com/monit/">Monit</a> и&nbsp;его Ruby-аналог — <a href="http://god.rubyforge.org/">God</a> (который, на&nbsp;мой взгляд, значительно удобней и гибче в конфигурации). Доходило даже до того, что&nbsp;все процессы мониторили God&#39;ом, а&nbsp;сам God — Monit&#39;ом.</p>
<p>К счастью, ситуация стала лучше, но God и&nbsp;Monit (который использовался и используется для мониторинга баз данных, веб-серверов и многих других вещей в unix-системах) все еще остаются простыми и удобными средствами мониторинга процессов, сфера применения которых выходит далеко за рамки перегрузки Mongrel&#39;а при достижении лимита памяти.</p>
<h3>Запуск консольных команд</h3>
<p>Давно уже для&nbsp;Ruby разработали <a href="http://martinfowler.com/articles/rake.html">Rake</a> — инструмент для автоматизации сборки программного кода по типу GNU Make&nbsp;или Apache ANT. Но, в отличие от&nbsp;Make и&nbsp;ANT, Rake-скрипты пишутся на самом Ruby, что сделало их легко расширяемыми и более удобными в написании. В итоге в&nbsp;Rails стали использовать Rake для выполнениях любых консольных команд, например, для запуска тестов, миграций&nbsp;или обновления Rails.</p>
<p>Также существуют дополнительные наборы Rake-задач, выполняющие рутинные операции, например: создание резервных копий базы данных и статических файлов rails-приложения, отображение информации о внешних ключах в базе данных, для которых нет индексов, и многие другие. Отличные примеры дополнительных rake-задач для&nbsp;Rails — <a href="http://github.com/thoughtbot/limerick_rake/tree/master">limerick_rake</a> и <a href="http://github.com/toy/dump/tree/master">dump</a>.</p>
<h3>Визуализация объектной модели</h3>
<p>В данном случае лучше один раз увидеть. <a href="http://railroad.rubyforge.org/">RailRoad</a> рисует диаграммы объектной модели ваших Rails-приложений. Посмотрите примеры <a href="http://railroad.rubyforge.org/diagrams/rtplan_models_full.png">моделей</a> и <a href="http://railroad.rubyforge.org/diagrams/rtplan_controllers_full.png">контроллеров</a>.</p>
<h3>Специализированый хостинг</h3>
<p>Большинство коммерческих Rails-проектов хостятся на VPS&#39;ах, выделенных серверах и cloud-хостингах вроде Amazon EC2. Однако существуют и специализированные Rails-хостинги (большая их часть — это все те&nbsp;же VPS&#39;ы и надстройки над&nbsp;EC2, куда уже установлены популярные ruby/rails библиотеки, apache с passenger&#39;ом и.т.п.).</p>
<ul>
<li><a href="http://heroku.com/">Heroku</a></li>
<li><a href="http://www.engineyard.com/">Engineyard</a></li>
<li><a href="http://railsmachine.com/">Rails Machine</a></li>
<li><a href="http://www.brightbox.co.uk/">Brightbox</a></li>
</ul>
<h3>Среды разработки</h3>
<p>Существует стереотип, будто все rails-разработчики используют для разработки&nbsp;либо TextMate на маке,&nbsp;либо юниксовые vim/emacs/gedit, и&nbsp;для Ruby/Rails нет «взрослых» IDE.</p>
<p>Отчасти это правда, действительно подавляющее большинство Rails-разработчиков не пользуются IDE, но далеко не все! Качественные IDE для&nbsp;Ruby существуют: Aptana RadRails на основе Eclipse, JetBrains RubyMine на основе IntelliJ Idea, NetBeans (который мне не удалось запустить на маке). Лично я предпочитаю RubyMine за&nbsp;его отслеживание ошибок в коде, автодополнение, удобный поиск внутри проекта, отладку кода прямо в IDE и автоматизацию рефакторинга.</p>
<p>В целом, как&nbsp;мне кажется, ситуация с IDE для&nbsp;Ruby хуже чем у&nbsp;Java и&nbsp;.NET, но лучше, чем у&nbsp;Python и PHP.</p>
<h3>Вместо заключения</h3>
<p>При желании о каждом из описанных выше инструментов можно написать отдельную статью, как и о преимуществах и недостатках Rails. Целью&nbsp;же этой статьи было показать, что&nbsp;Rails и&nbsp;его инфраструктура развиты гораздо сильней, чем кажется на первый взгляд. Надеюсь, у меня получилось.</p>
<p><a href="http://www.developers.org.ua/archives/mourk/2009/07/09/ruby-on-rails-infrastructure/">Статья</a> написана для сайта&nbsp;<a href="http://www.developers.org.ua/">developers.org.ua</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mourk.com/2009/07/08/ruby-on-rails-infrastructure/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>5 советов по управлению&#160;проектами</title>
		<link>http://mourk.com/2008/06/18/project-management-advices/</link>
		<comments>http://mourk.com/2008/06/18/project-management-advices/#respond</comments>
		<pubDate>Wed, 18 Jun 2008 22:44:35 +0000</pubDate>
		<dc:creator><![CDATA[mourk]]></dc:creator>
				<category><![CDATA[Менеджмент]]></category>
		<category><![CDATA[advice]]></category>

		<guid isPermaLink="false">http://mourk.com/?p=101</guid>
		<description><![CDATA[<p><a href="http://habrahabr.ru/blog/webdev/43163.html">Mourner</a> передал мне эстафету: 5 советов IT-специалисту &#8212; советы по управлению проектами...<br />
Давать советы кому-то абстрактному не хочется: ведь подойдут они не всем, потому в этой заметке будут советы, которые я нынешний дал бы самому себе четырехлетней давности.
</p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://habrahabr.ru/blog/webdev/43163.html">Mourner</a> передал мне эстафету: 5 советов IT-специалисту — советы по управлению&nbsp;проектами...<br />
Давать советы <span style="white-space:nowrap">кому-то</span> абстрактному не хочется: ведь подойдут они не всем, потому в этой заметке будут советы, которые я нынешний дал&nbsp;бы самому себе четырехлетней&nbsp;давности.
</p>
<ol>
<li>Управление проектами — это работа с людьми. Умение завоевать уважение команды и клиентов в тыщу раз важнее умения рисовать <a href="http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D0%93%D0%B0%D0%BD%D1%82%D0%B0">диаграммы Ганта</a>.  Ни в коем случае не поддавайся рассказам всяких менеджеров-теоретиков, считающих <a href="http://en.wikipedia.org/wiki/Project_Management_Body_of_Knowledge">PMBOK</a> важнейшей книгой для управленца: эти клоуны могут долго рассуждать о преимуществах и недостатках методологий RUP, CRYSTAL&nbsp;или XP, но понятия не имеют, что делать, если разработчик длительное время работал с нормальной эффективностью, а потом резко «опустился», они не чувствуют, когда стоит делегировать полномочия, а когда этого делать&nbsp;нельзя.</li>
<li>Постоянно учись, читай, постоянно экспериментируй, постоянно сомневайся в себе, совершай ошибки и исправляй их последствия. Ошибок не допускает только тот, кто топчется на месте. Да, постоянные изменения и нескончаемое обучение означают постоянный стресс — и с этим ничего не удастся поделать, но&nbsp;со временем начинаешь спокойнее относиться к собственным ошибкам и неудачам, легче переносить&nbsp;стресс.</li>
<li>Бери на работу только тех людей, которые эту работу обожают: тех, кто с гордостью рассказывают о своих заслугах, интересуются твоей компанией, следят за новинками в отрасли. Если этого не соблюдать — легко получишь обыкновенный ленивый офисный планктон, который работает «из-под палки», самостоятельно не обучается и довольно медленно растет в профессиональном плане. Людей, которые в целом любят свою работу, и мотивировать гораздо проще, и работать с ними интереснее. Тебе не нужен сисадмин, мечтающий заниматься журналистикой,&nbsp;или разработчик, который на самом деле хочет быть дизайнером, а&nbsp;код писать ненавидит и каждый раз «переступает через себя», чтобы выполнить новую задачу. Тебе нужны такие люди, которых сам будешь выгонять из офиса, чтобы не просидели до ночи, изучая новую технологию. На эту тему немало эссе написал <a href="http://joelonsoftware.com/Archive.html">Джоэль&nbsp;Спольски</a>.</li>
<li>Учись отступать и проигрывать. Очень важно уметь вовремя остановить провальный проект. Иногда необходимо отказаться от проекта, иногда — даже уволиться. Запятнанную репутацию нелегко «отбелить». Как ни крути, а у жизни тоже есть свой дедлайн, потому не инвестируй временной ресурс своей жизни в мертворожденные проекты, эти инвестиции не&nbsp;окупятся.</li>
<li>Хочешь выстроить четкую систему в работе, наладить процессы, чтобы все было четко и&nbsp;без сюрпризов? Начни с себя: без жесткого контроля собственного времени никак не обойтись. <a href="http://en.wikipedia.org/wiki/Getting_Things_Done">GTD</a> — не только модный акроним, но и реально полезная методология, которая при грамотном обращении поможет убивать в себе оптимизм и&nbsp;не забывать ничего важного. Учись мгновенно принимать правильные решения, много решений... Если не выходит — устанавливай дедлайн принятия решения: и руководство/клиенты, и подчиненные будут тебе за&nbsp;это благодарны.</li>
</ol>
<p>Интересно, как я буду смотреть на&nbsp;эти советы через 5&nbsp;лет?</p>
]]></content:encoded>
			<wfw:commentRss>http://mourk.com/2008/06/18/project-management-advices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Веб-дизайн &#8212; цена&#160;эксклюзива</title>
		<link>http://mourk.com/2008/05/21/exclusive-design-price/</link>
		<comments>http://mourk.com/2008/05/21/exclusive-design-price/#comments</comments>
		<pubDate>Wed, 21 May 2008 23:15:33 +0000</pubDate>
		<dc:creator><![CDATA[mourk]]></dc:creator>
				<category><![CDATA[Бизнес]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[websites]]></category>

		<guid isPermaLink="false">http://mourk.com/?p=97</guid>
		<description><![CDATA[<p>Представьте себе ситуацию: жители соседних деревень Виларибо и Вилабаджо открыли магазины авто-запчастей &#8212; с одинаковым ассортиментом, ценами и уровнем обслуживания. Вскоре оказалось: через интернет можно привлечь много новых клиентов. Деревня Виларибо обратилась в солидную студию веб-дизайна, где им за 100 наноюнитов в два месяца сделали сайт под ключ с эксклюзивным дизайном. По прикидкам жителей Виларибо, затраты на сайт должны окупиться через 12 месяцев. Жители деревни Вилабаджо быстро отреагировали: они пришли в студию поскромнее и заявили: &#171;Пожалуйста, возьмите сайт магазина &#171;Виларибо&#187;, измените название на &#171;Вилабаджо&#187;, поставьте наш контент и все настройте&#187;. Через месяц всего за 25 наноюнитов владельцы авто-магазина &#171;Вилабаджо&#187; получили свой сайт &#8212; такой же, как у &#171;Виларибо&#187;...<br />
Прошло полгода... В деревне Вилабаджо праздник &#8212; ведь их веб-сайт уже окупился и теперь стабильно приносит прибыль... А жители деревни Виларибо все еще &#171;в минусе&#187;.
</p>]]></description>
				<content:encoded><![CDATA[<blockquote><p><em><br />
Встречаются <span style="white-space:nowrap">как-то</span> два психолога. Первый начинает разговор за&nbsp;жизнь:<br />
— Я себе недавно купил навороченный&nbsp;Феррари...<br />
А второй сначала косо смотрит на первого, а потом и&nbsp;говорит:<br />
— Слушай, мы&nbsp;же все-таки профессионалы. Давай просто расстегнем брюки и&nbsp;померяемся!<br />
</em></p>
</blockquote>
<p>Есть у меня приятель, занимающийся мелкооптовой торговлей бельем — типичный представитель мелкого бизнеса. Его компании потребовался сайт в интернете, и приятель попросил меня подсказать, где лучше его заказать, а также спросил об ориентировочных ценах. Когда я назвал приблизительную стоимость разработки несложного сайта-визитки в надежных Киевских веб-студиях, приятель в ужасе схватился за голову: он не&nbsp;мог представить, что&nbsp;это может стоить так дорого! Когда приятель узнал, что&nbsp;все это можно сделать и дешевле, но&nbsp;либо в «шарашках»,&nbsp;либо у фрилансеров, где нет никаких гарантий — совсем расстроился...</p>
<p>Знаете, это реальная проблема на территориях пост-совка: к сайту компании у&nbsp;нас принято относиться не&nbsp;как к инструменту зарабатывания денег, но&nbsp;как к красивым картинкам и просто фактору престижа. Такой сайт приятно показать друзьям, коллегам, клиентам, жене, в конце концов... но стоит&nbsp;ли он вложенных средств? Да, сайты в экс-СССР стоят очень дорого, как&nbsp;для стран 3-го мира: совершенно реальна ситуация, когда компании, торгующие, например, сантехникой, платят за разработку сайта в Киеве&nbsp;или Москве дороже, чем их коллеги в&nbsp;Нью Йорке&nbsp;или Сан Франциско. Уверен, вы сразу подумали о <a href="http://www.artlebedev.ru/">Студии Лебедева</a>, но&nbsp;на самом деле я имею в виду не только ее, а множество компаний. Кроме того, за рубежом САЛ знают, в основном, как компанию, занимающуюся промышленным дизайном, а&nbsp;не сайтами... Ну, не привыкли там платить за дизайн больше, чем он может принести. Как вы думаете, многие&nbsp;ли компании в России и Украине думают о том, какой <a href="http://ru.wikipedia.org/wiki/%D0%9E%D0%BA%D1%83%D0%BF%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%B8%D0%BD%D0%B2%D0%B5%D1%81%D1%82%D0%B8%D1%86%D0%B8%D0%B9">ROI</a> будет у&nbsp;их сайта: как быстро сайт окупится и окупится&nbsp;ли вообще?</p>
<p>При таких высоких ценах сайты ухитряются делать с отвратительного качества <a href="http://ru.wikipedia.org/wiki/Content-Management-System">CMS</a>&#39;ками, подчас слабее бесплатных Joomla и Drupal, а часто выбирают и просто отвратительный Bitrix...</p>
<p>В интернете можно найти <a href="http://www.adme.ru/adnews/2006/06/29/7130/">минимальные цены</a> ведущих веб-студий России за&nbsp;2006 год, как&nbsp;вы понимаете, сейчас эти цены&nbsp;повысились.<br />
А что делать? Ведь нужно платить дизайнерам, которые сделают эксклюзивный дизайн (возможно, и несколько макетов на выбор)... Скорее всего, макет еще придется дорабатывать — и утверждение макета может растянуться надолго... И все это время нужно платить менеджерам, потом верстальщикам надо сверстать макет, еще позже макет нужно будет прицепить к CMS&#39;ке, вполне возможно, что&nbsp;эту самую CMS&#39;ку придется под конкретный сайт доделывать. В общем, не с потолка цены&nbsp;берутся...
</p>
<p>Но задумывались&nbsp;ли вы <span style="white-space:nowrap">когда-нибудь</span>, что будет, если отказаться от эксклюзивности — если не придется разрабатывать новые макеты дизайна, не придется вносить в&nbsp;них правки и&nbsp;не придется утверждать дизайн, не придется верстать его и&nbsp;не придется подключать сверстанный дизайн к&nbsp;CMS, не придется доделывать эту самую CMS?</p>
<p>Что будет, если подстроить свое видение веб-сайта под&nbsp;уже сложившиеся стандарты? Чем&nbsp;же плохо использование чужого дизайна&nbsp;или просто шаблонного, проданного десятку разных клиентов? А ничем, по большому счету, это не плохо, кроме того, что&nbsp;вы лишитесь понт-фактора. Но подумайте хорошенько, важен&nbsp;ли он для бизнеса?</p>
<p>Представьте себе ситуацию: жители соседних деревень Виларибо и Вилабаджо открыли магазины авто-запчастей — с одинаковым ассортиментом, ценами и уровнем обслуживания. Вскоре оказалось: через интернет можно привлечь много новых клиентов. Деревня Виларибо обратилась в солидную студию веб-дизайна, где им за 100 наноюнитов в&nbsp;два месяца сделали сайт под ключ с эксклюзивным дизайном. По прикидкам жителей Виларибо, затраты на сайт должны окупиться через 12 месяцев. Жители деревни Вилабаджо быстро отреагировали: они пришли в студию поскромнее и заявили: «Пожалуйста, возьмите сайт магазина «Виларибо», измените название на «Вилабаджо», поставьте наш контент и&nbsp;все настройте». Через месяц всего за 25 наноюнитов владельцы авто-магазина «Вилабаджо» получили свой сайт — такой&nbsp;же, как у&nbsp;«Виларибо»...<br />
Прошло полгода... В деревне Вилабаджо праздник — ведь их веб-сайт уже окупился и теперь стабильно приносит прибыль... А жители деревни Виларибо все еще «в&nbsp;минусе».
</p>
<p>Конечно, такой подход подойдет далеко не всем: дорогие бутики, студии дизайна, многие банки и страховые компании — у&nbsp;них у всех бизнес зависит от понтов (или престижа, кому как больше нравится), потому им необходим эксклюзив, точно так&nbsp;же и&nbsp;для промо-сайтов нужен эксклюзив, но я имею в виду «сайты-визитки». Но ведь большинству представителей мелкого и среднего бизнеса разработка эксклюзивного сайта в надежной веб-студии просто «не по зубам».</p>
<p>Некоторым кажется, будто шаблонный дизайн хуже эксклюзивного — это фикция: качество и эксклюзивность дизайна никак между собой не связаны. Например, на сайтах большинства софтверных компаний дизайн откровенно убогий, но&nbsp;он эксклюзивен! Более того, в серийных продуктах гораздо проще поддерживать качество на высоком уровне, чем в штучных: отличным примером этого служит McDonalds. В Макдональдс используют шаблонный конвейерный метод, в большинстве ресторанов — эксклюзивный. При этом еда в Макдональдс приготовлена качественнее, чем в большинстве ресторанов. Серьезно! — Она не изыскана, она не красива, она вредна для здоровья, но приготовлена качественно — в точнейшем соответствии с рецептурой, одинаково качественно для каждого посетителя, потому что&nbsp;за&nbsp;ней стоит настолько отточенная система, какую ни один ресторан не сможет обеспечить. McDonalds и прочие фастфуды не уничтожили ресторанный бизнес, но четко заняли свою нишу: в дешевых фастфудах питается гораздо больше людей, чем в дорогих ресторанах. Точно так&nbsp;же постепенно произойдет и с разработкой веб-сайтов: эксклюзив останется только для тех, кому это нужно и&nbsp;кто способен за&nbsp;это платить. Делать все сайты-визитки эксклюзивными — не естественнее, чем увидеть всех женщин на улицах в одежде от кутюр.</p>
<p>Конечно, дизайнеры не захотят со мной согласиться — ведь их основная работа состоит в том, чтобы производить эксклюзивный дизайн... Трудно признаться себе, что&nbsp;ты делаешь нечто переоцененное и ненужное... Мне кажется, сейчас отрасль находится на своем пике и года через 2-3 начнет двигаться в сторону упрощения и удешевления. В первую очередь, от этого пострадают дизайнеры, которых просто окажется слишком много — конкуренция на рынке повысится, а зарплаты, соответственно, снизятся.</p>
<p>Но это неизбежно в условиях, когда спрос рождает предложение. Подобные ситуации уже встречались в истории: к примеру, автомобили до Генри Форда тоже были дорогими и не-массовыми, но&nbsp;все мы знаем, что случилось&nbsp;потом...</p>
]]></content:encoded>
			<wfw:commentRss>http://mourk.com/2008/05/21/exclusive-design-price/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Обзор rss-потоков, апрель&#160;2008</title>
		<link>http://mourk.com/2008/05/12/rss-april2008/</link>
		<comments>http://mourk.com/2008/05/12/rss-april2008/#respond</comments>
		<pubDate>Mon, 12 May 2008 22:05:12 +0000</pubDate>
		<dc:creator><![CDATA[mourk]]></dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://mourk.com/?p=93</guid>
		<description><![CDATA[<p>Продолжаем <a href="http://mourk.com/2008/04/04/obzor-rss-potokov-mart-2008/">ежемесячный</a> обзор потоков прошедших через мою RSS-ленту.</p>]]></description>
				<content:encoded><![CDATA[<p>Продолжаем <a href="http://mourk.com/2008/04/04/obzor-rss-potokov-mart-2008/">ежемесячный</a> обзор потоков прошедших через&nbsp;мою RSS-ленту.</p>
<h3>Успешно&nbsp;прошли</h3>
<ul>
<li><a href="http://livedev.org/">LiveDev</a> — интересный и приятный русскоязычный блог о веб-разработке, в&nbsp;том числе на Django. Побольше&nbsp;бы таких сайтов в&nbsp;рунете!</li>
<li><a href="http://satway.ru/">Психологический журнал «Искусство быть собой»</a> — за последние год-два я&nbsp;еще не встречал настолько качественного сайта о саморазвитии и «популярной» психологии. В отличии от большинства подобных сайтов радует авторский контент и отсутствие «тупых понтов» у автора. Надеюсь, Олег Сатов, автор сайта, и дальше будет продолжать в том&nbsp;же&nbsp;духе.</li>
<li><a href="http://anticorporativ.ru/">Антикорпоратив.ру</a> — сайт о бизнесе, корпоративной среде (вернее, о&nbsp;ее вреде), «лайфхаках». Наиболее полезен работникам больших бездушных&nbsp;компаний.</li>
<li><a href="http://andrewkulikov.com/">Управление проектами в картинках</a> — интересный менеджерский блог, о&nbsp;нем я&nbsp;уже писал в прошый&nbsp;раз.</li>
<li><a href="http://www.moneyplan.ru/">4 конверта — блог о финансовом самоконтроле</a>. Все сказано в названии. Интересный проект <a href="http://kraynov.com/">Макса Крайнова</a>, недавно отделившийся от&nbsp;его основного&nbsp;сайта.</li>
<li><a href="http://contramarketing.blogspot.com/">ContraMarketing</a> — толковый блог с наблюдениями бывшего маркетолога. Искренний и циничный.</li>
</ul>
<h3>Не прошли&nbsp;карантин</h3>
<ul>
<li><a href="http://www.sitepoint.com/">SitePoint</a> — крупное сообщество посвященное веб-разработке, управлениию небольшими интернет-проектами, маркетинге и дизайне в интернете. К сожалению, окончательно скурвился: минимум практических&nbsp;материалов.</li>
<li><a href="http://lukaround.com/">LUK!Around</a> — блог о путешествиях. Испортился: вместо блога о путешествиях превратился в блог о Берлине, где в каждом новом посте содержится совсем немного информации — складывается впечатление, что автору не о&nbsp;чем писать, потому он так поступает.  Странно, что совпало это с активной рекламой у <a href="http://davydov.blogspot.com/">Давыдова</a>. Надеюсь, в будущем сайт снова наберет обороты.</li>
</ul>
<h3>Временно в&nbsp;карантине</h3>
<ul>
<li><a href="http://www.ivanpirog.com/">Иван Пирог в режиме онлайн</a> — недавно открывшийся блог Ивана, организатора семинаров <a href="http://exception.org.ua/">Exception</a>. Он обещает писать статьи на темы самосовершенствования и самомотивации, IT-бизнеса. Пока что&nbsp;на сайте всего 3 статьи, но довольно познавательные. Уверен, сайт и дальше будет радовать качественным авторским&nbsp;контентом.</li>
<li><a href="http://www.agilebelarus.org/">Agile-сообщество Беларуси</a> — с одной стороны интересный сайт про agile-методологии. С другой — пока не могу понять, стоят&nbsp;ли его статьи затрачиваемого на чтение&nbsp;времени.</li>
<li><a href="http://www.agoge.ru/">AGOGE — сообщество сильных</a>. Блог с дурацким названием о личностном развитии современного человека. Пока не понятно, насколько он самобытен, время&nbsp;покажет.</li>
<li><a href="http://www.davidcramer.net/">David Cramer</a> — интересный и полезный с практической точки зрения блог python-разработчика. Много информации о фреймворке Django и шаблонизаторе&nbsp;Jinja.</li>
<li><a href="http://macosworld.ru/">Mac OS от Винтика и Шпунтика</a> — простой и забавный сайт о&nbsp;MacOS и софте для&nbsp;нее.</li>
<li><a href="http://pepelsbey.net/">Пепелсбей.net</a> — сайт о верстке с приятным дизайном. Негатива не вызывает, но статей на сайте пока слишком мало чтобы сформировать окончательное&nbsp;мнение.</li>
<li><a href="http://podlipensky.com/">Подлипенский Павел</a> — Блог о технологиях и деньгах. В название все сказано. Молодой и интересный сайт об IT-бизнесе.&nbsp;Рекомендую!</li>
<li><a href="http://mediarevolution.ru/">MediaRevolutiuon</a> — добротный русский сайт о маркетинге в средствах интернет-медиа. Радует обилие статистики вроде «<em>Мужчины в возрасте 18-34 лет — наиболее активные зрители видеоконтента в Сети, 74% опрошенных заявили, что смотрят онлайновое видео по меньшей мере раз в неделю. Треть опрошенных мужчин в возрасте 18-24 лет смотрят онлайновое видео каждый&nbsp;день.</em>».</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mourk.com/2008/05/12/rss-april2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Масштабируем&#160;Agile</title>
		<link>http://mourk.com/2008/05/05/scaling-agile/</link>
		<comments>http://mourk.com/2008/05/05/scaling-agile/#respond</comments>
		<pubDate>Mon, 05 May 2008 09:09:18 +0000</pubDate>
		<dc:creator><![CDATA[mourk]]></dc:creator>
				<category><![CDATA[Менеджмент]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://mourk.com/?p=88</guid>
		<description><![CDATA[<p>В предыдущей статье, &#171;<a href="http://mourk.com/2008/04/21/fake-scrum/">Неправильный Scrum</a>&#187; я рассказал о примере низкой эффективности и хаосе, вызванных неправильным применением agile-методологий. Не секрет, что все они предназначены, в первую очередь, для небольших локальных команд. Но как же действовать командам немаленьким при распределенной разработке &#8212; в целом и при аутсорсинге &#8212; в частности?</p>]]></description>
				<content:encoded><![CDATA[<p>В предыдущей статье, «<a href="http://mourk.com/2008/04/21/fake-scrum/">Неправильный Scrum</a>» я рассказал о примере низкой эффективности и хаосе, вызванных неправильным применением agile-методологий. Не секрет, что&nbsp;все они предназначены, в первую очередь, для небольших локальных команд. Но как&nbsp;же действовать командам немаленьким при распределенной разработке — в целом и&nbsp;при аутсорсинге — в частности?</p>
<p>Напомню, основными проблемами у&nbsp;нас были: низкое качество взаимодействия людей в распределенных командах, множество времени, тратящегося на коммуникацию, излишняя бюрократизированность отчетности из-за менеджмента в стиле «прикрой жопу, потом работай», слишком короткие итерации и слабая связь цикла разработки с циклом тестирования.</p>
<p>Существуют различные способы масштабирования гибких методологий — я расскажу о тех, которые применили мы, уже наученные горьким опытом&nbsp;Лжескрама.</p>
<ol>
<li>Пожалуй, самое главное, что удалось сделать — разделить один большой проект на целый пакет мелких и средних проектов, таким образом, каждая рабочая группа, состоящая из 2-5 человек, стала заниматься одним и только одним проектом.&nbsp;</li>
<li>Вместе с разделением крупного проекта на мелкие изменилась и стратегия коммуникаций. Теперь команды разработки и&nbsp;их тимлиды регулярно взаимодействовали лишь с техническими руководителями в США, решая тактические вопросы и согласовывая API, а с локальными руководителями проектов вывяли текущие проблемы. В свою очередь, руководители проектов общались между собой и с высшим руководством сугубо о вопросах стратегии, рисков, интеграции проектов и изменения состава групп, а технические руководители между собой решали сложные архитектурные вопросы, утверждали API и следили за документированием технических решений. Отойдя от формальностей, можно сказать — главной задачей руководителей проектов и технических руководителей стало устранение преград на пути своих команд и интеграция проектов, но никак не отчетность.&nbsp;</li>
<li>Часть команд стали проводить регулярные стоячие совещания, что было простым и дешевым способом для участников проекта «находиться на одной волне» и выявлять реальные и потенциальные проблемы своевременно. Без разделения «1 проект — 1 команда» это было&nbsp;бы&nbsp;невозможно.</li>
<li>Длину итераций увеличили с одной до двух недель и стали планировать их так, чтобы в конце всегда оставался запас в пару дней. Это частично позволило избавиться от постоянной гонки, в которой все чувствуют себя проигравшими — когда работаешь в нормальном ритме, то и ошибок допускаешь&nbsp;меньше.</li>
<li>Оценки сроков и планы перестали «спускаться сверху»: теперь оценки сроков задач проводилась их непосредственными исполнителями под присмотром тимлидов, после чего согласовывалась с руководителем проекта и техническим руководителем, которые, как правило, срок увеличивали, учитывая дополнительные риски и&nbsp;сложности.</li>
<li>Стали использовать средства <a href="http://www.martinfowler.com/articles/continuousIntegration.html">Continuous Integration</a>. Полноценного <a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a> у&nbsp;нас все равно не получилось, но удалось заставить разработчиков тестировать свой код и более-менее стабилизировать качество билдов&nbsp;продукта.</li>
<li>Ввели т.н. «development blogs», куда разработчики (реально — тимлиды) должны были каждый день записывать свои достижения и проблемы, с которыми они столкнулись. Эти блоги на некоторое время стали главным средством коммуникации удаленных команд (ведь они находились в разных офисах), кроме того, это заставляло разработчиков писать! Впрочем, когда объем взаимодействия между разными командами уменьшился, от блогов мы отказались для большинства проектов.&nbsp;</li>
<li>Постепенно мы разработали различные автоматические средства отчетности и оценки сроков (используя идеи <a href="http://www.joelonsoftware.com/items/2007/10/26.html">evidence based scheduling</a> Джоэля Спольски), реализовав их&nbsp;как <a href="http://www.atlassian.com/software/jira/">Jira</a> plug-ins. Но постепенно отказались и&nbsp;от ежедневной формальной отчетности. Вести ее можно было разве что&nbsp;по собственному желанию, чтобы лучше ощущать «пульс проекта». Руководитель проекта теперь отвечал строго за успешное окончание каждой итерации, а&nbsp;не&nbsp;за успешное бумагомарание.&nbsp;</li>
<li>Стали проводить ретроспективы (к сожалению, они проводились между руководством разных проектов без участия разработчиков) в конце итераций. Это не произвело чуда, но помогло увидеть проблемы с разных точек зрения и, конечно&nbsp;же, не наступать на одни и те&nbsp;же грабли&nbsp;дважды.</li>
<li>Ввели еженедельную оценку оффшорных команд людьми из главного офиса в США, где каждый мог по пятибалльной шкале оценить уровень коммуникации, качества кода и адекватного восприятия документации. Локальные руководители проектов получали информацию и видели, кто какую оценку поставил. Многим поначалу казалось, что&nbsp;это сделано с целью найти козлов отпущения и показать «вот мы тут белые-пушистые, а&nbsp;они там&nbsp;за океаном бездельники и мудаки». На самом&nbsp;же деле, все эти оценки позволяли увидеть, кто конкретно не доволен взаимодействием, после чего не гадать — а связаться с этим человеком и узнать, чем именно он не доволен и совместно с&nbsp;ним улучшить рабочий процесс. Медленно, но уверенно все это получилось. Как всегда в распределенной разработке, главная трудность — коммуникация, а самый трудно контролируемый фактор — фактор человеческий.</li>
</ol>
<h3>Выводы</h3>
<p>Пусть agile-процесс изначально и рассчитан под небольшие проекты и локальные команды — его вполне можно масштабировать. Главное для этого — открытость и смелость проектных команд и, в первую очередь,&nbsp;руководства.<br />
Откажитесь от ложных целей вроде бюрократичной отчетности и стратегии прикрытия задницы, сконцентрируйтесь на получении необходимого вам продукта. Экспериментируйте с длительностью итераций, составом команд, способами взаимодействия и тестирования... Да, вы будете совершать ошибки, но суть гибкого адаптивного процесса в том, чтобы признавать свои ошибки, учиться на&nbsp;них и постоянно улучшать процесс, а&nbsp;не пытаясь скрыть ошибки и искать козлов отпущения. Технологии и процессы несовершенны, люди несовершенны, мир несовершенен... но&nbsp;это не означает, что&nbsp;не&nbsp;мы не должны учиться и улучшать качество своей&nbsp;работы.
</p>
<p>А вы масштабировали agile-процесс? Если да, то&nbsp;как?</p>
]]></content:encoded>
			<wfw:commentRss>http://mourk.com/2008/05/05/scaling-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
