<?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>Antipatter &#187; web agency</title>
	<atom:link href="http://antipatter.com/category/web-agency/feed/" rel="self" type="application/rss+xml" />
	<link>http://antipatter.com</link>
	<description>The Web, The Business, The Smoke and Mirrors</description>
	<lastBuildDate>Sat, 19 Jun 2010 14:32:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Siloing (A Rant)</title>
		<link>http://antipatter.com/2010/03/siloing-a-rant/</link>
		<comments>http://antipatter.com/2010/03/siloing-a-rant/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 20:19:56 +0000</pubDate>
		<dc:creator>loren</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[web agency]]></category>
		<category><![CDATA[silo]]></category>
		<category><![CDATA[specialization]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://antipatter.com/?p=305</guid>
		<description><![CDATA[Recently, I&#8217;ve noticed that what I originally remember as &#8220;folks who make websites&#8221; has grown and specialized into a bunch of different jobs.  Jobs held by people who are not necessarily watching how the decisions they make affect other parts of a project. Not to be overly simplistic, but there are three basic perspectives of [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I&#8217;ve noticed that what I originally remember as &#8220;folks who make websites&#8221; has grown and specialized into a bunch of different jobs.  Jobs held by people who are not necessarily watching how the decisions they make affect other parts of a project.</p>
<p>Not to be overly simplistic, but there are three basic perspectives of web development:</p>
<ul>
<li><strong>Usability, or user experience</strong>.  In its broadest definition, this is a measure of how good the web app is to the user; how much value it creates for them.  In a more specific sense it reflects a stack of best practices (and very, very occasionally innovations) that add up to the user experience on the site.</li>
<li><strong>Business value</strong>.  In the broadest sense this is &#8220;what the web app is doing for the people who pay its bills&#8221;.  This can be interpreted as monetization (via ads, conversion etc), or simply controlling the budget and schedule of the development project.</li>
<li><strong>Feasibility</strong>:  Often taken as a technical subject, it its broadest sense, feasibility simply describes how much effort goes into making something happen.</li>
</ul>
<p>The catch is, to truly make something successful, both from the perspectives of  project management (launch on time, on budget) and product management (build something that is successful in the real world), you need to keep your eye on the ball for all three perspectives.  Otherwise you&#8217;ve failed.</p>
<p>For example, I&#8217;ve seen user experience people run wild with feature ideas, not paying attention to the development cost that such features incur.  I&#8217;ve seen the opposite as well &#8211; web apps with terrible user experiences that are vulnerable to losing market share to better designed products.</p>
<p>I&#8217;ve seen project sponsors focus on business value at the expense of user value, and then are surprised when no one uses their product.  I&#8217;ve seen projects that have been managed perfectly for schedule and budget (perfect scores to the project manager) fail in the open marketplace because they didn&#8217;t bring value.</p>
<h3>Which Brings Me to the Siloing Part&#8230;</h3>
<p>So to really succeed, you need to synthesize all three perspectives into a unified vision.  That&#8217;s why it drives me crazy to see so many people in web development so oblivious and willfully ignorant of perspectives other than their &#8220;native&#8221; perspective.  UX people that make features up without understanding development cost.  Developers that launch features without considering a usable interface.  PMs that manage schedule and budget without comprehending the quality of what they&#8217;re developing.</p>
<p>Do you really want to be good at this?  Then learn about the perspectives that are different from what you deal with every day.  UX people should understand the constraints (and advantages) that technology puts on development.  Developers should appreciate the business goals and usability issues related to the products they develop, and PMs should understand the vision of the products they&#8217;re managing.</p>
<h3>Process is Not The Answer</h3>
<p>Process alone, especially any process that involves creation of a bunch of intermediate documents or getting people to show up for a bunch of meetings, is not going to fix this.  The people who work on web applications need to internalize the other perspectives, and make it their personal responsibility to understand this.</p>
<p>Once this happens, an organization can support people by offering pathways to education (courses, books, conferences etc), but the people need to personally commit.</p>
<p>Admittedly this makes a barrier to scaling, because not everyone is interested in other perspectives.  They got into their own discipline (development, project management, visual design, UX etc) for a reason, and that&#8217;s where they want to stay.</p>
<p>My view is that the willingness to see the other perspectives is what separate the truly talented from the mediocre, and the mediocre will not be working for me any time soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://antipatter.com/2010/03/siloing-a-rant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modeling Risk (Part 4) &#8211; Putting It All Together</title>
		<link>http://antipatter.com/2009/08/modeling-risk-part-4-putting-it-all-together/</link>
		<comments>http://antipatter.com/2009/08/modeling-risk-part-4-putting-it-all-together/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 01:28:28 +0000</pubDate>
		<dc:creator>loren</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web agency]]></category>
		<category><![CDATA[risk]]></category>

		<guid isPermaLink="false">http://antipatter.com/?p=282</guid>
		<description><![CDATA[In this, the final installment of the Modeling Risk series, we going to put together everything we covered in the previous installments into a unified risk model. In part one we learned about Client Risk: risk that clients bring when they walk through the door.  Based on attributes such as the ability to make decisions, [...]]]></description>
			<content:encoded><![CDATA[<p>In this, the final installment of the Modeling Risk series, we going to put together everything we covered in the previous installments into a unified risk model.</p>
<p style="text-align: center;"><img class="size-medium wp-image-284 aligncenter" title="risk" src="http://antipatter.com/wp-content/uploads/2009/08/risk-300x233.png" alt="risk" width="300" height="233" /></p>
<p>In <a href="http://antipatter.com/2009/07/modeling-risk/">part one</a> we learned about Client Risk: risk that clients bring when they walk through the door.  Based on attributes such as the ability to make decisions, relative insensitivity to price and technology agnosticism, clients can either be part of the problem or part of the solution when it comes to managing risk.</p>
<p>In <a href="http://antipatter.com/2009/08/modeling-risk-part-2/">part two</a> we learned about Structural Risk: risk that is derived from how the team is structured &#8211; whether they are familiar with each other, a common process, the tech or the client.  In some ways this type of risk is learning curve risk, because it models how many learning curves are piled onto the project.</p>
<p>Finally, in <a href="http://antipatter.com/2009/08/modeling-risk-part-3-quality/">part three</a> we learned about Qualitative Risk: risk that is driven from the quality of the team, the technology and the support for the team.  The better these things are, the more curve balls they can handle, and the more they can cope with risk from the other vectors.</p>
<p>From each of these three aspects of risk we derived an overall letter grade: from A to F.</p>
<h2>Putting it All Together</h2>
<p>Here&#8217;s how the letter grades combine:</p>
<h3>Low Risk: All A&#8217;s and B&#8217;s</h3>
<p>This is a good to great project with minimal risk.  In this range you can count on projects staying on track, and arriving where they are supposed to within budget, on schedule and at a level of quality that will satisfy everyone.</p>
<h3>Medium Risk: One or Two C&#8217;s</h3>
<p>This is a project that has a combination of a relatively problematic client, an immature team, or mediocre quality issues.  It is possible to succeed in this space, but it requires a close watch and quick action to mitigate the problems that inevitably will come up.  The success of the project depends on at least on of the three areas being better than the &#8220;C&#8221; level &#8211; the strength that can hold up the project.</p>
<h3>High Risk: Three C&#8217;s or One or Two D&#8217;s</h3>
<p>This is a project that, from its onset, has a good chance of going bad.  Either there is no strong area that pulls the project up to the medium risk level, or there is one or more areas with real problems: a truly high risk client, an immature team or poor quality from the team, the technology or the team&#8217;s support system.</p>
<p>Despite the best risk-mitigating activity from management, there is still a good chance that this project will go wrong.  It would be  a sound decision to walk away from such a project, but if taking it on is necessary, then it should be approached extremely defensively, as there will inevitably be serious crises as the project progresses.</p>
<h3>Lead Balloon: One or more F&#8217;s, or 3 D&#8217;s</h3>
<p>This is either a project with an impossible client, a disastrous team, or a catastrophic quality issue; or it is a project that is merely poor in all three areas.</p>
<p>Generally speaking, it is not possible to be successful with such a project.  The presence of the F will sink the project on its own, or the general malaise of the 3 D&#8217;s will accumulate into a disaster.</p>
<p>A project at this level needs a fundamental reset: generally either the client or the team has to go, depending on the source of the problems.  Risk mitigation at this level will be overwhelmed.</p>
<h2>Conclusion</h2>
<p>So there you go &#8211; my general theory of project risk.  I hope that you find it helpful, and through it gain a greater understanding of why projects succeed and fail, and when to plunge ahead, and when to run the other way.  Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://antipatter.com/2009/08/modeling-risk-part-4-putting-it-all-together/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modeling Risk (Part 3): Quality</title>
		<link>http://antipatter.com/2009/08/modeling-risk-part-3-quality/</link>
		<comments>http://antipatter.com/2009/08/modeling-risk-part-3-quality/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 05:09:35 +0000</pubDate>
		<dc:creator>loren</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[web agency]]></category>

		<guid isPermaLink="false">http://antipatter.com/?p=267</guid>
		<description><![CDATA[The plot so far:  there are specific things that cause project&#8217;s to fail, beyond the abilities of seemingly competent people to control.  These forces aren&#8217;t random, they are specific patterns and antipatterns that create accumulating risk that bears down on projects like debt. In Part 1 we discussed client driven risk &#8211; the problems that [...]]]></description>
			<content:encoded><![CDATA[<p>The plot so far:  there are specific things that cause project&#8217;s to fail, beyond the abilities of seemingly competent people to control.  These forces aren&#8217;t random, they are specific patterns and antipatterns that create accumulating risk that bears down on projects like debt.</p>
<p>In <a href="http://antipatter.com/2009/07/modeling-risk/">Part 1</a> we discussed client driven risk &#8211; the problems that clients bring to the table and how they affect the project.  In <a href="http://antipatter.com/2009/08/modeling-risk-part-2/">Part 2</a> we discussed structural risk &#8211; risk that originates with the composition of the team working on the project.</p>
<p>The third and list type of risk I call <strong>Qualitative Risk</strong>.  This is a kind of risk that is affected by the quality of the tools and people executing the project.  Everything counts, everything matters.  Quality affects the project.</p>
<p>There is a school of thought in business that would dearly like to factor quality out of the equation.  Businesses that trade in commoditized markets, competing on price, basically operate on the supposition that there is a standard level of quality and that it is not a distinguishing characteristic.  The movement towards off-shoring software development included an attempt to factor out quality.  Command-and-control programming languages like Java and .NET are attempts to engineer developer quality out of the equation &#8211; at least partially.</p>
<p>Quality, however, matters.  The web development framework you choose will affect the project, positively or negatively.  The skills of the developers you hire will affect the project.  It is not just subjective, some of these things are actually better than others.</p>
<p>I break Quality factors down into 3 main pillars: <em>Team</em>, <em>Tech</em> and <em>Support</em>.</p>
<p><strong>Team:</strong> How strong is the team?  My feeling is there should be at least 1 really good senior developer for every 3 medium or junior developers on staff.  In addition, it is good to have at least a couple of honest-to-goodness rock stars around &#8211; the people who can be thrown against any technical challenge and still land on their feet.  The bar should be set at a level where the team can be counted on to astonish you on at least a semi-regular basis.</p>
<p><strong>Tech:</strong> How good is the tech on which you&#8217;re building this thing?  Does it provide features that you need?  Does it provide a means of accelerating custom development, in case you need to go outside those features?  How often is time spent using the technology solving actual business problems, as opposed to just servicing the demanded ceremonies of the technology?  When is the technology enabling you, and when are you fighting it?</p>
<p><strong>Support:</strong> The infrastructure: managerial, administrative, legal, HR etc., that surrounds the team &#8211; how much is it helping?  Is HR effective in finding new talent?  How about support from IT?  Is it straightforward to get ticket systems, continuous integration servers, new virtual servers etc. set up?  Or does every request take forever, with the development team resorting to circumventing the company infrastructure?  Does management back and support the development team, or are they selling them up the river?</p>
<p>Each of these pillars is deep and complicated, so grading them is a little abstract.  However if you set an aggregate grade for each pillar and take the average you&#8217;ll get a sense of the qualitative risk associated with the project.  Again, starting about the C grade and intensifying as you drop below that, you can easily get to a level of unacceptable risk.</p>
<p><strong>In the next and final installment of this series &#8211; we&#8217;ll look at putting all the various risk factors, client-driven, structural and qualitative, into an overall risk profile.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://antipatter.com/2009/08/modeling-risk-part-3-quality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modeling Risk (Part 2)</title>
		<link>http://antipatter.com/2009/08/modeling-risk-part-2/</link>
		<comments>http://antipatter.com/2009/08/modeling-risk-part-2/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 22:32:49 +0000</pubDate>
		<dc:creator>loren</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web agency]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[teams]]></category>

		<guid isPermaLink="false">http://antipatter.com/?p=254</guid>
		<description><![CDATA[In part one we had a look at risk that comes to the project from the client, before it even starts.  This time we&#8217;ll look at risk that comes from the composition of the project and the project team. I like to call this second category Structural Risk, because it has to do with how [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://antipatter.com/2009/07/modeling-risk/">part one</a> we had a look at risk that comes to the project from the client, before it even starts.  This time we&#8217;ll look at risk that comes from the composition of the project and the project team.</p>
<p>I like to call this second category <strong>Structural Risk</strong>, because it has to do with how a project is structured: the parts that make it up.  Again, to take the positive angle &#8211; each point below is listed in its non-risk-adding, positive side:</p>
<ul>
<li><strong>The team has worked together before.</strong> The team itself is a known quantity, with the individual talents and personalities of each team member known to the group.  This knowledge allows team members to guide the project to leverage the various strengths and avoid the weaknesses of the individuals on the team, working together to achieve the highest level of productivity.  Also hopefully people like and respect each other.</li>
<li><strong>The team knows the technology.</strong> It is a technology that the team has worked with before &#8211; they know how to work with it rather than wind up fighting it.  They are unlikely to be surprised by strange quirks of the tech stack that creep up at the most inopportune times.</li>
<li><strong>The team knows the client.</strong> The team has worked with this client before, and therefore knows the business problems that intersect their space.  This way they will be less likely to make poor assumptions about how things are supposed to work.  Functional specs are great, but they don&#8217;t take the place of actual domain knowledge on the part of the team.</li>
<li><strong>The team has a methodology for staying on track.</strong> Without getting into the comparative merits of individual development methodologies, the main point is that the team has a way to prioritize, track progress, and correct problems early on.  A team that can&#8217;t tell that it&#8217;s off-course can&#8217;t correct.</li>
<li><strong>The team can effectively communicate to management, and vice-versa.</strong> The cliche is that management understands different levels of priority for requirements, but sees all cost of implementation as equal.  Developers see different costs of implementation, but imagine all requirements to be equally important.  Neither is true, of course, and there needs to be an effective channel for technical and business stakeholders to properly communicate with each other.  A Tech Lead can be an effective method here.</li>
</ul>
<p>Note that none of this discusses the individual experience or quality of the members of the team.  This is structural.  Process and management &#8211; all about getting people to speak with each other, and work well together.</p>
<p>Again 1 point for each &#8220;yes&#8221; answer for your team, just like in part one.</p>
<p style="padding-left: 30px;"><strong>5 points: A.</strong> Your team knows each other, the client and the means to success like the back of their hand.  You&#8217;ve probably already made the mistakes you are going to make, so you can count on solid execution from people.</p>
<p style="padding-left: 30px;"><strong>4 points: B.</strong> Still solid.  B is as good as a team can get with a new client (and at least in agency work new clients are frequent).  B is structurally still a good risk, but can occasionally throw up a surprise or two.</p>
<p style="padding-left: 30px;"><strong>3 points: C.</strong> Medium risk.  At this level there is at least some degree of immaturity in the team &#8211; it may reflect new hires, or the creation of a new team where there wasn&#8217;t one before.  The team is still working out the kinks in their process.</p>
<p style="padding-left: 30px;"><strong>2 points: D.</strong> This is an immature team.  There are enough unknowns going on at this level that the team can easily trip over itself, adding significant risk to a project.  Watch out.</p>
<p style="padding-left: 30px;"><strong>1 and below: F.</strong> The team is not ready for this project.  The structural problems will create a significant negative impact on the project, probably leading to some level of failure.</p>
<p><em><strong>To be concluded in part 3, where we&#8217;ll look at qualitative risk, and how to combine all the risk factors together into a single model.</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://antipatter.com/2009/08/modeling-risk-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modeling Risk</title>
		<link>http://antipatter.com/2009/07/modeling-risk/</link>
		<comments>http://antipatter.com/2009/07/modeling-risk/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 20:50:23 +0000</pubDate>
		<dc:creator>loren</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web agency]]></category>
		<category><![CDATA[clients]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://antipatter.com/?p=241</guid>
		<description><![CDATA[Why do some software / web projects run off the rails so badly?  Are we just incompetent?  Is it that the very practice of programming is so incredibly difficult that it defies any attempt to manage it?  Perhaps software development is just an inherently terrible idea, and we should leave it up to Microsoft to [...]]]></description>
			<content:encoded><![CDATA[<p>Why do some software / web projects run off the rails so badly?  Are we just incompetent?  Is it that the very practice of programming is so incredibly difficult that it defies any attempt to manage it?  Perhaps software development is just an inherently terrible idea, and we should leave it up to Microsoft to handle, and focus on other things, such as selecting the best clip-art for our PowerPoint slides.</p>
<p>Okay, no one buys that exactly, but there is a certain amount of seeming randomness in software or web development that makes developers and managers both very, very nervous when entering new endeavors.  Everyone knows from past experience that even with the best of intentions, things seem to occasionally go terribly wrong.</p>
<p>I&#8217;d like to suggest that things happen for a reason, however.  In the case of software development projects, there are specific patterns and phenomena that drive projects towards success or failure, and that learning to recognize those patterns can lead one to manage them much better.</p>
<p>In fact I would take that one step further, and say that these patterns can actually be modeled, and together form a bit of a magic 8-ball on what&#8217;s likely to happen with the project.</p>
<h3>Clients</h3>
<p>Many software development projects have clients involved, and for many of them the problems start right there.  Clients present an extremely powerful influence over projects, because if they are not happy, there is no business.  Clients do not always act in their own best interests however, or the best interests for the project.  Therein lies the rub.</p>
<p>I&#8217;ve identified a specific set of criteria that identifies good clients.  Clients with these attributes are good, those without them are bad.  Howe much risk a client brings to a project depends on how many items on this list they rate.</p>
<ul>
<li><strong>Strong decision maker:</strong> Is there someone (much preferably an individual person) who can make decisions in the client organization?  Or is there a distributed set of stakeholders, all with different agendas, values and visions about what the product should be?</li>
<li><strong>Reasonably Insensitive to Price:</strong> Does the client appreciate the value of what they&#8217;re getting?  Or do they just want to slash, slash, slash prices and get the cheapest possible version of their site?  Do they argue over every last nickle and dime?</li>
<li><strong>Technology Agnostic:</strong> Tech matters.  Anyone who says differently is ignorant or lying.  The choices of hosting, frameworks, platforms, products etc all compound and add or remove risk from the project.  Good clients are ones that allow and encourage the best tools for the jobs to be used.  Bad clients come in the door with corporate technology mandates that have nothing to do with the specific interests of the project.</li>
<li><strong>On a Reasonable Deadline, but Flexible on Scope:</strong> Projects need schedules in order to happen, but the uncertainty baked into programming demands that something in the classic project management triangle flex, and the best thing to flex is scope.  When there is a clearly prioritized set of features on the table, the upcoming release may or may not have certain features, or they may be implemented at a number of different levels of complexity.  Hard features of limited business or user value should be jettisoned.</li>
<li><strong>Savvy:</strong> Good clients know their own business, the Internet and so forth.  Clients that require teaching on every last point that intersects the project slows things down, and opens the door for them to make bad decisions.  A client that is reasonably well educated on their space and how it relates to the project will be much less off than others.</li>
</ul>
<h5>Grading</h5>
<p>For your client, award 1 point for each of the above criteria.</p>
<p style="padding-left: 30px;"><strong>5 points: A.</strong> Run, don&#8217;t walk and get this client&#8217;s business.  They are extremely rare and can be the basis of an excellent partnership in which you can do great things.</p>
<p style="padding-left: 30px;"><strong>4 points: B.</strong> A good, run of the mill client.  Will occasionally do something bothersome, but well within the parameters of something that can be managed for success.</p>
<p style="padding-left: 30px;"><strong>3 points: C.</strong> Fair.  This is starting to get into the range where client risk can adversely affect the project.  If it is combined from risk from other factors, failure can occur.  Nonetheless it is possible to succeed with a C client.</p>
<p style="padding-left: 30px;"><strong>2 points: D.</strong> Not good.  This is a high-risk client, and this kind of work should only be taken on if painstaking steps are taken to protect the team from bad influences and decisions made by the client.  A large amount of time will be spent on keeping this client under control, and preventing them from damaging the project.  It better be worth it.</p>
<p style="padding-left: 30px;"><strong>1 and below: F.</strong> This client brings disaster with them.  It is almost impossible to succeed with this kind of client, and it usually isn&#8217;t worth it.  They will be a never-ending source of problems, and will compel bad decisions that will most likely derail the project.  Avoid.</p>
<p><em><strong>Continued in part 2, when we&#8217;ll look at some of the other risk factors that bear on a project.</strong></em></p>
<p>UPDATE: Okay, so I <a href="http://antipatter.com/2008/08/how-to-work-with-web-agencies/">covered some of this before,</a> but this is part of the model, so its sort of from the opposite tack.</p>
]]></content:encoded>
			<wfw:commentRss>http://antipatter.com/2009/07/modeling-risk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problems, Salesmen and Engineers</title>
		<link>http://antipatter.com/2008/09/problems-salesmen-and-engineers/</link>
		<comments>http://antipatter.com/2008/09/problems-salesmen-and-engineers/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 02:14:31 +0000</pubDate>
		<dc:creator>loren</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web agency]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[psychology]]></category>
		<category><![CDATA[sales]]></category>

		<guid isPermaLink="false">http://antipatter.com/?p=207</guid>
		<description><![CDATA[Remember this old joke? A mathematician sits on a park bench next to a pretty girl.  He wants to move closer but is struck by the helplessness of the situation: he&#8217;ll move half the distance, then half of the remaining distance, then half of that, and so on and so on &#8211; but will never [...]]]></description>
			<content:encoded><![CDATA[<p>Remember this old joke?</p>
<blockquote><p>A mathematician sits on a park bench next to a pretty girl.  He wants to move closer but is struck by the helplessness of the situation: he&#8217;ll move half the distance, then half of the remaining distance, then half of that, and so on and so on &#8211; but will never actually reach the girl because the remaining distance can always be halved.</p>
<p>Later an engineer finds themselves in the same position.  Like the mathematician, he knows its impossible to actually reach the girl, but he realizes he can get close enough for all practical purposes.</p></blockquote>
<p>(Okay, it is, and has always been, a dumb joke.  But it&#8217;s about how engineers think, and that&#8217;s what I want to talk about.)</p>
<p>Engineers solve problems.  In order to solve problems, they need to identify them.  They need to get down in the detailed muck of whatever it is at hand so they can see how things work and find a solution.  This is called &#8220;getting your hands dirty&#8221;.</p>
<p>Most people are afraid of problems.  Problems make them feel like victims &#8211; helpless to control their fate.  They&#8217;re used to problems making life worse for them, without any available solutions.</p>
<p>Engineers, on the other hand, relish the thought of new problems.  After all, they&#8217;re used to having problems fall before their mental prowess &#8211; sliced into bits by [[Occam's_Razor | Occam's Razor]].  The existence of problems is enjoyable to an engineer: it gives them something to do.  To most, however, the existence of problems is upsetting.</p>
<p>And that brings us to salespeople.  Salespeople identify problems that upset people, and they sell solutions to those problems.  (And since this is a web agency post, by &#8220;solutions&#8221; I mean &#8220;websites&#8221;).  In theory, people will feel better because their problems have now been solved. The salesperson also feels better because they now have money.</p>
<p>Now what salespeople <strong>don&#8217;t</strong> want to do is dwell on the problem..  They want to talk about the solution.  No problems should escape the solution.  The solution leads to the sale.  Focus on the solution.  Always Be Closing.  Dwelling on problems creates doubt in the mind of non-engineers, and doubt screws up closing the deal.</p>
<p>So, ultimately, the salesperson wants to play down any problems that are not solved by signing the deal, whereas the engineer wants to dwell on them in detail.  Disconnect.</p>
<p>Weird things can start to happen when you bring an engineer into a sales situation; something that is occasionally necessary.  In the web agency world, the art of deal making is that<strong> the sale is made long before it&#8217;s clear what is being sold</strong>.  For <em>n</em> dollars, <em>something</em> will be built that will do something on the lines of solving these business problems.  Sort of.  Give or take.</p>
<p>This is totally backwards to the engineer, who, in their problem solving mindset, wants to be given a problem to solve.  A set of metrics for success.  A clearly defined goal.  But that&#8217;s not the way agencies work.  First you pay, later you find out what you get.</p>
<p>In order to close the deal, the salesperson needs to keep out of the details, and basically imply that the website will do everything that the client wants, but without <em>actually</em> promising anything specific.  The danger to the salesperson is that the engineer, being detail conscious, will screw this up.</p>
<p>The danger for the engineer is that the salesperson might sell something that simply can&#8217;t be delivered for the specified budget.  Or perhaps commits the engineering team to a ridiculous technical constraint that adds so much risk to the project, or is so onerous, that what started as a simple project becomes a nightmare.</p>
<p>When an agency works well, there&#8217;s a kind of dance between sales and engineering, where sales gets deals done without being drawn down into the muck of engineering, but doesn&#8217;t create any deals too stupid for engineering to be able to deliver.</p>
<p>When sales and engineering don&#8217;t sufficiently trust or respect each other the dance breaks down.  Then sales closes deals that are impossible, and engineering bogs sales negotiations down in details that simply shouldn&#8217;t see the light of day until the ink dries on the contract.</p>
]]></content:encoded>
			<wfw:commentRss>http://antipatter.com/2008/09/problems-salesmen-and-engineers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Does it FIT?</title>
		<link>http://antipatter.com/2008/09/does-it-fit/</link>
		<comments>http://antipatter.com/2008/09/does-it-fit/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 00:42:04 +0000</pubDate>
		<dc:creator>loren</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[web agency]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[project managers]]></category>

		<guid isPermaLink="false">http://antipatter.com/?p=188</guid>
		<description><![CDATA[There has always been a fundamental impedance mismatch between business and technical folk.  They seem to be living in two different worlds, each with different rules of engagement.  In fact, this is because they have different values &#8211; different things that they care about. On the business side you have project managers, new business types [...]]]></description>
			<content:encoded><![CDATA[<p>There has always been a fundamental impedance mismatch between business and technical folk.  They seem to be living in two different worlds, each with different rules of engagement.  In fact, this is because they have different values &#8211; different things that they care about.</p>
<p>On the business side you have project managers, new business types (aka salespeople), and other bean counters.   These people basically care about money: making it and not losing it.  Making cool stuff is a fortunate side effect at best.</p>
<p>On the tech side you have developers and (in a way) [[User_experience|UX types]].  These people love solving problems.  Give them a problem, they want to solve it &#8211; preferably in the most awesome, beautiful and elegant way possible.  On a deep, soul searching, emotional level, they don&#8217;t give a flying crap about the money.</p>
<p>Funny things happen when members of these two groups speak with each other.  They describe things using the same words, but they mean fundamentally different things.</p>
<p>It&#8217;s very common for the business types in Group A to approach the problem solvers in Group B and ask them a question like &#8220;would it be possible to add some snazzle on the frozbot&#8221;?  At this point the problem solver gets a far-away look in their eyes and replies &#8220;yes, it&#8217;s possible&#8221;.</p>
<p>Hey, business types: the problem solvers are talking about something <em>entirely</em> differently than what you have in mind.  If you&#8217;ve just inferred from their response that you can squeeze that new feature into the project, you&#8217;re wrong.  At least potentially you&#8217;re wrong.  You actually don&#8217;t have any more information than when you started, because the problem solver&#8217;s answer actually contains <strong>no useful information to you whatsoever</strong>.</p>
<p>What you wanted to know was:</p>
<blockquote><p>&#8220;Can I get this extra feature into this project,  it in a way so that I continue to make money?&#8221;</p></blockquote>
<p>What they just really answered was:</p>
<blockquote><p>&#8220;Yes, with nigh infinite time, resources and money, this snazzle can be retrofitted onto the frozbot, in a fabulous dimension of mind over matter where this crappy project doesn&#8217;t exist&#8221;.</p></blockquote>
<p>Which, business person, was, of course, not your question.</p>
<p>You see, you thought the money part was <em>implied</em>.  And, to another business type, it would have been.  But as was noted above, the problem solver is not inferring that part.</p>
<p>So I propose you stop asking the question &#8220;Is It Possible&#8221; altogether.  It&#8217;s a useless question.  Instead, I suggest you ask &#8220;does it FIT&#8221;.</p>
<p>My new favorite acronym &#8211; FIT.  Feasible Inside Triangle.  The triangle being, of course, the classic project triangle of Scope, Schedule and Budget.  By including the triangle within the question, the problem solver has to take its constraints as part of the equation.</p>
<p>This is an adjustment at first, but they&#8217;ll get used to it.  The barre has been raised.  Business types can expect a lot more up-front pushback to &#8220;does it FIT&#8221; than &#8220;is it possible&#8221;.  A lot more &#8220;no way&#8221;s.  However this is better than the alternative, where people say &#8220;yes&#8221; and then a project disaster ensues.  FIT forces people to be realists.</p>
<p>This communication barrier between business and problem solver types is really dysfunctional, and has probably led to millions and millions of dollars of waste.  Let&#8217;s stop lying to ourselves about feasibility in projects, and keep our problem solving powers relevant to reality.</p>
]]></content:encoded>
			<wfw:commentRss>http://antipatter.com/2008/09/does-it-fit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stack &#8216;em Up</title>
		<link>http://antipatter.com/2008/08/stack-em-up/</link>
		<comments>http://antipatter.com/2008/08/stack-em-up/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 02:23:19 +0000</pubDate>
		<dc:creator>loren</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tech strategy]]></category>
		<category><![CDATA[web agency]]></category>
		<category><![CDATA[monoculture]]></category>
		<category><![CDATA[tech stack]]></category>

		<guid isPermaLink="false">http://antipatter.com/?p=133</guid>
		<description><![CDATA[It&#8217;s been a bit longer than I wanted between posts &#8211; side effect of coming off of a vacation and going directly into a new job.  Sorry.  I&#8217;ll try to be more consistent, moving forward. The idea of maintaining a single technology stack in a development shop is quite appealing.  If everyone knows the same [...]]]></description>
			<content:encoded><![CDATA[<p><em>It&#8217;s been a bit longer than I wanted between posts &#8211; side effect of coming off of a vacation and going directly into a new job.  Sorry.  I&#8217;ll try to be more consistent, moving forward.</em></p>
<p>The idea of maintaining a single technology stack in a development shop is quite appealing.  If everyone knows the same programming language (the thinking goes), the same web framework, the same RDBMS and so forth, then life would be better.  Business really likes this kind of thinking.  It promises efficiencies of scale, reduced training costs, and easily replaceable employees.  This kind of &#8220;one true technology&#8221; approach is the foundational philosophy of corporate darlings Java and .NET.    Once you have the organization standardized on the tech, it is promised, then every part will play nicely with every other part, critical dependencies (such as employees) will be reduced, and the whole &#8220;what are we doing about technology&#8221; question just goes away.</p>
<p>Now, of course I support operational efficiencies, reducing training costs (well, to an extent: I view training as an investment), and so forth, but I think that the idea of &#8220;one true stack&#8221;, especially in service-oriented tech shops like web agencies, is a pipe dream.  The advantages of standardizing an entire company on a single tech stack are outweighed by the disadvantages.</p>
<p>Before I get into that, however, I want to introduce the idea of a &#8220;jealous&#8221; technology.  A jealous technology tries to take over as many aspects of the stack as possible; mandating a specific component at each level.  Some technologies are more &#8220;jealous&#8221; than others.  Microsoft is notoriously jealous:  the Microsoft web framework, ASP.NET, really wants to be deployed on the Microsoft web server: IIS, on the Microsoft operating system: Windows, backed by the Microsoft RDBMS: SQL Server.  Other combinations (yes, I know about <a href="http://www.mono-project.com/Main_Page" target="_blank">Mono</a>) simply don&#8217;t work as well.  And, on the other hand, Windows is something of a second-class deployment platform for most other web technologies (ever try to deploy Rails on Windows&#8230;with IIS?  Yuck&#8230;)</p>
<p>Speaking of Ruby on Rails, they&#8217;ve become a bit of a jealous technology themselves.  Rails projects now prefer a particular JavaScript framework (Prototype), version control system (Git), editor (TextMate), build system (Capistrano) and development operating system (OS X).  (As well as, obviously, programming language: Ruby). While it&#8217;s certainly not as bad as the Microsoft scenario,  I do have to ask the question as to why the web framework has <em>any</em> influence over what version control system I use.  Do you have to use all the technologies that I&#8217;ve listed above with Rails?  No, of course not.  But they are <em>preferred</em>.  Things go better with <span style="text-decoration: line-through;">Coke</span> Capistrano.</p>
<p>The point is that some technologies are better suited towards certain problems than others, and <strong>a blanket organizational standardization on a single tech stack leads to a tremendous amount of wasted energy spent on driving square pegs into round holes</strong>.  Ruby is not a great foundation for an enterprise-class messaging framework.  Java is not a good choice for a lightweight CMS.  And anything other than .NET is a bad choice for an app destined to be maintained by a bunch of MSDN types.</p>
<p>In fact, I&#8217;d argue that <strong>the cost of operation efficiencies lost by maintaining multiple tech stacks is exceeded by the cost of jamming technologies into inappropriate use cases</strong>.  So, as messy as it sounds, any technical organization that is project or service based (as opposed to being exclusively product based) should maintain a strategic &#8220;quiver&#8221; of different technologies, so it can deploy the best choice when faced with a business problem.  Otherwise a fragile [[Monoculture_(computer_science) | monoculture]] is created, wasting a tremendous amount of developer effort, and adding artificial risk and expense to projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://antipatter.com/2008/08/stack-em-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Work Web Agencies</title>
		<link>http://antipatter.com/2008/08/how-to-work-with-web-agencies/</link>
		<comments>http://antipatter.com/2008/08/how-to-work-with-web-agencies/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 13:00:57 +0000</pubDate>
		<dc:creator>loren</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[web agency]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://antipatter.com/?p=95</guid>
		<description><![CDATA[I&#8217;ve performed postmortems on many, many web projects over the last couple of years, and over time I&#8217;ve seen certain patterns emerge; patterns that I now know push web projects towards success or failure.  While there are many reasons that projects succeed or fail that are entirely internal to web agencies, I have noticed that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve performed postmortems on many, many web projects over the last couple of years, and over time I&#8217;ve seen certain patterns emerge; patterns that I now know push web projects towards success or failure.  While there are many reasons that projects succeed or fail that are entirely internal to web agencies, I have noticed that <em><strong>the client themselves wields tremendous influence over the success or failure of a project</strong></em>.</p>
<p>Over time I have identified 5 factors that clients bring to the table, that directly affect the outcome of a web project.  These factors can accumulate and ultimately swing the fate of a project from success to failure or vice-versa.</p>
<p>Here they are:</p>
<h2>Don&#8217;t Be Overly Price Sensitive</h2>
<p>Guess what?  Agencies are expensive.  If you want to build a website on the cheap, you probably don&#8217;t want to deal with an agency, you want to keep the project in-house as much as possible, and outsource the rest to individual contractors.  Quality can suffer this way, because <strong>you</strong> are now the web project manager (and presumably you have something else to do), but it theoretically can be cheaper.  Trying to pinch pennies with an agency can cause compromises in the quality or scope of your project that can be hard to predict.</p>
<h2>Be Flexible on Features</h2>
<p>Clients who want to control every last feature can lose sight of the main goal: <strong>getting a working web site that meets their business goals launched</strong>. In my experience, the best projects are ones with strict deadlines, but with some flexibility in scope.  Over the course of production, hard decisions may need to be made about whether features should be included in the upcoming release.  Generally speaking, being flexible on features, but sticking to the established release schedule, is the right decision almost every time.</p>
<h2>Be Decisive</h2>
<p>Clients who are indecisive, or who have decision-by-committee issues, bring risk to web agency projects.  The best projects are ones where there is a single project owner on the client&#8217;s side, who is empowered to make decisions and grant approvals about the web site.  The ability to provide clear, timely feedback and direction to the web agency is essential.  On the other hand, a client that waffles, takes forever to make approvals, or sends mixed signals to the agency just makes everything harder.</p>
<h2>Trust and Defer</h2>
<p>Trust the web agency, they know the web, that&#8217;s what you&#8217;re paying them for.  If you don&#8217;t feel like you can trust them, then you shouldn&#8217;t hire them in the first place.  In order for an agency to operate efficiently, it needs a certain amount of autonomy and independence from the client.  Only then can it employ its internal best practices, and do the best job it can.  Micromanaging an agency actually removes value for the client.</p>
<h2>Be Savvy</h2>
<p>Understand the web.  Understand your own business.  Understand how web agencies work, if possible.  The more sophisticated you are, the better the project will run.  In the past I&#8217;ve known clients who have asked for web sites, who never actually use the Internet themselves.  How could they make informed decisions about their own web site, if they spend no time on the web?  By taking the time to educate yourself about the environment in which your project lives, you&#8217;ll be stacking the odds in your favor.</p>
<p>There it is &#8211; clients that get all of these items right are a pleasure to work with, and they tend to get fantastic results from the agencies they use.  At the other end of the scale, clients that come down on the wrong side of all of these points can create situations that can be difficult or impossible for agencies to rescue.  By mastering these factors as a client, you&#8217;ll be doing the most you can to ensure the success of your project.</p>
]]></content:encoded>
			<wfw:commentRss>http://antipatter.com/2008/08/how-to-work-with-web-agencies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not Your Father&#8217;s Beta</title>
		<link>http://antipatter.com/2008/07/not-your-fathers-beta/</link>
		<comments>http://antipatter.com/2008/07/not-your-fathers-beta/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 19:07:35 +0000</pubDate>
		<dc:creator>loren</dc:creator>
				<category><![CDATA[web agency]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[language]]></category>

		<guid isPermaLink="false">http://antipatter.com/?p=15</guid>
		<description><![CDATA[As I watched Django announce its 1.0 Alpha release, I experienced a vague sense of disorientation, which I suddenly realized was coming from the actual, correct use of the terms Alpha, Beta and Gold (or Final) by the Django project team.  You see, I work in the web industry, where those terms are generally just [...]]]></description>
			<content:encoded><![CDATA[<p>As I watched Django <a title="Django 1.0 Alpha" href="http://www.djangoproject.com/weblog/2008/jul/21/10-alpha/" target="_blank">announce its 1.0 Alpha release</a>, I experienced a vague sense of disorientation, which I suddenly realized was coming from the actual, correct use of the terms Alpha, Beta and Gold (or Final) by the Django project team.  You see, I work in the web industry, where those terms are generally just abused.</p>
<p>The proper use of the Alpha and Beta terminology are to describe early pre-releases of software, for the purpose of making the software available for late-stage acceptance testing.  Alpha and Beta software is, by definition, not ready for prime time.</p>
<p>Of course, this very concept is all rooted in pre-Internet shrink-wrapped software.  The Gold master was a CD, (or a cassette tape etc) that was physically shipped out.  It was critical to get the app into a stable state, because once it shipped it would be expensive to patch it.</p>
<p>With websites, the code that runs them is <em>updated all the time</em>.  I can pretty much guarantee that with any major website you frequent, the code that&#8217;s running it this month is slightly different from what was running it last month.  Or yesterday, for that matter.  The entire concept of releases is somewhat nebulous on the web.</p>
<p>But the business world thinks that software terminology is cool.  So we&#8217;ve labeled every web 2.0 website &#8220;Beta&#8221;.  It&#8217;s pretty widely understood now that &#8220;Beta&#8221; means &#8220;don&#8217;t blame us too hard if there&#8217;s bugs&#8221;.</p>
<p>In the agency world, there&#8217;s an even more shadowy use of these greek letters.  It has become a kind of psychological trick used to get clients to focus on only essential features.  It goes something like this:</p>
<p><strong>Client</strong>:  I want a website with 8 million features of dubious value.  And a pony.<strong><br />
Vendor</strong>: Okay, okay.  We&#8217;ll get you that pony.  But let&#8217;s get the real core stuff out the door first.<strong><br />
Client</strong>: I want a pony!<strong><br />
Vendor</strong>: Okay, well how about we release Alpha this year with the core features, then Beta the year after that.  <em>Then</em>, we can focus on getting that pony for you in the 1.0 release, in two years.<strong><br />
Client</strong>: Well, okay.  As long as I get a pony for 1.0, then.</p>
<p>In a sane universe, these would simply be considered different releases: 1.0, 2.0 and 3.0.  But that doesn&#8217;t score the proper political points.  All that stuff that the client read about in Wired magazine <em>has</em> to make it into 1.0 in their minds, so the agency responds by re-defining what 1.0 means.  And that means abusing the Alpha and Beta terms.</p>
]]></content:encoded>
			<wfw:commentRss>http://antipatter.com/2008/07/not-your-fathers-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
