<?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>developers.org.ua &#187; Алексей Колупаев</title>
	<atom:link href="http://www.developers.org.ua/archives/author/kolupaev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.developers.org.ua</link>
	<description>сообщество программистов</description>
	<lastBuildDate>Fri, 19 Mar 2010 07:33:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Рецензия: The Web Startup Success Guide by Bob Walsh</title>
		<link>http://www.developers.org.ua/archives/kolupaev/2009/12/15/the-web-startup-success-guide-by-bob-walsh-review/</link>
		<comments>http://www.developers.org.ua/archives/kolupaev/2009/12/15/the-web-startup-success-guide-by-bob-walsh-review/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 14:39:31 +0000</pubDate>
		<dc:creator>Алексей Колупаев</dc:creator>
				<category><![CDATA[Книги]]></category>
		<category><![CDATA[microISV]]></category>
		<category><![CDATA[книги]]></category>
		<category><![CDATA[стартап]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=5914</guid>
		<description><![CDATA[<img src="http://www.developers.org.ua/wordpress/wp-content/uploads/2009/12/1430219858.01._SCLZZZZZZZ_.png" alt="cover" width="50" height="75" align="left" />Как и Макс, я получил эту книгу в подарок от издательства, и обещал написать рецензию на нее. Не обязательно хорошую, но честную. Очень рад, что мне не пришлось стоять перед таким выбором, книга мне понравилась.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/Startup-Success-Guide-Books-Professionals/dp/1430219858"><img class="alignleft" style="margin: 10px;" src="http://images.amazon.com/images/P/1430219858.01._SCLZZZZZZZ_.jpg" alt="Bob's nice book!" width="333" height="500" /></a></p>
<p><em>(Как и </em><a href="http://www.developers.org.ua/archives/max/2009/10/29/coders-at-work-review/"><em>Макс</em></a><em>, я получил эту книгу в подарок от издательства, и обещал написать рецензию на нее. Не обязательно хорошую, но честную. Очень рад, что мне не пришлось стоять перед таким выбором, книга мне понравилась.)</em></p>
<p><a href="http://twitter.com/BobWalsh">Боб Волш</a> в прошлом программист с огромным опытом, а теперь автор нескольких книг и консультант в области стартапостроения.  Его предыдущие книги касаются двух направлений – социальных медиа и идее micro ISV – то есть, «компаний», состоящих из одного человека, программиста. Не знаю, как насчет социальных медиа, но идея micro ISV для Боба явно выстрадана и проверена личным опытом. И да – нет, Боб не является автором нескольких удачных стартапов, хотя опыт у него крайне богат, но это тот прекрасный пример, когда даже очень умный и талантливый человек вовсе не обязательно добивается мгновенного успеха в стартапе. Впрочем, он продолжает пытаться – посмотрите на его проект <a href="http://startuptodo.com">startuptodo.com</a> (говорят, в золотую лихорадку больше всех заработали продавцы лопат).</p>
<p>Уверен, многие программисты так или иначе задумывались об идее micro ISV (только, конечно, не называли ее так). Идея довольно простая: что же это я пишу-пишу, а миллионы на моем коде зарабатывает кто-то другой? Или, например, так: что за дурацкие задания мне дают, кто так пишет софт! Я сам гораздо лучше понимаю, как его писать, не вырваться ли мне из-под гнета «дяди», который ничего не понимает в толковом софте?  Боб Волш прошел этот путь, набил свои шишки, натер свои мозоли, получил свои уроки, и пообщался с целой кучей умных людей на эту тему. И он написал об этом книгу!</p>
<p>То, чего, как правило, не видят программисты, это огромный мир бизнеса, в котором не так уж важно, какой именно продукт ты делаешь. Очень быстро оказывается, что блестящий код и смелые решения – это только часть, и далеко не самая большая. Что продажи и маркетинг, пожалуй, важнее интерфейса и отсутствия багов. Что для победы в конкурсе красоты мало быть красивым – нужно еще и принять участие в конкурсе красоты. Как же быть? Один из вариантов – найти себе партнера, который сможет выполнить эти функции, и тогда, вдвоем, или втроем, вы сможете быть сильной командой, имеющей таланты по всем важным для молодой компании направлениям. Второй вариант, micro ISV – стать специалистом и в остальных, недостающих областях. Почему бы одному человеку не быть и программистом, и маркетологом, и продавцом, и многими другими виртуальными работниками в своей компании-одного-человека? Конечно же, Боб Волш не знает, что такое ведение бухгалтерии и налогового учета в Украине, поэтому считает, что все это возможно совместить в одном талантливом человеке.</p>
<p>Что вы найдете в этой книге? Ни слова о программировании, вы сами решите какой продукт и как создавать. Гораздо важнее понимать ценность вашего продукта, а это не так уж очевидно. Если вы делаете стартап, micro ISV, назовите как вам удобно – вы начинаете игру в деньги. Их надо заработать, и тот, кто делает это лучше, вовсе не обязательно лучше программирует. Он лучше понимает, кто их заплатит и почему. Он лучше знает, как найти потребность и удовлетворить ее. Как говорить со своими клиентами, и, хотя бы, дать им знать, что продукт существует.  Как найти деньги в тот момент, когда они нужны. Как быть очень-очень продуктивным, ведь успех дается только упорным и кропотливым трудом. Почему инвесторы делают инвестиции, и кому они их не дадут.</p>
<p>В книге не только размышления Боба на эти темы, в ней также множество интервью с теми, кто преуспел в этом. Не все имена известны в наших широтах, но Гай Кавасаки и Джоел Спольски одобряют и дают интервью этому человеку. Это не то, чтобы гарантия качества, но все-таки – авторитеты, что называется, тянут мазу. Отдельно я хочу упомянуть выдающуюся подборку эпиграфов к каждой главе – это очень емкие и интересные цитаты.</p>
<p>Я считаю, что каждый программист, который больше трех раз думал о том, чтобы сделать что-нибудь эдакое, стартапчик там, или еще какой замут, мог бы потратить двадцать баксов и пару дней, чтобы прочитать эту книгу, стать умнее, и, возможно, никогда больше не думать об этом. Или продолжать думать,  но уже гораздо более трезво. Это гораздо дешевле и быстрее, чем набивать все те же шишки самостоятельно. Неспроста самая первая фраза на обложке гласит: from developer to founder.  И, конечно, не стоит забывать, что самые смелые и громкие проекты сделаны скорее вопреки, чем благодаря книгам, учебникам и наставлениям. Для чего их, разумеется, надо прочитать.</p>
<p>Знание – сила!</p>
<p style="text-align: right;">Алексей Колупаев,</p>
<p style="text-align: right;"><a href="http://kolupaev.com">kolupaev.com</a></p>
<br/><a href="http://www.developers.org.ua/archives/kolupaev/2009/12/15/the-web-startup-success-guide-by-bob-walsh-review/#ratings">Оценить статью на сайте</a> | <a href="http://www.developers.org.ua/archives/kolupaev/2009/12/15/the-web-startup-success-guide-by-bob-walsh-review/#comments">11 комментариев</a>]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/kolupaev/2009/12/15/the-web-startup-success-guide-by-bob-walsh-review/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Вы — это то, что вы меряете</title>
		<link>http://www.developers.org.ua/archives/kolupaev/2009/04/27/you-are-what-you-measure/</link>
		<comments>http://www.developers.org.ua/archives/kolupaev/2009/04/27/you-are-what-you-measure/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 18:40:47 +0000</pubDate>
		<dc:creator>Алексей Колупаев</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[мера]]></category>
		<category><![CDATA[метрики]]></category>
		<category><![CDATA[управление проектами]]></category>
		<category><![CDATA[цель]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=4430</guid>
		<description><![CDATA[Мера — это, наверное, одно из самых интересных и глубоких абстрактных понятий. Мерять и измерять, иными словами — знать меру, это важная часть жизни человека. Это первый шаг на пути к управлению, любое управление базируется на измерении, или как минимум — на глазомере.]]></description>
			<content:encoded><![CDATA[<p>Мера &#8212; это, наверное, одно из самых интересных и глубоких абстрактных понятий. Мерять и измерять, иными словами &#8212; знать меру, это важная часть жизни человека. Это первый шаг на пути к управлению, любое управление базируется на измерении, или как минимум &#8212; на глазомере. Нет ничего удивительного в том, что мера также является и основополагающим понятием в управлении проектами, которым я имею счастье заниматься. Но, насколько я могу видеть, не все менеджеры проектов это понимают в должной степени. Впрочем, я сам это понял сравнительно недавно, поэтому решил поделиться мыслями на этот счет.</p>
<p>Почему управление &#8212; это в первую очередь измерение? Есть масса различных формальных и не очень определений понятия &#8220;управление&#8221;, все они по сути похожи: управление &#8212; это действия, направленные на объект, для достижения цели. То есть, управление базируется на трех предпосылках: действия, объект, цель. Если чего-то из них нет &#8212; нет управления. Как это может быть? Давайте разберемся. Как может не быть действий? Это ситуация, когда вы ничего не можете поделать с объектом. Например, мы все знаем, что Земля вращается вокруг Солнца, но повлиять на эту ситуацию у нас нет никакой возможности. Такое &#8220;управление&#8221; можно назвать наблюдением. Как может не быть объекта? Например, вы можете прослушать курс лекций по управлению космическим кораблем, но если вас к нему не допустят &#8212; это останется теорией. Такое &#8220;управление&#8221; можно назвать теоретической подготовкой. Как может не быть цели? Это, например, когда вам на улице дали пистолет, объяснили с какой стороны он стреляет и куда жать, и на этом попрощались. Такое &#8220;управление&#8221; можно назвать&#8230; наверное, глупостью.</p>
<p>Разумеется, я хочу поговорить о цели. Цель &#8212; не менее важная абстракция в жизни человека, плотно связанная с Мотивацией, и, соответственно, являющаяся одной из основополагающих концепций человеческой деятельности вообще. Что интересно, еще с 1954 года существует целое направление менеджмента, посвященного именно управлению целями &#8211; <a href="http://en.wikipedia.org/wiki/Management_by_objectives">Management by Objectives</a>. В нем вводится понятие цели, точнее даже не понятие, а обязательные свойства цели, без которых цель &#8212; не цель. <a href="http://www.learnmarketing.net/smart.htm">Вот</a> эти свойства:</p>
<blockquote><p>A simple acronym used to set objectives is called SMART objectives. SMART stands for:</p>
<p>1. Specific &#8212; Objectives should specify what they want to achieve.<br />
2. Measurable &#8212; You should be able to measure whether you are meeting the objectives or not.<br />
3. Achievable &#8212; Are the objectives you set, achievable and attainable?<br />
4. Realistic &#8212; Can you realistically achieve the objectives with the resources you have?<br />
5. Time &#8212; When do you want to achieve the set objectives?</p></blockquote>
<p>Все эти характеристики важны и появились в этом списке не просто так, но я хотел бы подробнее рассмотреть идею меры в идее цели: Measurable &#8212; измеримый.</p>
<p>Что такое измеримая цель? Очевидно, это означает, что существует некий критерий ее достижения. То есть конкретный способ однозначно ответить на вопрос &#8220;достигнута ли цель?&#8221;. Менее очевидно, но также понятно, что существует некоторая мера, позволяющая оценить изменения, спровоцированные теми самыми действиями в отношении того самого объекта. Оценить с одной простой точки зрения &#8212; они приближают к цели или нет? Были ли действия правильными? Как мы можем знать, сработали ли те или иные действия, и как именно?</p>
<p>Проблемы возникают как с первым (критерием достижения цели) так и со вторым (мера близости к цели). И в принципе, с точки зрения &#8220;business value&#8221; и то и другое &#8212; критично. В первом случае &#8212; невозможно определить конец проекта. При этом, обратите внимание, цель как таковая есть, сформулирована и многими может восприниматься вполне нормально. Например &#8212; &#8220;повысить прибыльность компании&#8221; (как понять, что проект выполнен? Является ли увеличение прибыли на один доллар сигналом к прекрещанию проекта?) или &#8220;увеличить посещаемость ресурса&#8221;, &#8220;повысить уровень грамотности населения&#8221;, &#8220;построить коммунизм&#8221;.</p>
<p>Во втором случае, когда нет меры близости цели, невозможно оценить прогресс, и, следовательно, вероятность успешного завершения проекта, проблемы с управлением рисками, с обратной связью. Мы предприняли действие &#8212; произошло изменение, но наша цель такова, что мы не можем сказать, хорошее это было изменение или нет. Имели ли эти действия смысл? Это происходит, когда команда не слишком хорошо понимает, что  влияет на достижение цели. Приведу такой пример: допустим, проект &#8212; это игра в шахматы. Цель &#8212; поставить противнику мат (хорошая цель, есть конкретные критерии ситуации &#8220;мат&#8221;). Но вы не умеете играть в шахматы, только знаете, как ходят фигуры. Вы можете предпринимать какие-то ходы, но в целом, крайне сложно сказать, был ли каждый конкретный ход успешным, то есть &#8212; приблизил ли он мат противника. </p>
<p>Казалось бы, все достаточно понятно и просто, в чем же проблема? Это же, в общем, вполне понятные вещи? Давайте посмотрим, как эти идеи воплощаются в реальных проектах.</p>
<p>Итак, чем же специфичен большой реальный проект? Он интересен тем, что его цель, как правило, достаточно глобальна и сложна в достижении. Во всяком случае, насколько сложна, что одному человеку с этим никак не справиться. Поэтому людей в таком проекте работает много. В первую очередь &#8212; из-за компетенции: сложный проект требует сильных сторон команды в большом количестве разных отношений. Технологии, управление, продажи, закупки, маркетинг, поддержка, клиентский сервис, дистрибьюция, логистика &#8212; это реальность современных проектов.  Могут ли все эти направления &#8220;закрываться&#8221; одним человеком? Вряд ли. Вторая проблема &#8212; количество рук. Даже если предположить, что в одном конкретном проекте нужно не так много навыков, как правило время жизни проекта в сочетании с объемом необходимых работ говорят о том, что в одиночку его сделать невозможно. Нужно больше рук. Нужно больше умов. Нужно двигаться быстрее.</p>
<p>Итак, людей будет много. А как быть с целью? Цель-то одна на всех? Как же двигаться вперед? Понятное дело, цель приходится декомпозировать. То есть, разбивать цель на подцели (то есть, цели более низкого уровня, внутренние цели проекта), исходя из идеи того, что выполнение всех подцелей обеспечит выполнение цели проекта. Кто это делает? Менеджер проекта. </p>
<p>Приведу один широко известный пример. В одной крупной компании был колл-центр. Смысл его заключался в том, чтобы отвечать на телефонные звонки, обслуживать клиентов. В какой-то момент менеджер задался вполне логичным вопросом: откуда я знаю, что мой отдел работает хорошо? Как понять, что мы работаем хорошо, и, главное, насколько люди в моем отделе выполняют поставленную перед ними задачу &#8212; обслуживают клиентов? Чтобы понять это, он ввел метрику (меру!) эффективности своих подчиненных &#8212; количество обработанных звонков в час. Считалось, что те, у кого этот показатель был высок &#8212; работал хорошо, те же, кто обрабатывал маленькое количество звонков в час &#8212; работал плохо.</p>
<p>Давайте подумаем, насколько это хорошая идея. Откуда появилась такая цель? У компании как у проекта в целом, как у любой компании, цель &#8212; получение прибыли. При разборе цели топ-менеджерами была сформирована стратегия достижения этой цели, и эта стратегия опиралась на бизнес-модель, в которой есть колл-центр. Перед колл-центром стояла задача: обслуживание клиентов. Не знаю, как именно была сформулирована цель, но, очевидно, она подразумевала взаимодействие с клиентами: было важно, чтобы нужда клиентов была удовлетворена, на все вопросы клиенты должны были получить ответы. Перед менеджером колл-центра эта цель приобрела, декомпозируясь, все более меркантильные черты: необходимо набрать и обучить персонал, необходимо прогнозировать и удовлетворять нужду конкретного количества клиентов (которое меняется как от времени суток, так и просто с развитием проекта), в общем &#8212; много конкретных задач с конкретными целями.</p>
<p>Что же произошло? А произошло вот что: операторы колл-центра, видя, что позвонивший клиент разговаривает долго, задает много вопросов, и вообще тянет беседу, попросту бросали трубку. Нет смысла долго говорить с человеком, если важно обработать максимальное количество звонков в час.</p>
<p>То есть, мы видим, как цель, большая и светлая, при дроблении и делении на подцели, просачиваясь сквозь кабинеты, структуру и вертикали власти, попросту теряет свой изначальный смысл. Примеров &#8212; огромное количество, вот, например, <a href="http://www.joelonsoftware.com/items/2006/11/10b.html">заметка Джоела на эту тему</a>. </p>
<p>По этому поводу, хочу предложить интересную фразу для понимания сути меры, которую, понятно, придумал не сам, но нахожусь под большим впечатлением от ее пронзительной правоты:</p>
<p><a href="http://www.mit.edu/~hauser/Papers/Hauser-Katz%20Measure%2004-98.pdf">You are what you measure</a></p>
<p>Вы &#8212; это то, что вы меряете. Ваша работа &#8212; это то, что вы меряете. Вы делаете то, что вы меряете. </p>
<p>Из этого есть три важных следствия:</p>
<ul>
<li>Если вы думаете, что делаете что-то, но не меряете это что-то &#8212; вы на самом деле не делаете этого.</li>
<li>Если измерять что-то, делать это упорно, открыто и настойчиво &#8212; вы начинаете делать это.</li>
<li>Если вы меряете какую-то глупость &#8212; вы и делаете какую-то глупость. </li>
</ul>
<p>Отсюда вывод &#8212; чтобы начать что-то делать, нужно начать это мерить. Иначе это стрельба в темноте от пояса. Может, конечно, что-то и получится, в конце концов, есть же такая вещь, как спасительная интуиция. Но я не готов поставить на нее.</p>
<p>Мера &#8212; критерий цели, цель &#8212; основа мотивации, мотивация &#8212; это то, что вы хотите делать, следовательно, делаете. Выбрасывая любое звено из этой цепи, вы лишаетесь движения к цели. Подменяя какое-то звено, вы рискуете целью проекта.</p>
<p>По этому поводу предлагаю каждому, кто работает над каким-либо проектом, задуматься, и ответить для себя на такие вопросы:</p>
<ol>
<li>Вы знаете, какая цель у проекта, над которым вы работаете? Можете ее сформулировать?</li>
<li>Доступны ли вам результаты измерений достижения целей проекта? Знаете ли вы их?</li>
<li>Вы знаете, какая модель достижения цели проекта? Ваше место в ней?</li>
<li>Вы знаете, какая цель стоит перед вашим подразделением? Доступны ли вам результаты измерений по ней?</li>
<li>Вы знаете, какая цель стоит перед вами?</li>
<li>Как вы измеряете свои успехи в достижении вашей цели?</li>
<li>Есть ли у вас отчетливое понимание, какую бизнес-ценность добавляет ваша цель вашему проекту?</li>
</ol>
<p>Ну, а если вы менеджер проекта, скажите &#8212; как ответят на эти вопросы ваши подчиненные? А как ответит ваш начальник, если у него спросят, как ответите на эти вопросы вы?</p>
<br/><a href="http://www.developers.org.ua/archives/kolupaev/2009/04/27/you-are-what-you-measure/#ratings">Оценить статью на сайте</a> | <a href="http://www.developers.org.ua/archives/kolupaev/2009/04/27/you-are-what-you-measure/#comments">17 комментариев</a>]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/kolupaev/2009/04/27/you-are-what-you-measure/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Легендарная книга &#8212; за отзывы о новом стартапе</title>
		<link>http://www.developers.org.ua/archives/kolupaev/2008/08/13/maanimo-book/</link>
		<comments>http://www.developers.org.ua/archives/kolupaev/2008/08/13/maanimo-book/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 07:30:55 +0000</pubDate>
		<dc:creator>Алексей Колупаев</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[конкурс]]></category>
		<category><![CDATA[стартап]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=1428</guid>
		<description><![CDATA[Мы приглашем вас познакомиться с нашим детищем, и рассказать о своих впечатлениях, чтобы мы смогли исправить свои ошибки к финальной версии, сделав сайт удобнее и полезнее. Автору самого справедливого из гневных комментариев мы подарим легендарную книгу <a href="http://www.amazon.com/review/product/1590597141/ref=cm_cr_dp_all_summary?_encoding=UTF8&#038;showViewpoints=1&#038;sortBy=bySubmissionDateDescending">«Founders at work» Джессики Ливингстон</a>.]]></description>
			<content:encoded><![CDATA[<h3>Тот самый стартап, или что могут сделать люди, умеющие поворачивать строку задом наперед</h3>
<p>Привет всем читателям ДОУ, доброе утро и &#8212; помогите нам, пожалуйста.</p>
<p>Я уже не раз рассказывал о том, что мы делаем стартап, и, как многие помнят, <a href="http://www.developers.org.ua/archives/kolupaev/2008/06/12/startup-interview/">искали единомышленников</a> среди сообщества. Могу наконец с чистой совестью сказать, что все было не зря, что мы наши тех самых людей (но поиски не остананавливаем!), и, наконец-то, дожили до бета-версии. Ее можно увидеть по адресу <a href="http://maanimo.com/">maanimo.com</a>. Она еще нежная и беззащитная, и в ней есть недостатки, но ведь на то она и бета, не так ли? <img src='http://www.developers.org.ua/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Попытаюсь описать в двух словах цель, которую мы преследовали:</p>
<p>Новый портал Maanimo.com  должен помочь людям, неискушенным в финансах, разобраться в вопросах управления деньгами. Также у нас можно будет найти лучшие продукты и сервисы, предлагаемые сегодня в Украине многочисленными финансовыми организациями (банками, инвестиционными и страховыми компаниями, брокерами, кредитнымии союзами и т.д.). </p>
<p>На сайте можно найти как статьи образовательного характера, так и аналитические материалы, прогнозы, советы экспертов и просто свежие новости в мире финансов. Кроме того, в каталоге депозитов можно сориентироваться и сделать выбор среди депозитных программ десятков украинских банков, число которых на нашем сайте постоянно растет.</p>
<p>Мы приглашем вас познакомиться с нашим детищем, и рассказать о своих впечатлениях, чтобы мы смогли исправить свои ошибки к финальной версии, сделав сайт удобнее и полезнее. Автору самого справедливого из гневных комментариев мы подарим легендарную книгу <a href="http://www.amazon.com/review/product/1590597141/ref=cm_cr_dp_all_summary?_encoding=UTF8&#038;showViewpoints=1&#038;sortBy=bySubmissionDateDescending">«Founders at work» Джессики Ливингстон</a>, под влиянием которой мы решили делать этот стартап.</p>
<p>Всем заранее большое спасибо, и &#8212; судите строго и справедливо!</p>
<p>P.S. RSS и поиск сейчас отключены намерено &#8212; появится на следующей неделе.</p>
<p>P.P.S. Тотальная AJAX-ификация интерфейсов также планируется.</p>
<br/><a href="http://www.developers.org.ua/archives/kolupaev/2008/08/13/maanimo-book/#ratings">Оценить статью на сайте</a> | <a href="http://www.developers.org.ua/archives/kolupaev/2008/08/13/maanimo-book/#comments">28 комментариев</a>]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/kolupaev/2008/08/13/maanimo-book/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Нехитрый вопрос на собеседовании или как не попадают в стартапы</title>
		<link>http://www.developers.org.ua/archives/kolupaev/2008/06/12/startup-interview/</link>
		<comments>http://www.developers.org.ua/archives/kolupaev/2008/06/12/startup-interview/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 07:00:45 +0000</pubDate>
		<dc:creator>Алексей Колупаев</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[задача]]></category>
		<category><![CDATA[собеседование]]></category>
		<category><![CDATA[стартап]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=1342</guid>
		<description><![CDATA[Мне довелось поработать в интересных местах, со многими интересными людьми и провести, наверное, около сотни собеседований, в основном, PHP-программистов. Пользуясь случаем, хочу поблагодарить всех, кто приходил ко мне на собеседования – вы многому меня научили. И я хочу поделиться со всеми одной из своих самых любимых задачек для собеседования.]]></description>
			<content:encoded><![CDATA[<p>Всем привет, меня зовут Алексей Колупаев, и мне посчастливилось познакомиться с людьми, которые изменили мою профессиональную жизнь: <a href="http://webdev.org.ua/node/523">я делаю новый стартап</a>. Именно от меня будет зависеть вся техническая часть нового народного финансового портала. И, на данном этапе, это означает, что мне нужно собрать убийственную команду и так построить процесс, чтобы добиться суперэффективности.  Есть мнение, что собрать классную команду очень нелегко. Мне довелось поработать в интересных местах, со многими интересными людьми и провести, наверное, около сотни собеседований, в основном, PHP-программистов. Пользуясь случаем, хочу поблагодарить всех, кто приходил ко мне на собеседования – вы многому меня научили. И я хочу поделиться со всеми одной из своих самых любимых задачек для собеседования.</p>
<p>Придумал ее, разумеется, не я, а прочитал, кажется, у <a href="http://joelonsoftware.com/">Джоела Спольски</a>. Слышал, что ее дают на собеседовании в Microsoft.  В коротком варианте она звучит так: «как повернуть строку задом наперед?».  Подозреваю, что в Microsoft не ожидают ее решения на PHP, а вероятно, на С или С++. Прелесть задачи состоит в том, что она мало говорит о языке и много – о программисте. В моем варианте она звучит так:</p>
<pre><code>&lt;?php
$a = &#039;abcdefgh&#039;;
// Напишите здесь недостающий код, чтобы результатом работы скрипта была строка $a, повернутая наоборот
echo $a;
?&gt;</code></pre>
<p>То есть, этот скрипт должен выдавать</p>
<pre><code>hgfedcba</code></pre>
<p>Вот в этом месте предлагаю всем читателям, владеющим PHP, решить эту несложную задачку. А я поделюсь с вами тем спектром решений, которые я получал во время проведения собеседований.</p>
<p>Нет, правда, попробуйте.</p>
<p>Итак, буду оглашать и комментировать варианты ответа в порядке моего личного, субъективного, наверняка в чем-то ошибочного понимания правильности решения.</p>
<p><strong>5. Номер пять в моем хит-параде занимает ответ «я не знаю, и не буду это писать».</strong> Иногда с вариантом «что за дурацкая задача, в жизни такого не бывает». Слив, как говорится, засчитывается сразу.</p>
<p><strong>4. Номер четыре занимает вариант «В PHP вроде должна быть такая функция…».</strong> Что ж, справедливости ради, должен сказать, что в PHP действительно есть такая функция. Названия ее, конечно же, никто не помнит. Это нормально. Но неужели вы думаете, что я задавал эту  задачку, чтобы услышать такой ответ? Следом за таким ответом предлагаю реализовать эту функцию самостоятельно. То есть, как отмазка не канает, надо писать.</p>
<p><strong>3. Место номер три уходит семейству решений под девизом «ну, как-то через массивы».</strong> Код при этом, разумеется, выглядит по-разному, и до победного конца (работающего и выполняющего задачу скрипта) добираются не все адепты массивных решений.  Функции explode() и, соответственно,  implode() приходят в голову далеко не всем, а уж что пытаются делать между ними – прямо стыдно рассказывать. Даже сортировку. Решение с массивами формально годится, задача должна быть в первую очередь решена, а потом уже можно и заняться оптимизацией, и поговорить о производительности, и так далее. Нюанс в том, что решить задачу через массивы не так уж легко, потому что массивы тут не нужны. Есть у меня подозрение, что такое решение говорит о том, что человек недостаточно работал с примитивными типами данных, а был в детстве  ранен в мозг простотой и легкостью динамических массивов в PHP. Но человека, более-менее писавшего, например, на С, таким не обмануть.  Так что в целом – подходу незачот.</p>
<p><strong>2. Следующее решение – минимально адекватное для того, чтобы я рассматривал человека всерьез:</strong></p>
<pre><code>$b = &#039;&#039;;
for ($i = strlen($a)-1; $i&gt;=0; $i--)
    $b .= $a[$i];
$a = $b;</code></pre>
<p>Возможны, понятно, некоторые вариации.</p>
<p>Такое решение встречается в большинстве случаев, не всегда с первого раза, правда. В этом решении есть нескольно важных мест:</p>
<ul>
<li><code>strlen()</code> вынесен из тела цикла и выполняется один раз (есть ли понимание того, что это зло?)</li>
<li>минус один от длины строки (сколько шишек об это уже набито?)</li>
<li>как там с ноликом – больше или больше-равно? (те же, в принципе, шишки)</li>
</ul>
<p>Так как часто это задание я предлагаю решить на бумажке, сразу видно, что человек учитывает сходу, а что «подтачивал» бы по результату.</p>
<p><strong>1. Джедайские техники.</strong> Чемпионов видно по джедайским техникам решения задач, хочется верить, что такие люди хотя бы листали Кнута. Мне известно только две, на собеседовании я встретил их буквально один или два раза. Первая, которую я таки встречал (Вадим, привет) заключается в том, чтобы использовать цикл вдвое меньшей длины и менять местами соответствующие символы:</p>
<pre><code>$b = &#039;&#039;;
$l  = strlen($a)-1;
for ($i = 0; $i &lt; $l/2; $i++) {
    $b = $a[$i];
    $a[$i] = $a[$l-$i];
    $a[$l-$i] = $b;
}
</code></pre>
<p>Вторая джедайская хитрость состоит в том, чтобы поменять местами символы в строке без использования третьей переменной. Очень сильно удивлен, что многие не знают, как это сделать даже для чисел. А тут – символы. А так хотелось бы, что-то кто-то написал что-то вроде</p>
<pre><code>$a[$i] = $a[$l-$i]^$a[$i];
$a[$l-$i] = $a[$l-$i]^$a[$i];
$a[$i] = $a[$l-$i]^$a[$i];</code></pre>
<p>Задачка, конечно, «плюшевая». Я сам могу придумать десяток причин, по которым она плоха – не отражает знание PHP, не соответствует реальной жизни, что вообще она показывает, бла, бла, бла.  Как, например, понять, догадался человек о таком решении или просто читал о нем где-то еще? Неважно. Уверяю вас – пользуясь этой задачкой (и, конечно, еще многими другими) я еще ни разу серьезно не ошибся с кандидатом. Ведь формальное знание PHP в кандидате – поверьте, далеко не главное. Значительно важнее – отношение к своему занятию, стремление к развитию, способность играть в команде, видение мира, если угодно. Мне гораздо интереснее, как человек решает задачу, чем ее фактическое решение. Грань между этими вещами довольно тонка, но мне кажется – она есть, и понять, что за ней, не так уж просто.</p>
<p>А всем, кто дочитал до этого драматического места, я напоминаю, что наш проект ищет людей, которые обладают талантами PHP-программистов, которые в начале этой статьи все-таки решили эту задачку и ответ находится в первой или второй группе решений. Таким программистам мы хотим рассказать о прелестях работы в стартапе, о чудесах, на которые способна маленькая но мощная команда, вооруженная разносторонними знаниями, оснащенная лучшими средствами производства гениальных проектов и мотивированная нашими, украинскими, реальными рыночными целями. Если вы хороши, действительно хороши в PHP, и это не единственный  ваш язык программирования, если у вас есть свое мнение относительно модели MVC и пара серьезных проектов за спиной, если вам не все равно как происходит развитие проекта, и вы болеете душой за agile, scrum и xp, если вы еще недостаточно закостенели и готовы броситься с головой в проект, где надо будет реально показать то лучшее, на что вы способны – то у нас есть к вам предложение мечты. Но задачка на собеседовании будет другая <img src='http://www.developers.org.ua/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p class="right">Алексей Колупаев,<br />
kolupaev@gmail.com</p>
<br/><a href="http://www.developers.org.ua/archives/kolupaev/2008/06/12/startup-interview/#ratings">Оценить статью на сайте</a> | <a href="http://www.developers.org.ua/archives/kolupaev/2008/06/12/startup-interview/#comments">151 комментариев</a>]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/kolupaev/2008/06/12/startup-interview/feed/</wfw:commentRss>
		<slash:comments>151</slash:comments>
		</item>
	</channel>
</rss>
