<?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>Pivotal Labs &#187; Rasheed Abdul-Aziz</title>
	<atom:link href="http://pivotallabs.com/author/rabdulaziz/feed/" rel="self" type="application/rss+xml" />
	<link>http://pivotallabs.com</link>
	<description>Agility Developed</description>
	<lastBuildDate>Wed, 22 May 2013 22:49:44 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Being a Pivot.</title>
		<link>http://pivotallabs.com/being-a-pivot/</link>
		<comments>http://pivotallabs.com/being-a-pivot/#comments</comments>
		<pubDate>Mon, 11 Mar 2013 13:10:38 +0000</pubDate>
		<dc:creator>Rasheed Abdul-Aziz</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/?p=15931</guid>
		<description><![CDATA[<p>I get up in the morning, do the usual ablutions, kiss my wife and daughter, who are often still in bed, and drag myself through the crowded subway system of New York to Pivotal Labs&#8217; offices. I&#8217;m usually early, so the people in before me are those that make the journey from &#8220;Noo Joisey&#8221;, bless their hearts. I&#8217;ll sit and talk, or I&#8217;ll open my MBP and work on personal stuff, like blogging. Breakfast is made by one of our lovely kitchen staff. Im a fan of the eggs and sausages, but there&#8217;s also fresh fruit, oatmeal, cake, pancakes&#8230; All sorts of things. At five past nine, a gong sounds and we all gather quickly for a company stand up. Any newsworthy discoveries are raised, any questions that need answering are asked, all the events are listed. We clap in unison and disperse. Many of us huddle around the espresso machine getting&#8230;</p><p>The post <a href="http://pivotallabs.com/being-a-pivot/">Being a Pivot.</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I get up in the morning, do the usual ablutions, kiss my wife and daughter, who are often still in bed, and drag myself through the crowded subway system of New York to Pivotal Labs&#8217; offices.</p>
<p>I&#8217;m usually early, so the people in before me are those that make the journey from &#8220;Noo Joisey&#8221;, bless their hearts. I&#8217;ll sit and talk, or I&#8217;ll open my MBP and work on personal stuff, like blogging.</p>
<p>Breakfast is made by one of our lovely kitchen staff. Im a fan of the eggs and sausages, but there&#8217;s also fresh fruit, oatmeal, cake, pancakes&#8230; All sorts of things.</p>
<p>At five past nine, a gong sounds and we all gather quickly for a company stand up. Any newsworthy discoveries are raised, any questions that need answering are asked, all the events are listed. We clap in unison and disperse. Many of us huddle around the espresso machine getting another jolt into us before our team standups.</p>
<p>This is a pretty relaxed way to start the day.</p>
<p>The rest of the day is spent pairing with other developers, 100%, and the support this gives you is tremendous. I know a few people who dont like it, but even they see the value in it. The rest of us love it, and often find it frustrating when we&#8217;re forced to solo.</p>
<p>We (the pair) look at the most important story the product manager has identified, and we discuss how to best implement it. We go to the product team, who are all nearby, with any questions we might have.</p>
<p>We implement our code with diligence. Diligent about quality, diligent about design, diligent not to overwork the solution (lest we don&#8217;t end up needing the code). Some pairs are great at forcing you to stay true to the red-green-refactor, outside-in philosophy. Others are strong on &#8216;YAGNI&#8217;. Everyone brings something to the table, and everyone can trust that their colleagues are providing value.</p>
<p>Its rare to think &#8220;I will _so_ need to check his code&#8221; or &#8220;What fool did this thing?!&#8221;. If you ask someone about their implementation choices, they can give you good solid reasoning for them.</p>
<p>Working in pairs is intense. A suitable term is &#8216;compression&#8217; &#8211; we stop and play a game of ping-pong or just take 5 minutes out to &#8216;decompress&#8217;. It&#8217;s exhausting but liberating. Typically, the only thing that you spend your energy on is creating good product. You dont often waste energy on &#8220;he said, she said&#8221; or worrying out about pointless feature development and unrealistic deadlines.</p>
<p>Edit: Forgot to mention, I don&#8217;t get asked to do overtime, and I get to see my family at a reasonable time every night.</p>
<p>Honestly, if you need a break from the insanity. Come and work for Pivotal.</p>
<p>The post <a href="http://pivotallabs.com/being-a-pivot/">Being a Pivot.</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/being-a-pivot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Broken permalinks and narrative, the pitfalls of moving content.</title>
		<link>http://pivotallabs.com/broken-permalinks-and-narrative/</link>
		<comments>http://pivotallabs.com/broken-permalinks-and-narrative/#comments</comments>
		<pubDate>Wed, 20 Feb 2013 17:06:57 +0000</pubDate>
		<dc:creator>Rasheed Abdul-Aziz</dc:creator>
				<category><![CDATA[Labs]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/?p=15431</guid>
		<description><![CDATA[<p>Lately I&#8217;ve been thinking about the risks associated with: moving content refactoring domain terms within content. I&#8217;ve identified the key areas of risk as narrative and permalinks. Narrative The narrative of your site/app can break in subtle and unexpected ways. It is difficult to guard against side-effects upon the narrative. This makes changes to domain terms high-risk. Specifically, a developer focused on the code can easily miss these side effects. Here&#8217;s an obvious, and well guarded story: Given I am a user When I visit the user's profile Then I see their latest activity That one&#8217;s simple, if you move the latest activity to a sub-nav, this story will break (that&#8217;s a good thing). In this case, you could ask the product owner, &#8220;In the past, having a user&#8217;s activity visible on their profile page was desirable. Are you sure you want to lose that?&#8221;. However not all narrative is this&#8230;</p><p>The post <a href="http://pivotallabs.com/broken-permalinks-and-narrative/">Broken permalinks and narrative, the pitfalls of moving content.</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Lately I&#8217;ve been thinking about the risks associated with:</p>
<ul>
<li>moving content</li>
<li>refactoring domain terms within content.</li>
</ul>
<p>I&#8217;ve identified the key areas of risk as <em>narrative</em> and <em>permalinks</em>.</p>
<h2>Narrative</h2>
<p>The narrative of your site/app can break in subtle and unexpected ways. It is difficult to guard against side-effects upon the narrative. This makes changes to domain terms high-risk. Specifically, a developer focused on the code can easily miss these side effects.</p>
<p>Here&#8217;s an obvious, and well guarded story:</p>
<pre>Given I am a user
When I visit the user's profile
Then I see their latest activity</pre>
<p>That one&#8217;s simple, if you move the latest activity to a sub-nav, this story will break (that&#8217;s a good thing). In this case, you could ask the product owner, &#8220;In the past, having a user&#8217;s activity visible on their profile page was desirable. Are you sure you want to lose that?&#8221;.</p>
<p>However not all narrative is this cut and dry. Consider this story:</p>
<pre>As a user
When I visit a member's profile
I can see a list of pages the member is interested in.</pre>
<p>Then, along comes a new unit of work, &#8220;Rename all pages to interests&#8221;. This seems reasonable, and so you finish the story. The test for the &#8216;pages&#8217; the member is interested in continues to work, however the member profile ought to lose any reference to &#8216;pages&#8217;. The new domain term &#8216;interests&#8217; should be used instead.</p>
<p>Now your tests are using misleading or confusing language. You need to update <strong>all</strong> your stories to use the new term. This can get onerous quickly, but it&#8217;s vital for consistency.</p>
<p>I&#8217;m yet to find a satisfying technique for mitigating this risk. It&#8217;s hard enough keeping the modelling clear of inconsistencies.</p>
<p>This same change to narrative also affects &#8216;curators&#8217; of &#8216;pages&#8217;. They no longer curate &#8216;pages&#8217;, they now provide &#8216;interests&#8217;. Do we want the curators to go through this mental hurdle, or the strangeness of &#8216;managing an interest&#8217; versus &#8216;my interests&#8217;? Suddenly a curator has a list of &#8216;interests which they maintain&#8217; and a list of things they are &#8216;interested in&#8217;.</p>
<p>The best way to mitigate the &#8216;broken narrative&#8217; risk is to stay strong on short, testable stories. Fast turnaround between development and acceptance is also valuable. The fast feedback cycle is less overwhelming for both developer and product. The chance to think about risks is stronger when the story is as uncomplicated as possible.</p>
<p>The risk of broken narrative is just another reason to avoid this internal desire to take &#8216;big bites&#8217;.</p>
<h2>Permalinks</h2>
<p>Permalinks and long lasting links, are any URLs for which permanence matters. E.g., the permalink to an article on your blog from some outside source. The risk of broken permalinks can be readily mitigated in your intrgration tests. To achieve this, you need to make sure that product is thinking actively about permalinking. Impart to the product owner that permalinks must be (as much as is possible) explicitly called out in stories.</p>
<h2>Permalinks in cucumber tests</h2>
<p>Here is an example.</p>
<p>A story in your backlog calls for content that must be available in a permalink. You write a scenario like this:</p>
<pre>Given I am a visitor
And there is an article
When I click on a permalink for the article
Then I should see the article</pre>
<p>The important term in this story is &#8216;permalink&#8217; &#8211; whenever a step definition calls for a permalink, it needs to use a constructed link:</p>
<pre>visit ('/articles/#(article.slug}')</pre>
<p>Do not use Rail&#8217;s (or your framework of choice) magic:</p>
<pre>visit(article_url(article)) # won't capture intent</pre>
<p>This way, if the permalink goes away, the test fails, and the intent is clearly captured.</p>
<h1> The many unseen dependencies</h1>
<p>To complicate matters, a moderately complex site usually has a swathe of references to the content you are about to move/refactor. The term is often used in abundance, E.g. &#8216;Post&#8217; or &#8216;Job&#8217; or &#8216;Activity&#8217;. The page might be accessed from several places, E.g. messages are available from the &#8216;User -&gt; Messages&#8217; nav item, the &#8216;&#8221;My Favorite Lolcats&#8221; group messages&#8217; page etc..</p>
<h2>Key take-aways:</h2>
<ul>
<li>Fast feedback loops. (small testable and deliverable chunks of work)</li>
<li>Oodles (lots) of product owner/ux designer/copywriter/developer collaboration.</li>
<li>Changes in domain terms need to be kept consistent throughout your tests.</li>
</ul>
<p>The post <a href="http://pivotallabs.com/broken-permalinks-and-narrative/">Broken permalinks and narrative, the pitfalls of moving content.</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/broken-permalinks-and-narrative/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[NY] Thursday Standup</title>
		<link>http://pivotallabs.com/thursday-standup/</link>
		<comments>http://pivotallabs.com/thursday-standup/#comments</comments>
		<pubDate>Thu, 14 Feb 2013 15:28:41 +0000</pubDate>
		<dc:creator>Rasheed Abdul-Aziz</dc:creator>
				<category><![CDATA[Standup]]></category>
		<category><![CDATA[ny]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/?p=15148</guid>
		<description><![CDATA[<p>Interestings Tenderlove explains YAML exploits Tenderlove explains YAML exploits in great detail, and with his usual panache http://tenderlovemaking.com/2013/02/06/yaml-f7u12.html</p><p>The post <a href="http://pivotallabs.com/thursday-standup/">[NY] Thursday Standup</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<h2>Interestings</h2>
<h3>Tenderlove explains YAML exploits</h3>
<p>Tenderlove explains YAML exploits in great detail, and with his usual panache</p>
<p><a href="http://tenderlovemaking.com/2013/02/06/yaml-f7u12.html">http://tenderlovemaking.com/2013/02/06/yaml-f7u12.html</a></p>
<p>The post <a href="http://pivotallabs.com/thursday-standup/">[NY] Thursday Standup</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/thursday-standup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Being Brave is fun.</title>
		<link>http://pivotallabs.com/being-brave-is-fun/</link>
		<comments>http://pivotallabs.com/being-brave-is-fun/#comments</comments>
		<pubDate>Sun, 20 Jan 2013 04:37:06 +0000</pubDate>
		<dc:creator>Rasheed Abdul-Aziz</dc:creator>
				<category><![CDATA[Labs]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[minispec]]></category>
		<category><![CDATA[programming practices]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/?p=11794</guid>
		<description><![CDATA[<p>You know how tech is. If you don&#8217;t stop and look around every, oh, hour or so, a brand new, very interesting technology has surfaced. If that is not bad enough, old technologies get reinvigorated, like people taking up Vi, Lisp, NeXt&#8230; :) So if you&#8217;re like me, are &#8216;time poor&#8217; and want to get something valuable out of your precious personal-project time, then be brave. Today I started on a small gem, to help people track what&#8217;s taking a lot of time in their Rails boot process. I needed to test. I use RSpec at work, yet I fell back to my default, minitest, because it comes for free with Ruby and is pretty straight forward for small work. I noticed, for the first time, that minitest has a BDD style syntax. Feeling brave, I used it. I&#8217;m glad I did. It will confuse me when I switch context&#8230;</p><p>The post <a href="http://pivotallabs.com/being-brave-is-fun/">Being Brave is fun.</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>You know how tech is. If you don&#8217;t stop and look around every, oh, hour or so, a brand new, very interesting technology has surfaced.</p>
<p>If that is not bad enough, old technologies get reinvigorated, like people taking up Vi, Lisp, NeXt&#8230; :)</p>
<p>So if you&#8217;re like me, are &#8216;time poor&#8217; and want to get something valuable out of your precious personal-project time, then be brave.</p>
<p>Today I started on a small gem, to help people track what&#8217;s taking a lot of time in their Rails <span id="more-11794"></span>boot process. I needed to test. I use RSpec at work, yet I fell back to my default, minitest, because it comes for free with Ruby and is pretty straight forward for small work. I noticed, for the first time, that minitest has a BDD style syntax. Feeling brave, I used it.</p>
<p>I&#8217;m glad I did.</p>
<p>It will confuse me when I switch context back to work, then back to the gem. Nevertheless, I enjoyed using something so simple but slightly nicer to type, read and comprehend than:</p>
<pre>def test_it_wants_to_have_lots_of_underscores
end</pre>
<p>You would think that using a bunch of differently named expectations would be annoying. It wasn&#8217;t. It stretched my mind in a short amount of time, which is more satisfying than the string of passing tests in my little personal-project.</p>
<p>The post <a href="http://pivotallabs.com/being-brave-is-fun/">Being Brave is fun.</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/being-brave-is-fun/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using apc
Database Caching using apc
Object Caching 638/687 objects using apc

 Served from: pivotallabs.com @ 2013-05-23 04:24:38 by W3 Total Cache -->