<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>FrameThink</title>
	<atom:link href="http://framethink.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://framethink.wordpress.com</link>
	<description>Frameworks for Thinking People</description>
	<lastBuildDate>Wed, 12 Jun 2013 15:43:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='framethink.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>FrameThink</title>
		<link>http://framethink.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://framethink.wordpress.com/osd.xml" title="FrameThink" />
	<atom:link rel='hub' href='http://framethink.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Android is for Work, iOS is for Play</title>
		<link>http://framethink.wordpress.com/2013/03/09/android-is-for-work-ios-is-for-play/</link>
		<comments>http://framethink.wordpress.com/2013/03/09/android-is-for-work-ios-is-for-play/#comments</comments>
		<pubDate>Sat, 09 Mar 2013 00:35:22 +0000</pubDate>
		<dc:creator>yeeguy</dc:creator>
				<category><![CDATA[personal tech]]></category>

		<guid isPermaLink="false">http://framethink.wordpress.com/?p=400</guid>
		<description><![CDATA[I&#8217;ve been using a Nexus S (now updated to Android Jellybean 4.2.2) and an iPhone 5 (now at iOS 6.1.2) on a daily basis for a couple months now.  Much has been written comparing Android and iOS already, so I&#8217;m just adding my anecdotal experience to the wood pile.  I&#8217;ve found myself increasingly thinking of [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=400&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been using a Nexus S (now updated to Android Jellybean 4.2.2) and an iPhone 5 (now at iOS 6.1.2) on a daily basis for a couple months now.  Much has been written comparing Android and iOS already, so I&#8217;m just adding my anecdotal experience to the wood pile.  I&#8217;ve found myself increasingly thinking of the Nexus S as a &#8220;work&#8221; device and the iPhone as a &#8220;play&#8221; device.  Here&#8217;s why:</p>
<h2>Android for Work</h2>
<ul>
<li>Google integration &#8212; I rely on Google apps like Gmail, Google Calendar, and Google Drive extensively, both personally and for work.  It&#8217;s super easy to sign into an Android phone with multiple Google accounts.  Once signed in, all email, calendar events, contacts, and docs associated with your Google accounts immediately become available on the phone.</li>
<li>Voice dictation &#8212; Google-powered voice dictation is incredible.  I find myself often dictating entire emails now &#8212; it&#8217;s so much faster than thumb-typing on the phone!</li>
<li>Swiping keyboard &#8212; the swiping keyboard that&#8217;s built into the latest versions of Android is much more accurate (and fun to use!) than the regular touch keypad.  I discovered it accidentally when one of my fingers slipped across the regular keyboard once and haven&#8217;t gone back ever since.  Between swiping and voice dictation, the Nexus S has become my preferred mobile device for text-entry while on the go.</li>
<li>Google Now &#8212; a question I wonder nearly every morning is: &#8220;should I take 101 or 280?&#8221; to commute to work.  Google Now proactively figured out my commute routes and now one of the notifications at the top of the Nexus S every morning is an alert from Google Now that tells me which is the best route to take this particular morning.  I love that.  It&#8217;s magical and useful to have my mobile phone smartly offer assistance.</li>
<li>Portable wifi hotspot &#8212; the Nexus S&#8217;es built-in portable wifi hotspot turns on really quickly and has been a more reliable connection for me than the iPhone&#8217;s wifi tethering.  I&#8217;ve been using both devices on AT&amp;T&#8217;s 4G network, tethered to a Macbook Air &#8212; the Nexus S would often provide hotspot connectivity in places where the iPhone would refuse to connect (for some reason, the iPhone refuses to allow tethering while in &#8220;4G&#8221; mode, not &#8220;LTE&#8221;).</li>
<li>Aggregated notifications &#8212; the way Android aggregates and displays email notifications in the &#8220;windowshade&#8221; is super useful.  I like being able to take action (like archiving an email) right from the windowshade.</li>
</ul>
<h2>iOS for Play</h2>
<ul>
<li>Camera and camera apps &#8212; the iPhone 5&#8242;s tap-to-shutter lag is barely noticeable and I think the native iOS camera app does a good job of handling light-metering by tapping on dark/light areas of the viewfinder.  The iPhone camera seems to take better photos and videos, in general, than the Nexus S.  Also, my favorite video and camera apps are all on iOS, too: Videokits, Facebook Camera, Manga Camera, Looker, Instagram, Snapseed, and Photosynth, etc.  I also really like the &#8220;swipe up&#8221; to go into camera mode</li>
<li>Shared Photostreams &#8212; my parents and in-laws have iOS devices and want to see the latest photos of their grandkids; what better way to share than with iOS&#8217;es built in Shared Photostreams?   I find that I share way more photos this way than I do through social-network sites&#8230;  I tend to pick and choose which photos to share on Facebook or Twitter because I don&#8217;t want to bombard online friends/followers with dozens of pics taken at, say, a kiddie birthday party.  But the grandparents are more than happy to receive all 50 photos in a Shared Photostream &#8212; they &#8220;like&#8221; every single one!  :-)</li>
<li>AirPlay &#8212; this is really the killer app of iOS for me: being able to AirPlay any content (whether it&#8217;s photos/videos from the camera roll, a YouTube video, a song from iTunes, or a Netflix movie) from the phone to a bigscreen TV.  The seamlessness of the experience is awesome.  I love how the iPhone has become an integral part of the living room experience.</li>
<li>Games &#8212; there are still just a ton more games and apps available in the iTunes App Store than on Google Play.  Most of the big titles from Rovio, Electronic Arts, or Zynga are available on both.  But many educational and kids games are still only on iTunes App Store.  That makes a critical difference on which device gets shared with kids on the couch.</li>
</ul>
<p>So, net-net I&#8217;m using the Android device more for day-to-day productivity and the iOS device more as a media and gaming device.  In a way, this actually lines up with Steve Jobs&#8217; reported focus on <a href="http://readwrite.com/2011/10/24/apple_living_room_hdtv_steve_jobs">taking over the living room</a>.  Both the iPhone 5 and Nexus S are beautiful devices with well-executed operating systems.  Looks like both Apple and Google are hitting their strides, respectively, though I doubt that they&#8217;d intended to segment the market for mobile OS&#8217;es by work vs. play&#8230;   Still it seems to have come out that way for me, personally!</p>
<p>Anyone else &#8220;dual-holstering&#8221; both and Android and iOS devices these days?  What are your thoughts?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/framethink.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/framethink.wordpress.com/400/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=400&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://framethink.wordpress.com/2013/03/09/android-is-for-work-ios-is-for-play/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a2136d837229ecb4fcc94c5f777862d8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yeeguy</media:title>
		</media:content>
	</item>
		<item>
		<title>Five Behaviors of Awesome Engineers</title>
		<link>http://framethink.wordpress.com/2013/02/25/five-behaviors-of-awesome-engineers/</link>
		<comments>http://framethink.wordpress.com/2013/02/25/five-behaviors-of-awesome-engineers/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 18:28:49 +0000</pubDate>
		<dc:creator>yeeguy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://framethink.wordpress.com/?p=173</guid>
		<description><![CDATA[I recently joined TaskRabbit as VP Engineering and the experience has reinforced lessons learned from prior startups about the importance of having a systematic way to recruit, retain and promote great engineers.  One way to help recruit, retain, and promote more effectively is to identify and define a consistent set of behaviors that the company expects [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=173&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I recently joined <a href="http://taskrabbit.com">TaskRabbit</a> as VP Engineering and the experience has reinforced lessons learned from prior startups about the importance of having a systematic way to recruit, retain and promote great engineers.  One way to help recruit, retain, and promote more effectively is to identify and define a consistent set of behaviors that the company expects of engineers.  I&#8217;m constantly amazed at how many companies fail to do this for their technical staff.  </p>
<p>When it comes to defining explicit objectives or desired actions, it seems like many companies take the time to specify those kinds of expectations for marketing, sales, or product management team members.  But when I ask engineers at other companies how they know if they&#8217;re doing a good job, I often hear answers like: &#8220;we&#8217;re generally supposed to kick ass and ship code&#8221; or &#8220;we just do what PM&#8217;s tell us to do.&#8221;  IMHO, having a group of prodigious coders or friendly team-players on the engineering staff is a good start, but not sufficient.  And leaving engineers with ambiguous or undefined company expectations borders on neglect! </p>
<p>I&#8217;d like to push more companies into defining clear, specific expectations for how they&#8217;ll assess engineers at all points in their career life-cycle &#8212; from being pitched as candidates, to being on-boarded as new hire, to getting rewarded as a high performer (or being counseled out).  Ideally, the way a hiring manager describes an engineering role to a recruit should match the role expectations that the company places on that engineer once they&#8217;re on board.  And the way promotions happen should further reinforce those behavioral expectations.</p>
<p>To give an example, here are the five behaviors that we expect all TaskRabbit Engineers to exhibit: </p>
<ol>
<li><span style="line-height:14px;"><strong><a href="http://www.quora.com/Organizational-Culture/What-are-some-of-the-best-quotes-youve-read-about-company-culture/answer/Yee-Lee">Culture</a> Fit</strong> &#8212; TaskRabbit is driven by a very lofty vision and company values.  We take those really seriously and folks don&#8217;t tend to stick around at the company if they don&#8217;t visibly buy into the vision and values; even if they&#8217;re brilliant at their particular functional role.</span></li>
<li><strong>Craftsman</strong> &#8212; We want engineers to really understand the underlying mechanisms that their code relies on.  The majority of TaskRabbit&#8217;s codebase is in the form of Ruby-on-Rails apps. Mature Rails developers will appreciate just how easy it is to get yourself into hot water by including gems without really understanding what dependencies those gems are creating under the hood&#8230;  Whenever we can&#8217;t find a gem that does exactly what we want, in the way we want, we take pride in developing our own gems and contributing them back to the Rails community, e.g., <a href="https://github.com/taskrabbit/makara">makara</a>, <a href="https://github.com/taskrabbit/storehouse">storehouse</a>, <a href="https://github.com/taskrabbit/sudojs">sudo.js</a>, <a href="https://github.com/taskrabbit">and more</a>. </li>
<li><strong>Goalie</strong> &#8212; We don&#8217;t have a QA team, so our Engineers are the first and only line of defense against bugs.  We expect engineers to write their own feature tests and bugfixes, to deploy code only after integration and acceptance testing, and generally to think a lot about how code might break.  That kind of goalie defense against bugs and regressions is an important part of an engineer&#8217;s job at TaskRabbit.</li>
<li><strong>MacGyver</strong> &#8212; Like the TV show character, given a tight set of timelines and resource constraints, we expect engineers to be able to successfully identify the minimum-viable development investment that will make a meaningful impact for users.  This is really another way to say: we solve the classic <a href="http://en.wikipedia.org/wiki/Project_management_triangle">Time-Quality-Features</a> tradeoff by de-scoping/decomposing features.  We explicitly are unwilling to compromise on time or quality (i.e., we deliver on a pre-set weekly sprint cycle and we hold the quality bar really high for ourselves).  So, within a given sprint, we always focus on paring down to the smallest possible unit of customer value.</li>
<li><strong>Coach</strong> &#8212; TaskRabbit&#8217;s initial web and iOS apps came out of consulting engagements with <a href="http://pivotallabs.com/">Pivotal Labs</a>, where we did a lot of pairing.  Coaching and mentoring each other has become an important part of our engineering practices and we really value people who are willing to actively teach their colleagues and learn from each other through 1-on-1 pairing as well as All-Hands meetings.  We specifically like to see engineers standing up in front of a crowd, talking about and demo&#8217;ing their work.</li>
</ol>
<p>Every new recruit hears about these five expectations so they can make an educated decision about what they&#8217;re getting into at TaskRabbit.  Our engineering team members talk to each other about their jobs using these terms.  And these five behaviors are baked into our self-assessment and peer-reviews. </p>
<p><strong>By enumerating these five desired behaviors and weaving them all through out TaskRabbit&#8217;s engineering practices, I&#8217;m trying to create a more consistent and reliable way to recruit, retain and promote an A+ team.</strong>  </p>
<p>Feel free to borrow these if they&#8217;re helpful&#8230;   YMMV, of course, with transplanting these expectations into your company&#8217;s particular culture.  But I think the most fundamental point is to put some thought into defining a consistent set of behavioral expectations for your technical staff.</p>
<p>Thoughts?  Comments?  Let me know!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/framethink.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/framethink.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=173&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://framethink.wordpress.com/2013/02/25/five-behaviors-of-awesome-engineers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a2136d837229ecb4fcc94c5f777862d8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yeeguy</media:title>
		</media:content>
	</item>
		<item>
		<title>Structured Approach to Event Blogging</title>
		<link>http://framethink.wordpress.com/2011/09/28/structured-approach-to-event-blogging/</link>
		<comments>http://framethink.wordpress.com/2011/09/28/structured-approach-to-event-blogging/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 18:41:20 +0000</pubDate>
		<dc:creator>yeeguy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://framethink.wordpress.com/?p=149</guid>
		<description><![CDATA[I like the &#8220;linkable assets model&#8221; in this SEJ post: http://www.searchenginejournal.com/effective-link-building-using-event-blogging/34104/ It&#8217;s a nice, structured way to think about how to get inbound links for your event blog (if you&#8217;re an event blogger and care about that kind of thing)  :-)<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=149&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I like the &#8220;linkable assets model&#8221; in this SEJ post: <a href="http://www.searchenginejournal.com/effective-link-building-using-event-blogging/34104/">http://www.searchenginejournal.com/effective-link-building-using-event-blogging/34104/</a></p>
<p><img class="alignnone" title="SeachEngineJournal's &quot;linkable asset model&quot;" src="https://lh4.googleusercontent.com/reSSCS8P84G2-ww29p6axk-bGcChcvDawzHxBJ4W-KoUZAQ6jirqWburm40DiXtUJZi-LJ9hnly19v5aIxIEfloV_a2wO0IQqufNWZGxfYVChrB1yIE" alt="SeachEngineJournal's &quot;linkable asset model&quot;" width="419" height="223" /></p>
<p>It&#8217;s a nice, structured way to think about how to get inbound links for your event blog (if you&#8217;re an event blogger and care about that kind of thing)  :-)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/framethink.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/framethink.wordpress.com/149/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=149&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://framethink.wordpress.com/2011/09/28/structured-approach-to-event-blogging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a2136d837229ecb4fcc94c5f777862d8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yeeguy</media:title>
		</media:content>

		<media:content url="https://lh4.googleusercontent.com/reSSCS8P84G2-ww29p6axk-bGcChcvDawzHxBJ4W-KoUZAQ6jirqWburm40DiXtUJZi-LJ9hnly19v5aIxIEfloV_a2wO0IQqufNWZGxfYVChrB1yIE" medium="image">
			<media:title type="html">SeachEngineJournal&#039;s &#34;linkable asset model&#34;</media:title>
		</media:content>
	</item>
		<item>
		<title>The Language of Social Networks</title>
		<link>http://framethink.wordpress.com/2011/09/26/the-language-of-social-networks/</link>
		<comments>http://framethink.wordpress.com/2011/09/26/the-language-of-social-networks/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 03:33:52 +0000</pubDate>
		<dc:creator>yeeguy</dc:creator>
				<category><![CDATA[business strategy]]></category>
		<category><![CDATA[consumer internet]]></category>
		<category><![CDATA[social apps]]></category>
		<category><![CDATA[social networks]]></category>
		<category><![CDATA[social psych]]></category>
		<category><![CDATA[george lakoff]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://framethink.wordpress.com/?p=128</guid>
		<description><![CDATA[Facebook and Mark Zuckerberg have established near monopoly control over the language that we use to talk about social networks.  Think about the words that we use to describe social network sites &#8212; terms such as &#8220;like&#8221;, &#8220;share&#8221;, &#8220;connect&#8221;, &#8220;transparent&#8221;, &#8220;more open&#8221;, etc.  I&#8217;m not saying that Facebook were the first company to use these [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=128&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Facebook and Mark Zuckerberg have established near monopoly control over the language that we use to talk about social networks.  Think about the words that we use to describe social network sites &#8212; terms such as &#8220;like&#8221;, &#8220;share&#8221;, &#8220;connect&#8221;, &#8220;transparent&#8221;, &#8220;more open&#8221;, etc.  I&#8217;m not saying that Facebook were the first company to use these terms and they certainly didn&#8217;t invent them.  But I do believe that Facebook have been the most effective and the most consistent at using those words to frame the conversation about social network policies and features in moral terms.</p>
<p>The moral framework they&#8217;re creating around their social network site is really key to focus on.  Facebook are saying: It&#8217;s *good* to be liked, right?  It&#8217;s *good* to connect to more people, right?  You&#8217;re a *better* person if you&#8217;re willing to share more transparently, right?  And, conversely, if you&#8217;re *not* willing to share a thought or action openly, then what are you hiding; are you doing something that you *shouldn&#8217;t* be doing?</p>
<p>Facebook have purposefully created this moral linguistic context for their service.  As Zuckerberg masterfully puts it:</p>
<blockquote><address>At Facebook we have a deeply held purpose [...] Our mission: “Give people the power to share and make the world more open and connected.” In the world we’re building where the world is more transparent, it becomes good for people to be good to each other. That’s really important as we try to solve some of the world’s problems.</address>
<p>Source: <a href="http://www.insidefacebook.com/2008/07/23/live-notes-from-mark-zuckerbergs-keynote-at-f8-developer-conference/">http://www.insidefacebook.com/2008/07/23/live-notes-from-mark-zuckerbergs-keynote-at-f8-developer-conference/</a></p></blockquote>
<p><a title="George Lakoff, Don't Think of an Elephant" href="http://www.amazon.com/Dont-Think-Elephant-Debate-Progressives/dp/1931498717">George Lakoff, professor of linguistics and cognitive science</a> tells us that, in any debate, if one side manages to dominate the moral framing of the issues, then they&#8217;ve already won the debate before it even begins.  Facebook appear to have learned Lakoff&#8217;s lessons well.  By framing the debate about social network policies and features in their own moral terms, Facebook could be walking away with victorious dominance over the social internet without firing a shot!  Every other social internet company has been forced to define themselves using Facebook&#8217;s terminology of &#8220;sharing&#8221;, &#8220;openness&#8221; and &#8220;social graphs&#8221; (i.e., attempting to beat Facebook at their own game) or to contrast themselves against Facebook&#8217;s feature functionality (i.e., attempting to convince the world that sharing, openness, and transparency are bad things).  It&#8217;s a lose-lose proposition either way and that makes it really hard for other companies to market and differentiate themselves using the language and concepts that Facebook own.</p>
<p>What are your thoughts on how the social network industry should move forward from here?  I&#8217;ll jot down some thoughts in my next blog post.  Would love to hear your thoughts in the meantime.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/framethink.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/framethink.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=128&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://framethink.wordpress.com/2011/09/26/the-language-of-social-networks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a2136d837229ecb4fcc94c5f777862d8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yeeguy</media:title>
		</media:content>
	</item>
		<item>
		<title>Crafting Code Across the Stack: 3 Benefits of Cross-Technology Engineering</title>
		<link>http://framethink.wordpress.com/2011/07/07/crafting-code-across-the-stack-3-benefits-of-cross-technology-engineering/</link>
		<comments>http://framethink.wordpress.com/2011/07/07/crafting-code-across-the-stack-3-benefits-of-cross-technology-engineering/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 06:26:42 +0000</pubDate>
		<dc:creator>yeeguy</dc:creator>
				<category><![CDATA[consumer internet]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[product management]]></category>
		<category><![CDATA[social apps]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://framethink.wordpress.com/?p=124</guid>
		<description><![CDATA[One of the engineers in my startup asked some thought-provoking questions in a hallway conversation today: Should engineers own end-to-end implementation of features that cut across multiple layers of our technology stack?  Or should engineers focus/specialize on specific layers of the stack and collaborate with each other to develop each feature? I&#8217;ve repeatedly observed that small [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=124&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>One of the engineers in my startup asked some thought-provoking questions in a hallway conversation today:</p>
<blockquote><address>Should engineers own end-to-end implementation of features that cut across multiple layers of our technology stack?  Or should engineers focus/specialize on specific layers of the stack and collaborate with each other to develop each feature?</address>
</blockquote>
<p>I&#8217;ve repeatedly observed that small teams of developers run circles around large teams in every company I&#8217;ve ever been in.  [Caveat: I focus on consumer internet software, so my observations will be biased towards that industry.]  I have a strong preference for company cultures that encourage individual engineers to develop as much of a featureset as they can on their own.  If there&#8217;s a front-end user interface to be created as well as a backend API required to support a particular feature, I&#8217;d like to see the same engineer coding it all.   Obviously this isn&#8217;t always possible for either technical or personnel constraints, but it is the ideal in my mind.</p>
<p>Today&#8217;s announcement of <a href="https://blog.facebook.com/blog.php?post=10150223135777131">Facebook&#8217;s integration with Skype</a> is a timely example of this principle in action.  I wasn&#8217;t a direct part of that integration project, but knew the folks on both sides.  With two big companies like Facebook and Skype coming together, there were dozens of people involved in the overall project.  Even so, it was really remarkable to me to see how much of the integration really hinged on two key individuals &#8212; one on the Facebook side and one of the Skype side.  Both of those individual engineers are really amazing &#8220;multi-lingual&#8221; developers who were able to make key coding contributions across multiple layers of technology ranging from Java applets and compiled desktop executables to in-browser Javascript and CSS/HTML to server-based API&#8217;s and cloud services.</p>
<p>Seeing that reminded me of the <strong>three main benefits of getting engineers to own entire featuresets</strong>, even (or maybe especially) if they cut across multiple technologies&#8230;</p>
<h2 style="padding-left:30px;">1. Motivation</h2>
<p style="padding-left:30px;">When an individual engineer works on a feature that they know is going to impact large numbers of users, they viscerally feel the huge contribution they&#8217;re making to their company (and society!).  Nothing is more motivating than feeling like your work really makes a difference.</p>
<h2 style="padding-left:30px;">2. Quality</h2>
<p style="padding-left:30px;">An engineer who really understands an entire featureset front-t0-back is able to grok critical dependencies between technology layers more effectively than a team of multiple individuals.   I assert that the ability to see the whole picture enables the single engineer to more effectively write test cases, identify likely breaking points, and ultimately deliver higher overall quality code that is defensively coded against future commits.</p>
<h2 style="padding-left:30px;">3. Iteration</h2>
<p style="padding-left:30px;">This is a key advantage for individual engineers: the engineer who designed and coded an entire featureset on their own will be more likely and much faster to modify/iterate their designs when presented with market feedback from real consumers.  In contrast, a team of engineers who each only coded parts of a feature (and therefore relied on some other person, usually a project manager or a product manager, to provide a holistic view and integration guidance) will be much slower to collectively process market feedback and iterate.</p>
<p>Now, this may all be much easier said than done&#8230;   For one thing, it&#8217;s hard enough to recruit great engineers in any given technical area, much less a team of cross-technology superstars.  And in practice, there are significant friction points to the lone-ranger style of development.  E.g., if every engineer is a gun slinger they may unwittingly produce a lot of conflicting or redundant code that at some point needs to refactored.  Furthermore, even if an engineer is capable of contributing code across many different levels of a tech stack, that doesn&#8217;t mean they will always *want* to do so&#8230;</p>
<p>Even netting out those potential disadvantages, I think that cross-technology development has a strong positive impact; especially in the consumer internet space where companies actually have a decent shot at recruiting engineers who can effectively contribute code across the entire LAMP (or insert your favorite mobile or web development framework here) stack.  And even if your company doesn&#8217;t, in practice, hand over entire featuresets to a single engineer to execute, I think it&#8217;s still really important to foster cross-technology understanding.  It can only benefit your team if the javascript front-end wizard really understands the database impact that all her AJAX calls are going to produce; or if your backend API engineer really understands how often and how quickly his REST services will be requested by a mobile client; etc.</p>
<p>Have you ever worked in a company that had a policy of &#8220;single engineer owns an entire feature&#8221;?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/framethink.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/framethink.wordpress.com/124/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=124&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://framethink.wordpress.com/2011/07/07/crafting-code-across-the-stack-3-benefits-of-cross-technology-engineering/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a2136d837229ecb4fcc94c5f777862d8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yeeguy</media:title>
		</media:content>
	</item>
		<item>
		<title>How employees get screwed in private equity deals</title>
		<link>http://framethink.wordpress.com/2011/06/24/how-employees-get-screwed-in-private-equity-deals/</link>
		<comments>http://framethink.wordpress.com/2011/06/24/how-employees-get-screwed-in-private-equity-deals/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 05:22:50 +0000</pubDate>
		<dc:creator>yeeguy</dc:creator>
				<category><![CDATA[business management]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://framethink.wordpress.com/?p=110</guid>
		<description><![CDATA[I learned a hard lesson from working with a bunch of rat bastards leading private equity firm, Silver Lake.  [...]  it turns out that the employment terms for a Silver Lake company are *very* different from what most Valley high-tech employees are used to.  Here are three important things to watch out for if you're thinking about joining a company that is being managed by a private equity firm or if your company gets taken over by a PE bank.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=110&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><span style="font-size:13px;">I </span><a style="font-size:13px;" title="Why Some Skypers Are Seeing Red - BusinessWeek" href="http://www.businessweek.com/magazine/content/11_27/b4235038625596.htm">learned a hard lesson</a><span style="font-size:13px;"> from working with a </span><del style="font-size:13px;">bunch of rat bastards</del><span style="font-size:13px;"> leading private equity firm, Silver Lake.  I joined Skype after the company was </span><a style="font-size:13px;" href="http://investor.ebayinc.com/releasedetail.cfm?ReleaseID=406368">spun out of eBay  by SilverLake in deal valued at $2.7B </a><span style="font-size:13px;">and was recruited to help accelerate the pace of product development and make the Skype app more web-oriented.  I was at the company for just over a year in a product management role and felt like my team accomplished some important things along the way, including reduction of software development cycles from months down to 2-weeks and delivery of a whole new advertising revenue stream to the company.   It was a fun and challenging job, involving tons of international travel and I met some amazing people along the way.</span></p>
<p>Now despite the fact that Skype has a Palo Alto office and kind of seems like it would fit right in with Silicon Valley tech companies, it turns out that the employment terms for a Silver Lake company are *very* different from what most Valley high-tech employees are used to.  Here are three important things to watch out for if you&#8217;re thinking about joining a company that is being managed by a private equity firm or if your company gets taken over by a PE bank.</p>
<p><strong>1. Lawyer Up</strong></p>
<p><a href="http://framethink.files.wordpress.com/2011/06/keep-calm-and-lawyer-up.png"><img class="alignnone size-medium wp-image-114" title="keep calm and lawyer up" alt="" src="http://framethink.files.wordpress.com/2011/06/keep-calm-and-lawyer-up.png?w=257&#038;h=300" width="257" height="300" /></a></p>
<p>(image credit: <a href="http://weheartit.com/entry/5625871">http://weheartit.com/entry/5625871</a>)</p>
<p>The most important lesson I learned from Skype was that compensation and stock policies in PE-owned firms can be very heavily tilted in the owners&#8217; favor and against the employees.  Skype employees have 5-year vesting of stock options, for example, not the usual 4 year schedule that most Valley firms have.  Even worse, Skype&#8217;s stock option agreement had special clauses that the Board had slipped in that gives them the right to &#8220;repurchase&#8221; any vested shares for anyone who leaves the company voluntarily or is terminated with cause &#8212; effectively taking &#8220;vested&#8221; shares and making them worthless.  Here&#8217;s a nice letter I got from the Associate General Counsel of Skype that points out exactly how my stock options have &#8220;no financial value.&#8221;  (see <a href="http://framethink.files.wordpress.com/2011/06/lee2.pdf">lee</a>.pdf).  Gee, thanks.</p>
<p>Now, I&#8217;ve seen my share of legal documents for tech companies.  I&#8217;ve worked in Valley tech companies for over 15 years, have founded startups, done VC financings, and invested in companies.  None of that prepared me for the kinds of legal shenanigans that the PE guys at Silver Lake pulled because I had never come across those kinds of terms before, let alone the fact that these clauses were hidden as one-liners in otherwise pretty standard-looking documents.  (see <a href="http://framethink.files.wordpress.com/2011/06/stock-option-grant-agreement-for-kuo-yee-lee-signed.pdf">Stock Option Grant Agreement for Kuo-Yee Lee &#8211; signed</a>)</p>
<p>So my first point of advice to anyone considering working for a PE-lead firm is to LAWYER UP &#8212; it&#8217;ll be worth your while to get an attorney to carefully review all employment documents so that you know what you&#8217;re really getting into.</p>
<p><strong>2. The Bobs</strong></p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='425' height='350' src='http://www.youtube.com/embed/2SoWNMNKNeMrel0?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span>
<p>Working with Silver Lake was my first opportunity to witness up-close-and-personal how a PE firm does its business of restructuring a company that they&#8217;ve just taken over.  And it was breath-taking.  The firm inserted itself into every level of the company.  At one point in my tenure at Skype, Silver Lake had representatives or consultants on the Board, in C-level executive roles, in technical leadership and operating roles, and all the way on thru the organization to the person actually running our software deployment schedule&#8230;   So Silver Lake put its fingers really deeply into Skype&#8217;s pie and they started rearranging things.</p>
<p>You can agree or disagree with the practice of re-organization, but I personally had never been part of a restructuring that ran so deep in a company.  During the year I was at Skype, the company:</p>
<ul>
<ul>
<li><a href="http://techcrunch.com/2010/10/07/former-skype-ceo-josh-silverman-jumps-to-greylock-as-an-eir/">lost</a> a CEO</li>
</ul>
</ul>
<ul>
<li><a href="http://techcrunch.com/2010/07/06/skype-recruits-yahoo-engineering-exec-for-key-technology-role/">hired</a> and fired a CTO</li>
</ul>
<ul>
<li>hired and fired a CFO</li>
</ul>
<ul>
<li>gained a CEO, CMO, CIO, and CDO</li>
</ul>
<ul>
<li>created an entirely new product development org structure</li>
</ul>
<ul>
<li>eliminated every Project Manager role</li>
</ul>
<ul>
<li>fired, re-interviewed,  and re-hired Product Managers</li>
</ul>
<ul>
<li>created a two new business units</li>
</ul>
<ul>
<li>combined two business units into one</li>
</ul>
<ul>
<li>dissolved one business unit</li>
</ul>
<ul>
<li>opened a new office and hired several hundred people</li>
</ul>
<ul>
<li>the list goes on&#8230;</li>
</ul>
<div>I mean, these are crazy changes for any company to go through over the course of years.  To have that all happen within a short number of months was staggering.  The conventional wisdom in Silicon Valley is that good engineers and product designers will always have job security.  Still, there were times at Skype when even really solid engineers and designers were asking me if their jobs were going to be safe from all the changes going on.</div>
<div>So, second major lesson learned: prepare your resume and get ready to re-interview for your job (or a different one) because organizational change is a major part of the private-equity-lead restructuring of a company!</div>
<p><strong>3. It Ain&#8217;t Over &#8217;til It&#8217;s Over</strong></p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='425' height='350' src='http://www.youtube.com/embed/wkURz6H0I0Irel0?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span>
<p>Even if an employee of a PE-owned company has avoided the legal beartraps and weathered the re-org&#8217;ing, <a href="http://www.bloomberg.com/news/2011-06-19/skype-fires-executives-avoiding-payouts-after-microsoft-buyout-closes.html">they&#8217;re still not safe</a>.  Even as Skypers were celebrating the huge <a href="http://gigaom.com/2011/05/09/why-microsoft-is-buying-skype-for-8-billion/">potential of the Microsoft deal</a>, the PE bankers were sharpening their knives and plotting which employees to fire in order to maximize profits and minimize payouts to non-owners.   Seriously, how greedy do you need to be to <a href="http://www.huffingtonpost.com/2011/05/11/skype-owners-silver-lake-microsoft_n_860450.html">make $5B</a> and still try to screw the people who made that value possible?  I mean, Silver Lake is trying to hyper-optimize their returns to the point that they&#8217;re trying to deny employee payouts that amount to less than 0.3% of the returns that they&#8217;ll get from the deal.  Srsly.  Really?</p>
<p>So, just be warned: Silicon Valley startup folks may think we&#8217;ve had hard dealings with venture capitalists&#8230;  But in my opinion, VC greed pales in comparison to the level of greed exhibited by the Silver Lake private equity firm.</p>
<p>And there you have it, my top three lessons learned from being raked over the coals by a PE firm.</p>
<p>Have your own story?  Leave a link or comment below!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/framethink.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/framethink.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=110&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://framethink.wordpress.com/2011/06/24/how-employees-get-screwed-in-private-equity-deals/feed/</wfw:commentRss>
		<slash:comments>93</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a2136d837229ecb4fcc94c5f777862d8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yeeguy</media:title>
		</media:content>

		<media:content url="http://framethink.files.wordpress.com/2011/06/keep-calm-and-lawyer-up.png?w=257" medium="image">
			<media:title type="html">keep calm and lawyer up</media:title>
		</media:content>
	</item>
		<item>
		<title>Three user-generated content UX principles</title>
		<link>http://framethink.wordpress.com/2011/04/29/three-user-generated-content-ux-principles/</link>
		<comments>http://framethink.wordpress.com/2011/04/29/three-user-generated-content-ux-principles/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 20:41:45 +0000</pubDate>
		<dc:creator>yeeguy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[consumer internet]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[user experience]]></category>

		<guid isPermaLink="false">http://framethink.wordpress.com/?p=98</guid>
		<description><![CDATA[Three UGC UX principles that I&#8217;m working towards in my products: 1) Fast &#8212; sub-200 millisecond response time to any user input 2) Assistive &#8212; give users something to react to; rather than forcing them to generate their own novel content 3) Learning &#8212; system improves with every user click or action What are your [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=98&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Three UGC UX principles that I&#8217;m working towards in my products:<br />
1) Fast &#8212; sub-200 millisecond response time to any user input<br />
2) Assistive &#8212; give users something to react to; rather than forcing them to generate their own novel content<br />
3) Learning &#8212; system improves with every user click or action</p>
<p>What are your top three?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/framethink.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/framethink.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=98&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://framethink.wordpress.com/2011/04/29/three-user-generated-content-ux-principles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a2136d837229ecb4fcc94c5f777862d8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yeeguy</media:title>
		</media:content>
	</item>
		<item>
		<title>How Facebook Ships Code</title>
		<link>http://framethink.wordpress.com/2011/01/17/how-facebook-ships-code/</link>
		<comments>http://framethink.wordpress.com/2011/01/17/how-facebook-ships-code/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 06:14:22 +0000</pubDate>
		<dc:creator>yeeguy</dc:creator>
				<category><![CDATA[business management]]></category>
		<category><![CDATA[product management]]></category>
		<category><![CDATA[social networks]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://framethink.wordpress.com/?p=92</guid>
		<description><![CDATA[coding, startups, facebook, culture, developer-driven culture<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=92&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m fascinated by the way Facebook operates.  It&#8217;s a very unique environment, not easily replicated (nor would their system work for all companies, even if they tried).  These are notes gathered from talking with many friends at Facebook about how the company develops and releases software.</p>
<p>Seems like others are also interested in Facebook&#8230;   <a href="http://launch.is/blog/2010/12/14/launch002-what-i-learned-from-zuckerbergs-mistakes.html">The company&#8217;s developer-driven culture is coming under greater public scrutiny</a> and other companies are <a href="http://blogs.forrester.com/tom_grant/11-01-17-product_management_you_get_what_you_pay_for?cm_mmc=RSS-_-IT-_-942-_-blog_1887">grappling with if/how to implement developer-driven culture</a>.   The company is pretty secretive about its internal processes, though.  <a href="http://www.facebook.com/notes.php?id=9445547199">Facebook&#8217;s Engineering team releases public Notes</a> on new features and some internal systems, but these are mostly &#8220;what&#8221; kinds of articles, not &#8220;how&#8221;&#8230;  So it&#8217;s not easy for outsiders to see how Facebook is able to innovate and optimize their service so much more effectively than other companies.  In my own attempt as an outsider to understand more about how Facebook operates, I assembled these observations over a period of months.  Out of respect for the privacy of my sources, I&#8217;ve removed all names and mention of specific features/products.  And I&#8217;ve also waited for over six months to publish these notes, so they&#8217;re surely a bit out-of-date.   I hope that releasing these notes will help shed some light on how Facebook has managed to push decision-making &#8220;down&#8221; in its organization without descending into chaos&#8230;  It&#8217;s hard to argue with Facebook&#8217;s results or the coherence of Facebook&#8217;s product offerings.  I think and hope that many consumer internet companies can learn from Facebook&#8217;s example.</p>
<p>HUGE thanks to the many folks who helped put together this view inside of Facebook.   Thanks are also due to folks like <a href="http://www.reddit.com/user/epriest">epriest</a> and <a href="http://www.reddit.com/user/fryfrog">fryfrog</a> who have written up corrections and edits.</p>
<p>Notes:</p>
<ul>
<ul>
<li>as of June 2010, the company has nearly 2000 employees, up from roughly 1100 employees 10 months ago.  Nearly doubling staff in under a year!</li>
</ul>
</ul>
<ul>
<li>the two largest teams are Engineering and Ops, with roughly 400-500 team members each.  Between the two they make up about 50% of the company.</li>
</ul>
<ul>
<li>product manager to engineer ratio is roughly 1-to-7 or 1-to-10</li>
</ul>
<ul>
<li>all engineers go through 4 to 6 week &#8220;Boot Camp&#8221; training where they learn the Facebook system by fixing bugs and listening to lectures given by more senior/tenured engineers.  estimate 10% of each boot camp&#8217;s trainee class don&#8217;t make it and are counseled out of the organization.</li>
</ul>
<ul>
<li>after boot camp, all engineers get access to live DB (comes with standard lecture about &#8220;with great power comes great responsibility&#8221; and a clear list of &#8220;fire-able offenses&#8221;, e.g., sharing private user data)</li>
</ul>
<ul>
<li>[EDIT thx <a href="http://www.reddit.com/r/programming/comments/f3u0n/how_facebook_ships_code/c1d3j0a">fryfrog</a>] <em>&#8220;There are also very good safe guards in place to prevent anyone at the company from doing the horrible sorts of things you can imagine people have the power to do being on the inside. If you have to &#8220;become&#8221; someone who is asking for support, this is logged along with a reason and closely reviewed. Straying here is not tolerated, period.&#8221;</em></li>
</ul>
<ul>
<ul>
<li>any engineer can modify any part of FB&#8217;s code base and check-in at-will</li>
</ul>
</ul>
<ul>
<li>very engineering driven culture.  &#8221;product managers are essentially useless here.&#8221; is a quote from an engineer.  engineers can modify specs mid-process, re-order work projects, and inject new feature ideas anytime.  [EDITORIAL] <em>The author of this blog post is a product manager, so this sentiment really caught my attention.  As you&#8217;ll see in the rest of these notes, though, it&#8217;s apparent that Facebook&#8217;s culture has really embraced product management practices so it&#8217;s not as though the role of product management is somehow ignored or omitted.  Rather, the culture of the company seems to be set so that *everyone* feels responsibility for the product.</em></li>
</ul>
<ul>
<li>during monthly cross-team meetings, the engineers are the ones who present progress reports.  product marketing and product management attend these meetings, but if they are particularly outspoken, there is actually feedback to the leadership that &#8220;product spoke too much at the last meeting.&#8221;  they really want engineers to publicly own products and be the main point of contact for the things they built.</li>
</ul>
<ul>
<li>resourcing for projects is purely voluntary.Engineers decide which ones sound interesting to work on.
<ul>
<ul>
<li>a PM lobbies group of engineers, tries to get them excited about their ideas.</li>
</ul>
</ul>
<p>&nbsp;</li>
<li></li>
<li>Engineer talks to their manager, says &#8220;I&#8217;d like to work on these 5 things this week.&#8221;</li>
<li>Engineering Manager mostly leaves engineers&#8217; preferences alone, may sometimes ask that certain tasks get done first.</li>
<li>Engineers handle entire feature themselves &#8212; front end javascript, backend database code, and everything in between.  If they want help from a Designer (there are a limited staff of dedicated designers available), they need to get a Designer interested enough in their project to take it on.  Same for Architect help.  But in general, expectation is that engineers will handle everything they need themselves.</li>
</ul>
<ul>
<li>arguments about whether or not a feature idea is worth doing or not generally get resolved by just spending a week implementing it and then testing it on a sample of users, e.g., 1% of Nevada users.</li>
</ul>
<ul>
<li>engineers generally want to work on infrastructure, scalability and &#8220;hard problems&#8221; &#8212; that&#8217;s where all the prestige is.  can be hard to get engineers excited about working on front-end projects and user interfaces.  this is the opposite of what you find in some consumer businesses where everyone wants to work on stuff that customers touch so you can point to a particular user experience and say &#8220;I built that.&#8221;  At facebook, the back-end stuff like news feed algorithms, ad-targeting algorithms, memcache optimizations, etc. are the juicy projects that engineers want.</li>
</ul>
<ul>
<ul>
<li><del>commits that affect certain high-priority features (e.g., news feed) get code reviewed before merge.</del> News Feed is important enough that Zuckerberg reviews any changes to it, but that&#8217;s an exceptional case.</li>
</ul>
</ul>
<ul>
<li>[CORRECTION -- thx <a href="http://www.reddit.com/r/programming/comments/f3u0n/how_facebook_ships_code/c1d3b37">epriest</a>] <em>&#8220;There is mandatory code review for all changes (i.e., by one or more engineers). I think the article is just saying that Zuck doesn&#8217;t look at every change personally.&#8221;</em></li>
</ul>
<ul>
<li>[CORRECTION thx <a href="http://www.reddit.com/r/programming/comments/f3u0n/how_facebook_ships_code/c1d3j0a">fryfrog</a>] <em>&#8220;All changes are reviewed by at least one person, and the system is easy for anyone else to look at and review your code even if you don&#8217;t invite them to. It would take intentionally malicious behavior to get un-reviewed code in.&#8221;</em></li>
</ul>
<ul>
<li><del>no QA at all, zero</del>.  engineers responsible for testing, bug fixes, and post-launch maintenance of their own work.  there are some unit-testing and integration-testing frameworks available, but only sporadically used.</li>
</ul>
<ul>
<li>[CORRECTION thx <a href="http://www.reddit.com/r/programming/comments/f3u0n/how_facebook_ships_code/c1d3j0a">fryfrog</a>] <em>&#8220;I would also add that we do have QA, just not an official QA group. Every employee at an office or connected via VPN is using a version of the site that includes all the changes that are next in line to go out. This version is updated frequently and is usually 1-12 hours ahead of what the world sees. All employees are strongly encouraged to report any bugs they see and these are very quickly actioned upon.&#8221;</em></li>
</ul>
<ul>
<li>re: surprise at lack of QA or automated unit tests &#8212; &#8220;most engineers are capable of writing bug-free code.  it&#8217;s just that they don&#8217;t have an incentive to do so at most companies.  when there&#8217;s a QA department, it&#8217;s easy to just throw it over to them to find the errors.&#8221;  [EDIT: please note that this was subjective opinion, I chose to include it in this post because of the stark contrast that this draws with standard development practice at other companies]</li>
</ul>
<ul>
<li>[CORRECTION thx <a href="http://www.reddit.com/r/programming/comments/f3u0n/how_facebook_ships_code/c1d3b37">epriest</a>] <em>&#8220;We have automated testing, including &#8220;push-blocking&#8221; tests which must pass before the release goes out. We absolutely do not believe &#8220;most engineers are capable of writing bug-free code&#8221;, much less that this is a reasonable notion to base a business upon.&#8221;</em></li>
</ul>
<ul>
<ul>
<li>re: surprise at lack of PM influence/control &#8212; product managers have a lot of independence and freedom.  The key to being influential is to have really good relationships with engineering managers.  Need to be technical enough not to suggest stupid ideas.  Aside from that, there&#8217;s no need to ask for any permission or pass any reviews when establishing roadmaps/backlogs.  There are relatively few PMs, but they all feel like they have responsibility for a really important and personally-interesting area of the company.</li>
</ul>
</ul>
<ul>
<li>by default all code commits get packaged into weekly releases (tuesdays)</li>
</ul>
<ul>
<li>with extra effort, changes can go out same day</li>
</ul>
<ul>
<li>tuesday code releases require all engineers who committed code in that week&#8217;s release candidate to be on-site</li>
</ul>
<ul>
<li>engineers must be present in a specific IRC channel for &#8220;roll call&#8221; before the release begins or else suffer a public &#8220;shaming&#8221;</li>
</ul>
<ul>
<li>ops team runs code releases by gradually rolling code outthere are 9 <del>concentric</del> levels for rolling out new code
<ul>
<ul>
<li>facebook has around 60,000 servers</li>
</ul>
</ul>
<p>&nbsp;</li>
<li></li>
<li>[CORRECTION thx <a href="http://www.reddit.com/r/programming/comments/f3u0n/how_facebook_ships_code/c1d3b37">epriest</a>] <em>&#8220;The nine push phases are not concentric. There are three concentric phases (p1 = internal release, p2 = small external release, p3 = full external release). The other six phases are auxiliary tiers like our internal tools, video upload hosts, etc.&#8221;</em></li>
<li>the smallest level is only 6 servers</li>
<li>e.g., new tuesday release is rolled out to 6 servers (level 1), ops team then observes those 6 servers and make sure that they are behaving correctly before rolling forward to the next level.</li>
<li>if a release is causing any issues (e.g., throwing errors, etc.) then push is halted.  the engineer who committed the offending changeset is paged to fix the problem.  and then the release starts over again at level 1.</li>
<li>so a release may go thru levels repeatedly:  1-2-3-fix. back to 1. 1-2-3-4-5-fix.  back to 1.  1-2-3-4-5-6-7-8-9.</li>
</ul>
<ul>
<li>ops team is really well-trained, well-respected, and very business-aware.  their server metrics go beyond the usual error logs, load &amp; memory utilization stats &#8212; also include user behavior.  E.g., if a new release changes the percentage of users who engage with Facebook features, the ops team will see that in their metrics and may stop a release for that reason so they can investigate.</li>
</ul>
<ul>
<li>during the release process, ops team uses an IRC-based paging system that can ping individual engineers via Facebook, email, IRC, IM, and SMS if needed to get their attention.  not responding to ops team results in public shaming.</li>
</ul>
<ul>
<li>once code has rolled out to level 9 and is stable, then done with weekly push.</li>
</ul>
<ul>
<li>if a feature doesn&#8217;t get coded in time for a particular weekly push, it&#8217;s not that big a deal (unless there are hard external dependencies) &#8212; features will just generally get shipped whenever they&#8217;re completed.</li>
</ul>
<ul>
<li>getting svn-blamed, publicly shamed, or slipping projects too often will result in an engineer getting fired.  &#8221;it&#8217;s a very high performance culture&#8221;.  people that aren&#8217;t productive or aren&#8217;t super talented really stick out.  Managers will literally take poor performers aside within 6 months of hiring and say &#8220;this just isn&#8217;t working out, you&#8217;re not a good culture fit&#8221;.  this actually applies at every level of the company, even C-level and VP-level hires have been quickly dismissed if they aren&#8217;t super productive.</li>
</ul>
<ul>
<li>[CORRECTION, thx <a href="http://www.reddit.com/r/programming/comments/f3u0n/how_facebook_ships_code/c1d3b37">epriest</a>]  <em>&#8220;People do not get called out for introducing bugs. They only get called out if they ask for changes to go out with the release but aren&#8217;t around to support them in case something goes wrong (and haven&#8217;t found someone to cover for you).&#8221;</em></li>
</ul>
<ul>
<li>[CORRECTION, thx <a href="http://www.reddit.com/r/programming/comments/f3u0n/how_facebook_ships_code/c1d3b37">epriest</a>] <em>&#8220;Getting blamed will NOT get you fired. We are extremely forgiving in this respect, and most of the senior engineers have pushed at least one horrible thing, myself included. As far as I know, no one has ever been fired for making mistakes of this nature.&#8221;</em></li>
</ul>
<ul>
<li>[CORRECTION, thx <a href="http://www.reddit.com/r/programming/comments/f3u0n/how_facebook_ships_code/c1d3j0a">fryfrog</a>] &#8220;<em>I also don&#8217;t know of anyone who has been fired for making mistakes like are mentioned in the article. I know of people who have inadvertently taken down the site. They work hard to fix what ever caused the problem and everyone learns from it. The public shaming is far more effective than fear of being fired, in my opinion.&#8221;</em></li>
</ul>
<p>It&#8217;ll be super interesting to see how Facebook&#8217;s development culture evolves over time &#8212; and especially to see if the culture can continue scaling as the company grows into the thousands-of-employees.</p>
<p>What do you think?  Would &#8220;developer-driven culture&#8221; work at your company?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/framethink.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/framethink.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=92&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://framethink.wordpress.com/2011/01/17/how-facebook-ships-code/feed/</wfw:commentRss>
		<slash:comments>302</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a2136d837229ecb4fcc94c5f777862d8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yeeguy</media:title>
		</media:content>
	</item>
		<item>
		<title>Four early-PayPal entrepreneurial culture norms</title>
		<link>http://framethink.wordpress.com/2010/05/04/four-early-paypal-entrepreneurial-culture-norms/</link>
		<comments>http://framethink.wordpress.com/2010/05/04/four-early-paypal-entrepreneurial-culture-norms/#comments</comments>
		<pubDate>Tue, 04 May 2010 23:32:32 +0000</pubDate>
		<dc:creator>yeeguy</dc:creator>
				<category><![CDATA[business management]]></category>
		<category><![CDATA[startups]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[entrepreneurship]]></category>

		<guid isPermaLink="false">http://framethink.wordpress.com/?p=89</guid>
		<description><![CDATA[(in response to Quora question &#8220;Which strong beliefs on culture for entrepreneurialism did Peter / Max / David have at PayPal?&#8220;) Four aspects of early PayPal culture really stood out to me when I joined as a product manager: 1) self-sufficiency &#8212; individuals and small teams were given fairly complex objectives and expected to figure [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=89&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>(in response to Quora question &#8220;<a href="http://www.quora.com/Which-strong-beliefs-on-culture-for-entrepreneurialism-did-Peter-Max-David-have-at-PayPal">Which strong beliefs on culture for entrepreneurialism did Peter / Max / David have at PayPal?</a>&#8220;)</p>
<p>Four aspects of early PayPal culture really stood out to me when I joined as a product manager:<br />
1) self-sufficiency &#8212; individuals and small teams were given fairly complex objectives and expected to figure out how to achieve them on their own.  If you needed to integrate with an outside vendor, you picked up the phone yourself and called; you didn&#8217;t wait for a BD person to become available.  You did (the first version of) mockups and wireframes yourself; you didn&#8217;t wait for a designer to become available.  You wrote (the first draft of) site copy yourself; you didn&#8217;t wait for a content writer.</p>
<p>2) extreme bias towards action &#8211; early PayPal was simply a really *productive* workplace.  This was partly driven by the culture of self-sufficiency.  PayPal is and was, after all, a web service; and the company managed to ship prodigious amounts of relatively high-quality web software for a lot of years in a row early on.  Yes, we had the usual politics between functional groups, but either individual heroes or small, high-trust teams more often than not found ways to deliver projects on-time.</p>
<p>3) data-driven decision making &#8212; PayPal was filled with smart, opinionated people who were often at logger-heads.  The way to win arguments was to bring data to bear.  So you never started a sentence like this &#8220;I feel like it&#8217;s a problem that our users can&#8217;t do X&#8221;, instead you&#8217;d do your homework first and then come to the table with &#8220;35% of our [insert some key metric here] are caused by the lack of X functionality&#8230;&#8221;</p>
<p>4) willingness to try &#8212; even in a data-driven culture, you&#8217;ll always run in to folks who either don&#8217;t believe you have collected the right supporting data for a given decision or who just aren&#8217;t comfortable when data contradicts their gut feeling.  In many companies, those individuals would be the death of decision-making.  At PayPal, I felt like you could almost always get someone to give it a *try* and then let performance data tell us whether to maintain the decision or rollback.</p>
<p>Those four cultural attributes actually make up a lot of the attitudes and beliefs that you&#8217;d expect to see in great entrepreneurs &#8212; i.e., multi-disciplinary, self-sufficient, action-oriented, data-driven experimentalists.  So it&#8217;s no surprise to see the number of successful startup ventures founded by PayPal alums.  To be sure, PayPal is/was not unique &#8212; I would expect any company that established these kinds of cultural norms to<a href="http://www.quora.com/Why-did-so-many-successful-entrepreneurs-and-startups-come-out-of-PayPal"> produce a lot of entrepreneurs</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/framethink.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/framethink.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=89&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://framethink.wordpress.com/2010/05/04/four-early-paypal-entrepreneurial-culture-norms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a2136d837229ecb4fcc94c5f777862d8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yeeguy</media:title>
		</media:content>
	</item>
		<item>
		<title>Four Viral Loop Drivers [updated]</title>
		<link>http://framethink.wordpress.com/2010/03/29/four-viral-loop-drivers-updated/</link>
		<comments>http://framethink.wordpress.com/2010/03/29/four-viral-loop-drivers-updated/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 01:36:41 +0000</pubDate>
		<dc:creator>yeeguy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[viral loops]]></category>
		<category><![CDATA[virality]]></category>

		<guid isPermaLink="false">http://framethink.wordpress.com/?p=86</guid>
		<description><![CDATA[I was noodling about different categories of viral loops and started making a list&#8230; Viral Loops typically center on: Contact Lists &#8212; e.g., inviting new people thru the process of finding/adding new contacts to a contact list Conversations &#8212; e.g., inviting new people by adding them to chats, events, groups, etc. Media &#8212; e.g., inviting [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=86&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I was noodling about different categories of viral loops and started making a list&#8230;</p>
<p>Viral Loops typically center on:</p>
<ol>
<li>Contact Lists &#8212; e.g., inviting new people thru the process of finding/adding new contacts to a contact list</li>
<li>Conversations &#8212; e.g., inviting new people by adding them to chats, events, groups, etc.</li>
<li>Media &#8212; e.g., inviting new people by sharing media/content with them</li>
<li>Incentives &#8212; e.g., inviting new people to unlock functional or financial incentives</li>
</ol>
<p>Any others that you can think of?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/framethink.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/framethink.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=framethink.wordpress.com&#038;blog=2038550&#038;post=86&#038;subd=framethink&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://framethink.wordpress.com/2010/03/29/four-viral-loop-drivers-updated/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a2136d837229ecb4fcc94c5f777862d8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yeeguy</media:title>
		</media:content>
	</item>
	</channel>
</rss>
