<?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>Cory Forsyth &#187; general</title>
	<atom:link href="http://coryforsyth.com/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://coryforsyth.com</link>
	<description>The Life of Me</description>
	<lastBuildDate>Tue, 15 May 2012 01:38:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=8506</generator>
		<item>
		<title>CTO School: Skillshare Methodology and Resets with Art.sy&#039;s CTO</title>
		<link>http://coryforsyth.com/2012/05/14/cto-school-skillshare-methodology-and-resets-with-art-sys-cto/</link>
		<comments>http://coryforsyth.com/2012/05/14/cto-school-skillshare-methodology-and-resets-with-art-sys-cto/#comments</comments>
		<pubDate>Tue, 15 May 2012 01:38:32 +0000</pubDate>
		<dc:creator>cory</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://coryforsyth.com/?p=352</guid>
		<description><![CDATA[Always a good time at CTO School. This week was Product-Focused Processes and Resets. I am feeling more and more at these that there's a big divergence in what being a CTO means, and the divide is primarily between big (bureaucratic, politically-fraught) organizations and startups (experimentation, continuous improvement, well-greased wheels). At this and the last [...]]]></description>
			<content:encoded><![CDATA[Always a good time at CTO School. This week was <a href='http://www.ctoschool.org/events/54692622/'>Product-Focused Processes and Resets</a>.

I am feeling more and more at these that there's a big divergence in what being a CTO means, and the divide is primarily between big (bureaucratic, politically-fraught) organizations and startups (experimentation, continuous improvement, well-greased wheels).  At this and the last one I went to, one of the talks felt like it was preaching to my personal choir, the other felt like it was above my pay grade and beyond my bureaucratic tolerance.  Even so, I have found them all consistently interesting.

Here are my notes:

<hr />

<h1>Cto school notes may 14</h1>

<p><em>/Cto school notes may 14</em></p>

<h2>Malcom Casey: <a href='http://twitter.com/malcolmcasey'>@malcolmcasey</a> from Skillshare</h2>

<ul>
<li>Process
<ul><li>Align product vision and goals
<ul><li>Everyone on team is involved</li>
<li>Not top down</li>
<li>Product planning and prioritization
<ul><li>Identify top problems the product is facing or the users are facing</li>
<li>2 weeks</li>
<li>Ask why 5 times</li>
<li>What does successs look like, how can we measure thay</li></ul></li>
<li>Product sprint
<ul><li>Identify owners and milestones
<ul><li>This can be a junior person.</li>
<li>Doesn't have to be an expert</li>
<li>The owner is in charge of just keeping everything on track, not necessarily implementing all of it</li>
<li>They call the owners 'zookeepers'</li></ul></li>
<li>Don't micromanage</li>
<li>Strategy</li>
<li>Product design</li>
<li>Implementation &amp; deployment</li>
<li>Verification!
<ul><li>Make sure after releasing that the hypotheses were validated</li>
<li>Decide whether to keep or kill it</li></ul></li>
<li>Meetings
<ul><li>Keep them focused</li>
<li>Use hip chat/email/etc, get the feedback</li>
<li>As soon as they are ready to make a decision, then schedule the meeting</li>
<li>Keep the meeting to 15-30 mins</li></ul></li></ul></li>
<li>Product design
<ul><li>Sketching
<ul><li>Everyone on team would sketch, come up with a few solutions</li>
<li>3/1 process (cf apple)</li>
<li>Come up w 10 solutions, pick the best 3, refine that, pick the best 1</li>
<li>After everyone has done this, agreed, likes it, the move on to wireframes, flows, etc</li></ul></li>
<li>Wireframes</li>
<li>User stories &amp; flows</li>
<li>Product design != ux/ui design</li></ul></li></ul></li>
<li>Never "launching" always shipping</li></ul></li>
<li>Tools
<ul><li>Product design
<ul><li>Ux/ui.</li></ul></li>
<li>File mgmt
<ul><li>Dropbox</li></ul></li>
<li>Product mgmt
<ul><li>Trello</li>
<li>Google docs</li>
<li>Used to use pivotal tracker but it didn't work for then</li></ul></li>
<li>Bug tracking
<ul><li>Lighthouse</li></ul></li>
<li>To do list
<ul><li>Behance action runner</li>
<li>Asana</li></ul></li></ul></li>
<li>Culture principals
<ul><li>PayPal mafia (graphic showing how all the early founders went on to start new successes)</li>
<li>It's not about making ideas, it's about  making ideas happen</li>
<li>Creating great team
<ul><li>Not about rock stars, about finding a team that meshes well.</li></ul></li>
<li>Over communicate</li>
<li>Transparency
<ul><li>Tell employees about vc talks, where the company is going, etc</li></ul></li>
<li>Create solutions not problems. Think about how to fix, mot just pointing out problems</li>
<li>Ship it
<ul><li>Done is better than perfect</li></ul></li>
<li>Startups within startups</li>
<li>Set unrealistic deadlines
<ul><li>Estimate what you can do, then aim for 1.5x that</li></ul></li>
<li>All new hires sign an agreement that they understand and agree with the culture</li>
<li>Simplify and enhance focus</li></ul></li>
<li>Focus
<ul><li>Finding the most important thing to work on is critical</li>
<li>Startups don't starve they drown (in ideas)</li>
<li>Focus means saying no to distractions, not saying yes to the one thing (Steve jobs, paraphrased)</li></ul></li>
<li>Questions
<ul><li>How to get focused?
<ul><li>What experiments do you want to run, what can get done in 2 weeks</li></ul></li>
<li>How many hats do ppl wear?
<ul><li>3-4. Helping creative process, (developing), analytics driven (a/b testing), teaching everyone SQL to look at DB, recruiting</li></ul></li>
<li>Does all the shipping cause bad bugs to go live?
<ul><li>Baseline testing. Err on shipping first, fixing later</li>
<li>They have had critical bugs but they fix quickly, they keep users happy</li></ul></li>
<li>What's the turnover?
<ul><li>Haven't had anyone quit. Everyone who has left has been the company's decision</li>
<li>Very transparent, strong culture</li></ul></li>
<li>What's the hiring process?
<ul><li>Mostly referrals</li>
<li>Don't use recruiters</li>
<li>Inbounds/branding/team branding</li>
<li>Etsy does a good job of this and is an inspiration</li>
<li>Very thorough process, multiple phone interviews, homework, meet everyone, check references, keep it within 3 weeks</li>
<li>Try to hire for where you want the team to be 12 months from now</li></ul></li>
<li>How many have you let go?
<ul><li>About 5 in a year</li></ul></li>
<li>How do you find the balance of too much and too little process?
<ul><li>No right answer.</li>
<li>Play around with it</li></ul></li>
<li>Any special incentives to keep ppl engaged/motivated?
<ul><li>Allow ppl to take as many classes</li>
<li>Allow ppl to go in groups of up to 4 and spend company money to do anything they want</li>
<li>Give lots of freedom and responsibility</li></ul></li></ul></li>
</ul>

<h2>CTO Artsy Daniel Doubrovkine: Pressing the big reset button (<a href='http://twitter.com/dblockdotorg'>@dblockdotorg</a>. <a href='http://slideshare.net/dblockdotorg'>Slides</a>).</h2>

<ul>
<li>How do we feel about resets?
<ul><li>It's negative, happens as a consequence of failure</li>
<li>Always happens with drama. 'slam the breaks'</li>
<li>Compared to changing the wings on a flying airplane</li></ul></li>
<li>Examples
<ul><li>Exhibit 1 Microsoft windows vista/longhorn
<ul><li>Dev began in 2001</li>
<li>Very feature-bloated. By 2004 clearly going nowhere</li>
<li>Reset in 2004 on top of windows server 2003</li>
<li>In 2006 it was released as vista (major failure)</li></ul></li>
<li>Exhibit 2 Microsoft office 98 &amp; netdocs
<ul><li>Netdocs was created by microsofties who thought the Internet would kill office</li>
<li>Net docs 1 was java, effectively an office reset</li>
<li>Net docs 2 reset in C++</li>
<li>Net docs 3 reset as a service</li>
<li>Spent $500M over the years, 500 devs</li></ul></li></ul></li>
<li>Why do resets happen? Survey of about 2000 reset projects. Data from CTO club in NYC and personal network
<ul><li>4/10: sunk cost kept them from resetting</li>
<li>100% say due to some type of failure</li>
<li>7/10 faced strong opposition to resetting</li>
<li>2/10 blame pure product failure</li>
<li>3/10 blame pure tech failure</li>
<li>2/10 blame ppl failure</li>
<li>3/10 resets led to success</li>
<li>4/10 led to failure</li>
<li>100% of projects that weren't reset failed</li></ul></li>
<li>When is it right to reset?
<ul><li>always, provided you are 100% sure the project is failing (Ed: tautology?)</li>
<li>Find truth-Sayers, trusted ppl who will be honest &amp; help you know if it is really failing</li>
<li>Measure how much cost sunk &amp; how much value it is providing
<ul><li>Questioner points out: this is the sunk cost fallacy, better to focus on the value</li></ul></li>
<li>Don't be a chicken
<ul><li>(chicken &amp; pig committed v involved story)</li>
<li>Only those that are committed should decide</li></ul></li>
<li>It can be a smart career move to make the hard choice</li>
<li>Can be very dumb career move if you fail or the organization doesn't support you in the reset after you hit the button</li></ul></li>
<li>How to reset
<ul><li>Act now, decisively</li>
<li>Invest in trust capital
<ul><li>Have to compromise in order to gain trust. For every year of trust capital you have a about a month to burn when in a reset</li>
<li>Build it by helping others achieve their goals</li></ul></li>
<li>Double or nothing</li>
<li>Split execute</li>
<li>Under promise &amp; over deliver
<ul><li>Audience points out: this is the exact opposite of Malcolm Casey's strategy</li></ul></li></ul></li>
<li>Aftermath of a reset
<ul><li>People forget very quickly how bad it was</li>
<li>Don't expe t to be glorified afterward. This is just part of your job</li>
<li>Making decisions about when/where to continue dev paths is always part of your job</li>
<li>Foster a culture of frequent but smaller resets
<ul><li>Experiment often</li>
<li>If things are posed as experiments, and you let devs try their ideas, you will keep evolving (Ed: and they will be happy)</li></ul></li>
<li>Stop at the top
<ul><li>When you're at the top, don't get comfortable...try resetting then to make it even better
<ul><li>Ed: wha?!</li></ul></li></ul></li></ul></li>
<li>Questions
<ul><li>How is the data calibrated?
<ul><li>(audience grumbling/saying 'let him speak')</li>
<li>Somewhat anecdotal</li></ul></li>
<li>How does that affect the code base?
<ul><li>Depends, not necessarily software/code (e.g., could be purchased CRM software, when to throw in towel?)</li></ul></li>
<li>When ppl from the outside advocate reset, it's not good. Is that a personal opinion or from the data?</li>
<li>How do you connect the concept of reset to tech debt?
<ul><li>They are well connected. I don't like working in environments where you need to explicitly pull out tech debt. That should go without saying</li></ul></li>
<li>I pivot on market more than on technology. When you pivoted/reset the tech/rewrote did you get the founders to buy in too?
<ul><li>Yes, that is critical, also critical to show that it is promising quickly</li></ul></li></ul></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://coryforsyth.com/2012/05/14/cto-school-skillshare-methodology-and-resets-with-art-sys-cto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lean Startup Metrics class notes</title>
		<link>http://coryforsyth.com/2012/05/06/lean-startup-metrics-class-notes/</link>
		<comments>http://coryforsyth.com/2012/05/06/lean-startup-metrics-class-notes/#comments</comments>
		<pubDate>Mon, 07 May 2012 02:09:45 +0000</pubDate>
		<dc:creator>cory</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://coryforsyth.com/?p=345</guid>
		<description><![CDATA[I went to the Lean Startup Metrics class on Friday. My notes: Why metrics important. "what gets measured gets done" Avoid biases in judgment. Numbers don't lie. 5 types: vanity, actionable, predictive, cohort, funnel Vanity: impressive but don't really mean anything to your business. Vanity metrics are usually aggregate. Funding is too. It doesn't directly [...]]]></description>
			<content:encoded><![CDATA[<p>I went to the Lean Startup Metrics class on Friday. My notes:
</p><p>
Why metrics important. 
"what gets measured gets done"
Avoid biases in judgment. Numbers don't lie. 
</p><p>
5 types: vanity, actionable, predictive, cohort, funnel
</p><p>
Vanity: impressive but don't really mean anything to your business. 
Vanity metrics are usually aggregate. 
Funding is too. It doesn't directly relate to success (bc funded startups fail all the time)
</p><p>
Actionable. When you measure it you know what to do. Measure the outcomes and see if your hypothesis is holding true. 
You have to agree ahead of time what metric to base success on. 
Cost per acquisition. Find that out early. 
Big data: FB learned that when women update their profile photo men spend more time on the site. And women are more likely to change theirs when they see other women change. You can use this to get men spending more time on site. 
Actionable metrics are per-person metrics. 
</p><p>
Predictive metrics:
Value: What we are doing adds value for customers. 
Net promoter score: "how likely are you to recommend this?" 1-10. 8-10 are promoters, 1-6 are detractors. Promoter - detractor / total. This is the nps. 
This is something that you can compare cross industries and products with. 
</p><p>
Must-have metric: how disappointed would you be if you can't use this product?
You want to see 40% of your users very disappointed. (determined by <a href='http://startup-marketing.com/'>Sean Ellis</a>)
This helps you see if you have something unique. 
</p><p>
FB growth metric: w/in 4 weeks of launching a campus, got 90% of the users
FB value metric: missed it 
</p><p>
Groupon: they started out as a WP blog selling 2-1 pizza coupons. 
</p><p>
Groupon's growth model: paid. Their customer is the business, and they have salespeople to get more businesses to sign up. 
</p><p>
Funnel metrics:
They measure the life cycle of your user. 
AARRR acquisition activation retention referral revenue
Measure how customers move through these stages
 Determine weaknesses. 
</p><p>
Cohort metrics
Segmenting user based on when they joined. 
This helps smooth out seasonal/temporary metrics. 
Kissmetrics. Mixpanel. 
Most startups will have to build custom solutions to capture their metrics, because each startup's important metrics are different. </p>]]></content:encoded>
			<wfw:commentRss>http://coryforsyth.com/2012/05/06/lean-startup-metrics-class-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intro to Lean Customer Development Class Notes</title>
		<link>http://coryforsyth.com/2012/04/14/intro-to-lean-customer-development-class-notes/</link>
		<comments>http://coryforsyth.com/2012/04/14/intro-to-lean-customer-development-class-notes/#comments</comments>
		<pubDate>Sat, 14 Apr 2012 15:14:29 +0000</pubDate>
		<dc:creator>cory</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://coryforsyth.com/?p=330</guid>
		<description><![CDATA[I went to my first Skillshare class last night, Intro to Lean Startup and Customer Development. Very interesting stuff. Here are my notes: Lean Cust Dev Class Two biz purposes: mktg &#038; innovation Find customer for product before you build anything. Lean startup is: pre-marketing Startup def: institution designed to deliver a product under conditions [...]]]></description>
			<content:encoded><![CDATA[I went to my first Skillshare class last night, <a href='http://www.skillshare.com/Intro-to-Lean-Startup-and-Customer-Development-LEAN-101/129202860/1766087766'>Intro to Lean Startup and Customer Development</a>.  Very interesting stuff.  Here are my notes:
<p>
<p>
Lean Cust Dev Class
<p>
Two biz purposes: mktg &#038; innovation 
<p>
Find customer for product before you build anything. 
<p>
Lean startup is: pre-marketing
<p>
Startup def: institution designed to deliver a product under conditions of extreme uncertainty. 
<p>
Startup is all about experimentation and uncertainty. 
<p>
How do you know what the next step is?
<p>
Myth: lean == cheap
Lean is about efficiency, investing just enough to validate assumptions. 
<p>
Myth: lean is only for tech. 
Not so, it's just about experimentation. 
<p>
Lean startup story: grocery delivering where they manually delivered groceries to their alpha customers by hand before building any tech to support, just to make sure that they really were delivering what customers wanted. 
<p>
Why are founders reluctant to ask people about what they think about the idea? 
One reason: they are afraid of someone stealing the idea. Not so, ideas are cheap, execution is the hard part. Validate the assumption!
<p>
Myth: lean replaces vision with data and customer's wants. 
Vision is very important but your strategy (I.e. solution) needs to be responsive and validated. 
<p>
UX how to ask questions do experiments to get useful feedback:
First step: is there a problem worth solving?
The riskiest part of the biz is rarely the solution. 
Don't say: 'here's a solution, do you like it?'
They will say yes for the wrong reasons. 
How do you ask Q's that explore their experience?
"here is a scenario. Have you experienced this? what did you do in this situation?"
How did they actually solve the problem? Ask behavioral questions. 
Need to learn if there is a problem worth solving. 
The word problem is not always the perfect word (in the development of a game, for example). 
<p>
Scientific method. Try to disprove hypotheses. 
<p>
Startups that succeed are the ones that iterate enough before they run out of resources. 
Failure is not bad, it is part of the learning process. Learn from each failure and use that knowledge to pivot to a new iteration. 
<p>
Surveys don't give a lot of info. Qualitative interviews give tons of info. 
<p>
Caveat: in rapid iterations your objective is efficiency in finding product market fit. It's possible to have small enough selections of people that you don't fully validate your assumption (ie you get a false negative).
<p>
Good falsifiable hypothesis: [repeatable action] will produce [measurable outcome]
<p>
When you ask customers questions, you can't rely on what they say.  When people say they will buy X, they will not. (they believe they or someone will, but people don't honestly know themselves that well and aren't that good at predicting their own future behavior). Cf Dan Gilbert quote
<p>
How do you decide the next step?
<p>
Entrepreneurs are too attached to their ideas. Until they give it a chance to see if it will fail, they can't know if it will succeed.
<p>
When you design experiment, start w the single most critical idea. What will break my biz if it is not true? What is most critical and most unknown?
<p>
"get out of the building" and work on validating your ideas. 
<p>
We humans are really good at projecting and experimenting in our heads but bad at predicting others' behavior. 
<p>
Customers don't care about your solution, they care about their problems. -- Dave McClure
<p>
Your obj is to find an early adopter, not a mainstream consumer. 
<p>
The early adopter: a) has the prob you want to solve and b) they are aware of it. [And bonus if c) they already are trying to hack some solution to it]
<p>
You want to find them and build them an MVP. 
<p>
When you have a lot of uncertainty, it doesn't take much more data to reduce it significantly. 
<p>
Surveys assume you know the right questions to ask. -Ash Maurya
<p>
Myth: Customers don't know what they want. 
They *do* but they probably can't articulate it well. So don't ask them what they want, ask what they do (in situations like the problem you are trying to solve).
<p>
MVP are experiments meant to invalidate your riskiest assumption. 
Important not to focus on the word 'product'. It's not necessarily a product. 
<p>
MVP phase 1: talk to people find out how they've solved this problem, see if it's really a problem. 
MVP 2: product pitch. Can be as simple as paper. Show it to someone and ask "would you use this?"
<p>
MVP 3: 'concierge'  build something that is just barely enough to be usable, probably w lots of manual help
Groupon is a good example. They just emailed ppl, printed coupons and sent them to them, to see if ppl would like this. Didn't build any tech. Tested it w PDFs and email. 
'wizard of oz': build a frontend but no tech backend. Example early Charles Schwab wanted to see if ppl would do online trading so they built a frontend for ppl to enter orders but on the backend it was human traders seeing those orders and executing them. 
<p>
Qs:
How to find best ppl to do interviews?
Come up w 'persona', find ppl who fits that persona. 
One type of pivot is 'customer-segment' pivot which is changing to a different customer persona and doing more interviews. ]]></content:encoded>
			<wfw:commentRss>http://coryforsyth.com/2012/04/14/intro-to-lean-customer-development-class-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CTO School Session 4: Recruiting and Hiring</title>
		<link>http://coryforsyth.com/2011/11/09/cto-school-session-4-recruiting-and-hiring/</link>
		<comments>http://coryforsyth.com/2011/11/09/cto-school-session-4-recruiting-and-hiring/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 03:52:49 +0000</pubDate>
		<dc:creator>cory</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://coryforsyth.com/?p=337</guid>
		<description><![CDATA[Vivek Sodera from RapLeaf @vsodera + - recruiting at Rapleaf start out interviewing 25-40 engineers/month, goal was to increase that multiple times pattern recognition by the end: averaging interviewing 1200-1300 engineers per month philosophy: pass over someone good rather than pick someone bad passed candidates were picked up by google, facebook, etc questions + - [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
    .mindmap li { list-style: none; background: none; padding: 0; margin: 0; }
    .mindmap li>ul li { list-style: disc inside none; display: list-item; }
    .mindmap p { margin: 0; }
    .mindmap span.foldopened { color: white; font-size: xx-small;
    border-width: 1; font-family: monospace; padding: 0em 0.25em 0em 0.25em; background: #e0e0e0;
    VISIBILITY: visible;
    cursor:pointer; }



    .mindmap span.foldclosed { color: #666666; font-size: xx-small;
    border-width: 1; font-family: monospace; padding: 0em 0.25em 0em 0.25em; background: #e0e0e0;
    VISIBILITY: hidden;
    cursor:pointer; }

    .mindmap span.foldspecial { color: #666666; font-size: xx-small; border-style: none solid solid none;
    border-color: #CCCCCC; border-width: 1; font-family: sans-serif; padding: 0em 0.1em 0em 0.1em; background: #e0e0e0;
    cursor:pointer; }

    .mindmap span.l { color: red; font-weight: bold; }

    .mindmap a.mapnode:link {text-decoration: none; color: black; }
    .mindmap a.mapnode:visited {text-decoration: none; color: black; }
    .mindmap a.mapnode:active {text-decoration: none; color: black; }
    .mindmap a.mapnode:hover {text-decoration: none; color: black; background: #eeeee0; }
</style>
<script type="text/javascript">
   // Here we implement folding. It works fine with MSIE5.5, MSIE6.0 and
   // Mozilla 0.9.6.

   if (document.layers) {
      //Netscape 4 specific code
      pre = 'document.';
      post = ''; }
   if (document.getElementById) {
      //Netscape 6 specific code
      pre = 'document.getElementById("';
      post = '").style'; }
   if (document.all) {
      //IE4+ specific code
      pre = 'document.all.';
      post = '.style'; }

function layer_exists(layer) {
   try {
      eval(pre + layer + post);
      return true; }
   catch (error) {
      return false; }}

function show_layer(layer) {
   eval(pre + layer + post).position = 'relative'; 
   eval(pre + layer + post).visibility = 'visible'; }

function hide_layer(layer) {
   eval(pre + layer + post).visibility = 'hidden';
   eval(pre + layer + post).position = 'absolute'; }

function hide_folder(folder) {
    hide_folding_layer(folder)
    show_layer('show'+folder);

    scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)
}

function show_folder(folder) {
    // Precondition: all subfolders are folded

    show_layer('hide'+folder);
    hide_layer('show'+folder);
    show_layer('fold'+folder);

    scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)

    var i;
    for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       show_layer('show'+folder+'_'+i); }
}
function show_folder_completely(folder) {
    // Precondition: all subfolders are folded

    show_layer('hide'+folder);
    hide_layer('show'+folder);
    show_layer('fold'+folder);

    scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)

    var i;
    for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       show_folder_completely(folder+'_'+i); }
}



function hide_folding_layer(folder) {
   var i;
   for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       hide_folding_layer(folder+'_'+i); }

   hide_layer('hide'+folder);
   hide_layer('show'+folder);
   hide_layer('fold'+folder);

   scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)
}

function fold_document() {
   var i;
   var folder = '1';
   for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       hide_folder(folder+'_'+i); }
}

function unfold_document() {
   var i;
   var folder = '1';
   for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       show_folder_completely(folder+'_'+i); }
}

</script>

<h3>Vivek Sodera from RapLeaf @vsodera</h3>

<ul class='mindmap'>
<li><span id="show1_1" class="foldclosed" onClick="show_folder('1_1')" style="POSITION: absolute">+</span> <span id="hide1_1" class="foldopened" onClick="hide_folder('1_1')">-</span>
recruiting at Rapleaf
<ul id="fold1_1" style="POSITION: relative; VISIBILITY: visible;"><li>start out interviewing 25-40 engineers/month, goal was to increase that multiple times

</li>
<li>pattern recognition

</li>
<li>by the end: averaging interviewing 1200-1300 engineers per month

</li>
<li>philosophy: pass over someone good rather than pick someone bad
<ul><li>passed candidates were picked up by google, facebook, etc

</li>

</ul>
</li>

</ul>
</li>
<li>questions
<ul><li><p><span id="show1_2" class="foldclosed" onClick="show_folder('1_2')" style="POSITION: absolute">+</span> <span id="hide1_2" class="foldopened" onClick="hide_folder('1_2')">-</span>
how many were/are you trying to hire?
<ul id="fold1_2" style="POSITION: relative; VISIBILITY: visible;"><li>wanted to keep lean, didn't want to drastically effect culture

</li>
<li>hire 1-2 per month

</li>
<li>hiring 1 out of 1000, or 1 out of 1500 people

</li>

</ul><p><span id="show1_3" class="foldclosed" onClick="show_folder('1_3')" style="POSITION: absolute">+</span> <span id="hide1_3" class="foldopened" onClick="hide_folder('1_3')">-</span>
if you know you only want 1-2 people a month (for a total of, say 10-ish), why not sniper and just choose those people and go after them directly?
<ul id="fold1_3" style="POSITION: relative; VISIBILITY: visible;"><li>part of the rejection marketing is to get the word out about the company

</li>
<li>it's not just hiring, it's also marketing for the company

</li>
<li>rejected candidates sometimes ended up becoming customers

</li>

</ul><p><span id="show1_4" class="foldclosed" onClick="show_folder('1_4')" style="POSITION: absolute">+</span> <span id="hide1_4" class="foldopened" onClick="hide_folder('1_4')">-</span>
how many man-hours did you spend on this process?
<ul id="fold1_4" style="POSITION: relative; VISIBILITY: visible;"><li><p>hiring is the most important thing, so that's always their primary focus
<p>not everyone in the company is involved in the recruiting...the first 15 people were, after about 20 hires not everyone was involved
<p>depends on where the company is. When you're small you're going to work your ass off finding people and figuring your process
<p>over time their engineers got much better at pass/failing test results
</li>
</ul><p><span id="show1_5" class="foldclosed" onClick="show_folder('1_5')" style="POSITION: absolute">+</span> <span id="hide1_5" class="foldopened" onClick="hide_folder('1_5')">-</span>
when you were bringing in 1-2k people per month, how many were involved?
<ul id="fold1_5" style="POSITION: relative; VISIBILITY: visible;"><li>the ops specialist who was managing it

</li>
<li>new engineers would get trained on how the process works and to bring in new people

</li>

</ul><p><span id="show1_6" class="foldclosed" onClick="show_folder('1_6')" style="POSITION: absolute">+</span> <span id="hide1_6" class="foldopened" onClick="hide_folder('1_6')">-</span>
what about online contests/games for devs?
<ul id="fold1_6" style="POSITION: relative; VISIBILITY: visible;"><li><p>yeah, useful, but sort of low ROI
<p>helpful if you have a platform you can make available for them to use/learn on
<p>example: they had their own brilliant dev come up with a very difficult problem, and market it around (to ACM entrants, etc)
<ul><li>50% respond, try it out

</li>
<li>got a handful of decent apps

</li>

</ul><p>great to find research-minded thinker types...but if you're small maybe you need a *doer* more importantly
</li>
</ul><p><span id="show1_7" class="foldclosed" onClick="show_folder('1_7')" style="POSITION: absolute">+</span> <span id="hide1_7" class="foldopened" onClick="hide_folder('1_7')">-</span>
q about interns: are they a good use of time?
<ul id="fold1_7" style="POSITION: relative; VISIBILITY: visible;"><li>40% of the interns they ended up hiring full-time

</li>
<li>vetted them well

</li>
<li>summer internship

</li>

</ul><p><span id="show1_8" class="foldclosed" onClick="show_folder('1_8')" style="POSITION: absolute">+</span> <span id="hide1_8" class="foldopened" onClick="hide_folder('1_8')">-</span>
did you ever measure your cost-per-hire
<ul id="fold1_8" style="POSITION: relative; VISIBILITY: visible;"><li>outsourced lead gen was the cheapest by far

</li>

</ul><p><span id="show1_9" class="foldclosed" onClick="show_folder('1_9')" style="POSITION: absolute">+</span> <span id="hide1_9" class="foldopened" onClick="hide_folder('1_9')">-</span>
did you use adsense, facebook ads?
<ul id="fold1_9" style="POSITION: relative; VISIBILITY: visible;"><li>yes...but fb ads didn't do well

</li>
<li>what ended up working was going to conferences (posting little ads above urinals in the bathrooms)

</li>
<li>played with auto-retweeting, auto @mentioning people who say certain things...

</li>

</ul><p><span id="show1_10" class="foldclosed" onClick="show_folder('1_10')" style="POSITION: absolute">+</span> <span id="hide1_10" class="foldopened" onClick="hide_folder('1_10')">-</span>
what's the referral process?
<ul id="fold1_10" style="POSITION: relative; VISIBILITY: visible;"><li><p>at one point giving 10k if the person was hired and stayed for more than 90 days
<p>toned it down to 5k (which was contested)
<p>if you send us someone who passes the first round, you get $20, 2nd round you get $100, etc etc -- didn't get much success from that
</li>
</ul><p><span id="show1_11" class="foldclosed" onClick="show_folder('1_11')" style="POSITION: absolute">+</span> <span id="hide1_11" class="foldopened" onClick="hide_folder('1_11')">-</span>
what was best?
<ul id="fold1_11" style="POSITION: relative; VISIBILITY: visible;"><li>outsourced lead gen

</li>
<li>send very informal emails (lowercase words in subject line)

</li>
<li>a paragraph or two tops...the PS was the call to action

</li>
<li>A/B test up the wazoo

</li>

</ul></li>
</ul>
</li>
<li><span id="show1_12" class="foldclosed" onClick="show_folder('1_12')" style="POSITION: absolute">+</span> <span id="hide1_12" class="foldopened" onClick="hide_folder('1_12')">-</span>
snipering vs shotgunning
<ul id="fold1_12" style="POSITION: relative; VISIBILITY: visible;"><li>snipering
<ul><li>passive candidates

</li>
<li>lots of experience

</li>
<li>looking for vp eng, cto level roles

</li>
<li>number of hires small (1-5)

</li>
<li>outreach via recruiter, referral, phone, email

</li>

</ul>
</li>
<li>want to give the impression that it's hard to get into your company
<ul><li>message is: we want high quality people

</li>

</ul>
</li>
<li>shotgunning
<ul><li>looking for active candidates

</li>
<li>0-10 year experience range

</li>
<li>looking for lower-level positions (software engineer, manager, director)

</li>
<li>large number of target hires (3-100)

</li>
<li>the person who runs this is the operations specialist (they build the machine/funnel)

</li>
<li>need to clearly show what your culture is

</li>
<li>(preferred approach)

</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_13" class="foldclosed" onClick="show_folder('1_13')" style="POSITION: absolute">+</span> <span id="hide1_13" class="foldopened" onClick="hide_folder('1_13')">-</span>
rejection marketing
<ul id="fold1_13" style="POSITION: relative; VISIBILITY: visible;"><li>want to give perception that your company is sought-after and exclusive

</li>
<li>bring as many people into the pipeline as possible

</li>
<li>and reject as many people

</li>
<li>rejectees will tell friends, friends will want to apply to see if they are "up to the challenge"

</li>
<li>increases the number of high-quality organic applicants

</li>
<li>feed the funnel with low-quality candidates (they will get rejected and tell their peers)

</li>

</ul>
</li>
<li><span id="show1_14" class="foldclosed" onClick="show_folder('1_14')" style="POSITION: absolute">+</span> <span id="hide1_14" class="foldopened" onClick="hide_folder('1_14')">-</span>
building a recruiting machine
<ul id="fold1_14" style="POSITION: relative; VISIBILITY: visible;"><li>define and document core values

</li>
<li><span id="show1_14_1" class="foldclosed" onClick="show_folder('1_14_1')" style="POSITION: absolute">+</span> <span id="hide1_14_1" class="foldopened" onClick="hide_folder('1_14_1')">-</span>
modify recruiting/interviewing flow for scalability
<ul id="fold1_14_1" style="POSITION: relative; VISIBILITY: visible;"><li>phone interviews don't scale to this many candidates...hence online tests

</li>
<li>"here is what we would ask you in a phone interview, you have an hour to get back to us"

</li>

</ul>
</li>
<li>hire ops specialist to run the machine
<ul><li>they own this

</li>

</ul>
</li>
<li>outsource menial tasks

</li>
<li>make the copy interesting
<ul><li>no one gets excited by '3.5 years of X, 2 years of Y'

</li>
<li>think of it as a brochure for your company...

</li>

</ul>
</li>
<li>fire recruiters, they suck
<ul><li><p>they are working with X companies, maybe you have a retainer
<p>if they come across a great candidate, they will send their best people to the companies paying the highest commission (which will not be your company)
<p>they all source from the same places, they all have the same candidates
<p>caveat: there are some awesome recruiters (but are very rare0
<p>doesn't like getting candidates from recruiters...they (the candidate) are often lazy...it's a lazy approach to looking for a job
</li>
</ul>
</li>
<li>iterate, iterate

</li>

</ul>
</li>
<li>recruiting channels
<ul><li>outsourced lead generation
<ul><li><p>create a fake linkedin profile
<p>add linkedin open networkers (they have tons of reach)
<p>once your linkedin network is highly expanded, you can find more people
<p>also: odesk...find cheap labor, pay people to go on linkedin and look for types of people, scrape the data...email thousands of those people, see who you can bring in
<p>get those people onto a monthly newsletter so you can keep emailing them
<ul><li>the newsletter was engineering-related

</li>

</ul></li>
</ul>
</li>
<li>direct mail blasts

</li>
<li>content for developers

</li>
<li>social media outreach

</li>
<li>ads/flyers

</li>
<li>university outreach

</li>
<li>distributed job posts

</li>
<li>developer-centric events
<ul><li>events that had free beer/sandwiches, learning opps for developers

</li>

</ul>
</li>
<li>research data sets

</li>

</ul>
</li>

</ul>

<hr />

<h2>Kurt from Intent Media @kurt</h2>

<ul><li>Kurt from Intent Media @kurt
<ul><li>internet ecommerce advertising company

</li>
<li>2.5 yrs old

</li>
<li>42 people

</li>
<li>just raised $20MM

</li>

</ul>
</li>
<li>questions
<ul><li><span id="show1_1" class="foldclosed" onClick="show_folder('1_1')" style="POSITION: absolute">+</span> <span id="hide1_1" class="foldopened" onClick="hide_folder('1_1')">-</span>
what to do if you come in to a startup as CTO and there's a team there that doesn't agree with you?
<ul id="fold1_1" style="POSITION: relative; VISIBILITY: visible;"><li><p>get credibility
<p>look at every set of commits that comes in...comment on them if necessary
<p>(audience suggestion: pair program w/ some of the developers to get familiarity with the code, and respect)
</li>
</ul>
</li>
<li><span id="show1_2" class="foldclosed" onClick="show_folder('1_2')" style="POSITION: absolute">+</span> <span id="hide1_2" class="foldopened" onClick="hide_folder('1_2')">-</span>
approx what team size do you stop being a coding cto?
<ul id="fold1_2" style="POSITION: relative; VISIBILITY: visible;"><li><p>it happened organically
<p>it got to the point where there were so many meetings that he couldn't block out 3- or 4-hour blocks to code
<p>have to make the decision whether you are coding all the time or you are going to protect your engineers from distractions so they can be coding all the time
<p>"I never had a 4-hour block, so it was never worth getting started" on some coding
<p>try to keep engineers out of meetings
</li>
</ul>
</li>
<li><span id="show1_3" class="foldclosed" onClick="show_folder('1_3')" style="POSITION: absolute">+</span> <span id="hide1_3" class="foldopened" onClick="hide_folder('1_3')">-</span>
how should the biz side relate to engineering? what level of communication is appropriate?
<ul id="fold1_3" style="POSITION: relative; VISIBILITY: visible;"><li>they still all work in an open space

</li>
<li>priorities get decided upon by sales, bizdev, chief product officer

</li>
<li>along w/ that, he adds technical thigns like "we need to upgrade rails"

</li>
<li>present the biz folks with a list...this is what we can do...what do you want me to do

</li>

</ul>
</li>
<li><span id="show1_4" class="foldclosed" onClick="show_folder('1_4')" style="POSITION: absolute">+</span> <span id="hide1_4" class="foldopened" onClick="hide_folder('1_4')">-</span>
Q: You &nbsp;have a CTO above you...so what does he do and what do you do?
<ul id="fold1_4" style="POSITION: relative; VISIBILITY: visible;"><li>Kurt handles inward-facing stuff

</li>
<li>CTO handles outward-facing stuff
<ul><li>investor relations

</li>
<li>he's technical, not a technologist

</li>

</ul>
</li>
<li>they have each other's backs

</li>

</ul>
</li>
<li>advice on what to do with an underperforming engineering team and an overbearing demanding biz side?
<ul><li><p>used to work at thoughtworks (agile consulting), they would go into places and consult on agile
<p>there's a 'consulting answer'
<p>in a startup environment, the answer is fire those people
<p>if someone is underperforming, there's no point in saying "let's wait a while and see"
<ul><li>never gone back and said, "glad I waited to get rid of that person"

</li>

</ul><p>along with that, if you come in to an underperforming team and it continues to underperform, it looks bad on you
<p>little more tricky on the biz side of things
</li>
</ul>
</li>
<li>what are other ways you protect your team or other things the team needs protecting from?
<ul><li>protect from: meeting/overhead that you can absorb

</li>
<li>don't let some sales guy go talk to them to get something developed that they need developed

</li>
<li>minimizing distractions

</li>
<li>letting engineering run the show (sort of)

</li>

</ul>
</li>
<li>can you comment on your hiring process vs vivek?
<ul><li><p>part of it is a numbers game
<p>need to get out there, meet people, find people
<p>referrals is a huge part of the way to do it
<p>open-source some of your company code that is not core to your business...people will use it, fork it, develop it...hire those people 
</li>
</ul>
</li>
<li>do you involve engineers in hiring?
<ul><li>yes

</li>
<li>multiple interviews, multiple tech interviews, a non-tech interview

</li>
<li>have recruiters in-house

</li>

</ul>
</li>

</ul>
</li>
<li>one of the first employees -- in charge of creating a dev team
<ul><li>half engineering/qa/data science

</li>

</ul>
</li>
<li><span id="show1_5" class="foldclosed" onClick="show_folder('1_5')" style="POSITION: absolute">+</span> <span id="hide1_5" class="foldopened" onClick="hide_folder('1_5')">-</span>
culture
<ul id="fold1_5" style="POSITION: relative; VISIBILITY: visible;"><li>if you have an engineering culture it has to permeate the entire company
<ul><li>can't just be siloed to the dev side

</li>

</ul>
</li>
<li>they work on 2-week iterations, releasing 4x a week

</li>
<li>there's a company meeting every tuesday...very open
<ul><li>the biz people explain how they are goign to close a deal this week

</li>
<li>then if it doesn't close that week they explain why the following week

</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_6" class="foldclosed" onClick="show_folder('1_6')" style="POSITION: absolute">+</span> <span id="hide1_6" class="foldopened" onClick="hide_folder('1_6')">-</span>
first steps
<ul id="fold1_6" style="POSITION: relative; VISIBILITY: visible;"><li>make it a strong engineering culture

</li>
<li>the first 2,3,4 hires really set the tone. they are important

</li>
<li>first hire needs to be a tech guy, needs to be a doer

</li>

</ul>
</li>
<li><span id="show1_7" class="foldclosed" onClick="show_folder('1_7')" style="POSITION: absolute">+</span> <span id="hide1_7" class="foldopened" onClick="hide_folder('1_7')">-</span>
coming in to a new situation
<ul id="fold1_7" style="POSITION: relative; VISIBILITY: visible;"><li>if you come into a place that is in a bad situation

</li>
<li>need to change engineering, force people to write tests, write good code

</li>
<li>all the consultants except for one fired themselves

</li>
<li>"this is an engineering company, engineering always has a say"

</li>
<li>can't let biz or sales guys run over the engineering

</li>
<li>have to constantly broadcast information
<ul><li>whole company needs to know where the build is

</li>
<li>what's coming down the pipeline

</li>
<li>make it clear to see what the tradeoffs are

</li>

</ul>
</li>
<li>if you are one of the first...at some point you are not an engineer anymore, you are overhead
<ul><li><p>your job is to make it so that the engineers can write code (unimpeded)
<p>when the CTO is trying to write code, there's no air cover for the rest of the engineers, they are vulnerable to biz folks sneaking in requests, distractions, etc
</li>
</ul>
</li>

</ul>
</li>
<li><span id="show1_8" class="foldclosed" onClick="show_folder('1_8')" style="POSITION: absolute">+</span> <span id="hide1_8" class="foldopened" onClick="hide_folder('1_8')">-</span>
hiring
<ul id="fold1_8" style="POSITION: relative; VISIBILITY: visible;"><li>at an early stage, when you really need to hire, you can't always get the perfect person

</li>
<li><span id="show1_8_1" class="foldclosed" onClick="show_folder('1_8_1')" style="POSITION: absolute">+</span> <span id="hide1_8_1" class="foldopened" onClick="hide_folder('1_8_1')">-</span>
you need to build to your team's strength
<ul id="fold1_8_1" style="POSITION: relative; VISIBILITY: visible;"><li>e.g. he likes ruby, they built first stuff in ruby

</li>
<li>for the backend ad server, they could only find java guys to hire, so they built in java

</li>

</ul>
</li>
<li><span id="show1_8_2" class="foldclosed" onClick="show_folder('1_8_2')" style="POSITION: absolute">+</span> <span id="hide1_8_2" class="foldopened" onClick="hide_folder('1_8_2')">-</span>
need to keep people challenged
<ul id="fold1_8_2" style="POSITION: relative; VISIBILITY: visible;"><li>don't let people get bored

</li>
<li>if they get bored, they will leave

</li>
<li>have to let engineers be engineers

</li>
<li>if you lose a couple of really good people, it is a waterfall from there on out

</li>
<li>anyone here (in this room) can walk out the door and find 10 new job offers for more money

</li>

</ul>
</li>
<li>he brought in people he worked with before, they all knew they would work together well

</li>

</ul>
</li>
<li><span id="show1_9" class="foldclosed" onClick="show_folder('1_9')" style="POSITION: absolute">+</span> <span id="hide1_9" class="foldopened" onClick="hide_folder('1_9')">-</span>
development
<ul id="fold1_9" style="POSITION: relative; VISIBILITY: visible;"><li><p>allow engineers to code
<p>every afternoon has time blocked out when no one is allowed to talk to engineers so that they can work
<p><span id="show1_9_1" class="foldclosed" onClick="show_folder('1_9_1')" style="POSITION: absolute">+</span> <span id="hide1_9_1" class="foldopened" onClick="hide_folder('1_9_1')">-</span>
be constantly refining how things are done
<ul id="fold1_9_1" style="POSITION: relative; VISIBILITY: visible;"><li><p>have an engineering/product retrospective every six weeks where we sit down and talk about what's wrong and how it can be made better
<p>sometime that's "there are too many meetings"
<p>sometimes it's "this bizdev person keeps bothering me with requests"
<p>important thing is to have the input/feedback loop and keep building the culture toward what you want it to be
</li>
</ul><p>keep asking: does this feel right?
<ul><li>you have to keep defending what you are there to do

</li>

</ul></li>
</ul>
</li>

</ul>]]></content:encoded>
			<wfw:commentRss>http://coryforsyth.com/2011/11/09/cto-school-session-4-recruiting-and-hiring/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CTO School Session 3: Peter Bell</title>
		<link>http://coryforsyth.com/2011/11/03/cto-school-v3/</link>
		<comments>http://coryforsyth.com/2011/11/03/cto-school-v3/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 04:02:38 +0000</pubDate>
		<dc:creator>cory</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://coryforsyth.com/?p=331</guid>
		<description><![CDATA[I was lucky enough to make session 3 of CTO School tonight, where Peter Bell, CTO of Skinn.io, spoke about Project Management, Quality Assurance, Estimation, user stories, metrics-driven development, and more. As I've come to expect, it was a very informative and thought-provoking session. I'm looking forward to the next one. Here are my notes: [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
    .mindmap li { list-style: none; background: none; padding: 0; margin: 0; }
    .mindmap li>ul li { list-style: disc inside none; display: list-item; }
    .mindmap p { margin: 0; }
    .mindmap span.foldopened { color: white; font-size: xx-small;
    border-width: 1; font-family: monospace; padding: 0em 0.25em 0em 0.25em; background: #e0e0e0;
    VISIBILITY: visible;
    cursor:pointer; }


    .mindmap span.foldclosed { color: #666666; font-size: xx-small;
    border-width: 1; font-family: monospace; padding: 0em 0.25em 0em 0.25em; background: #e0e0e0;
    VISIBILITY: hidden;
    cursor:pointer; }

    .mindmap span.foldspecial { color: #666666; font-size: xx-small; border-style: none solid solid none;
    border-color: #CCCCCC; border-width: 1; font-family: sans-serif; padding: 0em 0.1em 0em 0.1em; background: #e0e0e0;
    cursor:pointer; }

    .mindmap span.l { color: red; font-weight: bold; }

    .mindmap a.mapnode:link {text-decoration: none; color: black; }
    .mindmap a.mapnode:visited {text-decoration: none; color: black; }
    .mindmap a.mapnode:active {text-decoration: none; color: black; }
    .mindmap a.mapnode:hover {text-decoration: none; color: black; background: #eeeee0; }
</style>
<script type="text/javascript">
   // Here we implement folding. It works fine with MSIE5.5, MSIE6.0 and
   // Mozilla 0.9.6.

   if (document.layers) {
      //Netscape 4 specific code
      pre = 'document.';
      post = ''; }
   if (document.getElementById) {
      //Netscape 6 specific code
      pre = 'document.getElementById("';
      post = '").style'; }
   if (document.all) {
      //IE4+ specific code
      pre = 'document.all.';
      post = '.style'; }

function layer_exists(layer) {
   try {
      eval(pre + layer + post);
      return true; }
   catch (error) {
      return false; }}

function show_layer(layer) {
   eval(pre + layer + post).position = 'relative'; 
   eval(pre + layer + post).visibility = 'visible'; }

function hide_layer(layer) {
   eval(pre + layer + post).visibility = 'hidden';
   eval(pre + layer + post).position = 'absolute'; }

function hide_folder(folder) {
    hide_folding_layer(folder)
    show_layer('show'+folder);

    scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)
}

function show_folder(folder) {
    // Precondition: all subfolders are folded

    show_layer('hide'+folder);
    hide_layer('show'+folder);
    show_layer('fold'+folder);

    scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)

    var i;
    for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       show_layer('show'+folder+'_'+i); }
}
function show_folder_completely(folder) {
    // Precondition: all subfolders are folded

    show_layer('hide'+folder);
    hide_layer('show'+folder);
    show_layer('fold'+folder);

    scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)

    var i;
    for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       show_folder_completely(folder+'_'+i); }
}



function hide_folding_layer(folder) {
   var i;
   for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       hide_folding_layer(folder+'_'+i); }

   hide_layer('hide'+folder);
   hide_layer('show'+folder);
   hide_layer('fold'+folder);

   scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)
}

function fold_document() {
   var i;
   var folder = '1';
   for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       hide_folder(folder+'_'+i); }
}

function unfold_document() {
   var i;
   var folder = '1';
   for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       show_folder_completely(folder+'_'+i); }
}

</script>

<p>
I was lucky enough to make session 3 of <a href='http://nextny.org/w/page/26401962/CTOSchool'>CTO School</a> tonight, where Peter Bell, CTO of <a href='http://skinnio.com/universe'>Skinn.io</a>, spoke about Project Management, Quality Assurance, Estimation, user stories, metrics-driven development, and more.  As I've come to expect, it was a very informative and thought-provoking session. I'm looking forward to the next one. Here are my notes:
</p>

<div class='mindmap'>
  <ul><li><span id="show1_1" class="foldclosed" onClick="show_folder('1_1')" style="POSITION: absolute">+</span> <span id="hide1_1" class="foldopened" onClick="hide_folder('1_1')">-</span>
  metrics-driven development
  <ul id="fold1_1" style="POSITION: relative; VISIBILITY: visible;"><li>be willing to pull out a feature when it isn't working

  </li>
  <li>book: continuous delivery

  </li>

  </ul>
  </li>
  <li><span id="show1_2" class="foldclosed" onClick="show_folder('1_2')" style="POSITION: absolute">+</span> <span id="hide1_2" class="foldopened" onClick="hide_folder('1_2')">-</span>
  deployment
  <ul id="fold1_2" style="POSITION: relative; VISIBILITY: visible;"><li>continuous deployment
  <ul><li>automated unit/acceptance tests

  </li>
  <li>also biz metrics tests
  <ul><li>if orders/day decreases significantly, rollback

  </li>

  </ul>
  </li>
  <li>perf tests
  <ul><li>after deploying, look to see if common user behviors are taking longer than normal. if so, rollback

  </li>

  </ul>
  </li>

  </ul>
  </li>
  <li>when do you do this perf/biz metric testing?
  <ul><li>when the pain of not doing it exceeds the pain of adding new features

  </li>
  <li>"probably not before you hit product market fit"

  </li>

  </ul>
  </li>

  </ul>
  </li>
  <li><span id="show1_3" class="foldclosed" onClick="show_folder('1_3')" style="POSITION: absolute">+</span> <span id="hide1_3" class="foldopened" onClick="hide_folder('1_3')">-</span>
  pivots &amp; rewrites
  <ul id="fold1_3" style="POSITION: relative; VISIBILITY: visible;"><li>it's gonna happen

  </li>
  <li>need to think heavily about what tech to use...don't over-scale early

  </li>
  <li>neil ford: "if you add a feature early, you are incurring tech debt"
  <ul><li><p>ex: pull in info about twitter friends/followers
  <p>perfect fit for async msg queue
  <p>however, start by doing it sync -- takes a few seconds, but no real pain point there until more load, so don't change it yet
  <p>"what is the simplest thing that will work"
  <p>if you put in a hacky solution, put enough tests around it to avoid breaking the whole system (and reduce the fear of refctoring)
  </li>
  </ul>
  </li>

  </ul>
  </li>
  <li><span id="show1_4" class="foldclosed" onClick="show_folder('1_4')" style="POSITION: absolute">+</span> <span id="hide1_4" class="foldopened" onClick="hide_folder('1_4')">-</span>
  user stories
  <ul id="fold1_4" style="POSITION: relative; VISIBILITY: visible;"><li><p>1/2 the room is using user stories (~ 15-20 people)
  <p>As a 'role' I want 'feature' so that 'benefit'
  <p>if you can't come up with a reason for a user to use that feature, they are probably not going to use it (don't build it!)
  <p>INVEST
  <ul><li><p>I-independent
  <p>N-negotiable (if you can't fit all the info on a 4x6 card, get a bigger sharpie and a smaller card (you are doing too much)
  <p>V-valuable 
  <ul><li>if it doesn't have a benefit, don't do it.

  </li>
  <li>If you can't clearly articulate the benefit, don't do it

  </li>
  <li>two types of feature ideas
  <ul><li>one type you think of offhand and then forget about it

  </li>
  <li>the other type bugs you every time you use the system, everyone clamors for it
  <ul><li>those are the ones you should build

  </li>

  </ul>
  </li>

  </ul>
  </li>

  </ul><p>E-estimable
  <ul><li>needs to be clear that we can figure out how to do it

  </li>
  <li>if it's not estimable, maybe it's a spike

  </li>

  </ul><p>S-small
  <ul><li>break things down...good size of story is 'half a day'

  </li>

  </ul><p>T-testable
  </li>
  </ul></li>
  </ul>
  </li>
  <li><span id="show1_5" class="foldclosed" onClick="show_folder('1_5')" style="POSITION: absolute">+</span> <span id="hide1_5" class="foldopened" onClick="hide_folder('1_5')">-</span>
  user story decomposition
  <ul id="fold1_5" style="POSITION: relative; VISIBILITY: visible;"><li>tracer bullets - not tasks

  </li>
  <li>decompose into something that a business user can test
  <ul><li>not necessarily something releasable

  </li>
  <li>ex: registration system
  <ul><li><p>hardcore--lots of steps, health care, etc etc
  <p>start with the simplest thing (first/last/email/password) now I know who you are
  <p>so simple it won't even validate these things...just laying out a form with a message. (first story)
  <ul><li><p>now it's something a biz user can test! "yes, I like that message" or "no, that message is wrong" etc
  </li>
  </ul><p>now going to require validation (next story)
  <ul><li><p>automated test: make it ID-based (look for #registrationError). Don't make it check for a string...too brittle, that string may change
  </li>
  </ul><p>now add one more screen with some healthcare info (next story)
  <p>at each point ask, "is this an MVP," could we release here?
  <p>this way new stuff is available for internal biz users to view and test on a daily or near-daily basis
  </li>
  </ul>
  </li>
  <li>'happy path'

  </li>
  <li>add validation

  </li>
  <li>add data

  </li>
  <li>add robustness

  </li>
  <li>ex: algorithm:
  <ul><li>what's the simplest algo to write that can do something useful
  <ul><li>something that just returns a 0 or 1, maybe, rather than the full prediction value

  </li>

  </ul>
  </li>
  <li>then what's the simplest improvement you could make?

  </li>
  <li>repeat

  </li>

  </ul>
  </li>

  </ul>
  </li>

  </ul>
  </li>
  <li><span id="show1_6" class="foldclosed" onClick="show_folder('1_6')" style="POSITION: absolute">+</span> <span id="hide1_6" class="foldopened" onClick="hide_folder('1_6')">-</span>
  questions
  <ul id="fold1_6" style="POSITION: relative; VISIBILITY: visible;"><li><p>institutional memory -- how do we make sure we keep the deep knowledge behind something available
  <ul><li>the problem is, most institutional memory has alzheimers...

  </li>
  <li>the info is on a wiki

  </li>
  <li>but the wiki gets out of date

  </li>
  <li>our institutional memory becomes misleading

  </li>

  </ul><p>what acceptance test do you recommend?
  <ul><li><p>they use rspec
  <p>committed the pretty-print rspec html output and made it available for everyone in the company to see, so they know what's up
  </li>
  </ul><p><span id="show1_6_1" class="foldclosed" onClick="show_folder('1_6_1')" style="POSITION: absolute">+</span> <span id="hide1_6_1" class="foldopened" onClick="hide_folder('1_6_1')">-</span>
  when you are small, getting all stakeholders to sit down and agree on everything itself becomes an overhead...?
  <ul id="fold1_6_1" style="POSITION: relative; VISIBILITY: visible;"><li>yes, all process is an overhead

  </li>
  <li>ex: daily standup: what did I do yesterday, what am I doing today, what's blocking me?

  </li>
  <li>you can use an event to drive process
  <ul><li>let's get beers tonight and make a decision about the specs

  </li>

  </ul>
  </li>

  </ul><p>can you give ideas for product roadmapping?
  <ul><li>i like eric ries' definition of a lean startup
  <ul><li>a human institution developing products or services under conditions of extreme uncertainty
  <ul><li>intuit even decided they were a lean startup

  </li>

  </ul>
  </li>

  </ul>
  </li>
  <li>how much uncertainty do you have?
  <ul><li><p>if your customers are signing up for v17 of your software and they're expecting a roadmap and you're expecting them to stick around for a long time, maybe they need it
  </li>
  </ul>
  </li>

  </ul><p>does a roadmap have to be a fixed direction, or can it be a set point? ( a vision)
  <ul><li><p>assumption: no one is creating a blind startup
  <ul><li><p>== a startup that makes a 2-year roadmap, follows it no matter what anyone says, and checks to see if they are relevant at the end of 2 years
  </li>
  </ul><p>what's the value of having a roadmap, knowing that you are in an uncertain world, knowing thigns will change?
  <p>diff b/w vision and roadmp.
  <ul><li>vision: "we are going to staten island"

  </li>
  <li>roadmap: "this is how we are going to get there"

  </li>

  </ul></li>
  </ul><p>reality: VCs are paying for our dev time...THEY want to know what we'll be building for next 3 months
  <p>comment: any planning past 6 months goes nowhere...we plan for 3 months (and can usually hit it), but plans for 6-months+ never happen. and these are guys that manage 500+person orgs with millions of dollars behind them. And they had predictable businesses with established pipelines
  </li>
  </ul>
  </li>
  <li><span id="show1_7" class="foldclosed" onClick="show_folder('1_7')" style="POSITION: absolute">+</span> <span id="hide1_7" class="foldopened" onClick="hide_folder('1_7')">-</span>
  iterations
  <ul id="fold1_7" style="POSITION: relative; VISIBILITY: visible;"><li>1/4 doing 2-week iterations
  <ul><li>1-week iterations are awesome if you can keep the pace up

  </li>
  <li>the world is moving toward 2-week iterations

  </li>
  <li>month is really long these days

  </li>

  </ul>
  </li>
  <li>kanban-based approach
  <ul><li>you have some kind of backlog (stuff to do "next")
  <ul><li>this comes out of manufacturing

  </li>

  </ul>
  </li>
  <li>you focus on limiting work in progress
  <ul><li><p>goal is to minimize cycle time
  <p>in manufacturing, thngs half-built are worth nothing (you don't get paid until you ship *completed* cars)
  <p>same with programming...all half-finished features add 0 value to biz...kanban says: let's get the NEXT feature done as fast as possible, and get it out
  </li>
  </ul>
  </li>

  </ul>
  </li>
  <li>iterations v kanban
  <ul><li>when an organization has little structure, iterations can be good
  <ul><li>because they force you to focus for a few weeks

  </li>

  </ul>
  </li>
  <li>kanban can help you, too, because it makes you focus on just one thing 

  </li>
  <li>books
  <ul><li>lean software development (from 2003)

  </li>

  </ul>
  </li>

  </ul>
  </li>

  </ul>
  </li>
  <li><span id="show1_8" class="foldclosed" onClick="show_folder('1_8')" style="POSITION: absolute">+</span> <span id="hide1_8" class="foldopened" onClick="hide_folder('1_8')">-</span>
  estimation
  <ul id="fold1_8" style="POSITION: relative; VISIBILITY: visible;"><li>why estimate at all?
  <ul><li>cost go/no-go (if this takes 3 weeks to build, we can't do it.

  </li>
  <li>market window
  <ul><li> if it takes 6 weeks but it's necessary for somethign happening in 3 weeks, don't build it)

  </li>

  </ul>
  </li>
  <li>ROI comparison

  </li>
  <li>not just "because" -- use estimation if it helps you

  </li>

  </ul>
  </li>
  <li>time, price or both?
  <ul><li>most of the time it matters how much or how long it will take

  </li>
  <li>sometimes it doesn't matter how much it costs (within reason)

  </li>
  <li>worth knowing which is most important (can spend more to dev fast, versus dev slow but save money)

  </li>
  <li>what's successful -- 5% over time budget but 1000s use it, or 5% early but no one uses it?
  <ul><li>if you need estimates granularly at wildly accurate numbers, something is not right

  </li>

  </ul>
  </li>
  <li>ideal days:
  <ul><li>problem with using ideal days is not every day is ideal (meetings, installing software, etc etc)

  </li>

  </ul>
  </li>
  <li>story points
  <ul><li><p>1,2,5,epic
  <ul><li>split epic into smaller amounts

  </li>

  </ul><p>people always ask "how many hours is a point"? so use ideal days when you're just starting
  <p>to get over the hump, just use ideal days and drop the days. 3 ideal days = 3 points
  <p>don't allow 0-point cards
  <ul><li>because you can end up with 100 0-point tickets and everyone expects it to happen immediately

  </li>
  <li>roll up multiple small ones into a 1-point story

  </li>

  </ul><p>problem with using larger numbers (10,20,50) is people will end up saying "oh, 47.5"...no one can be that precise
  <ul><li>small story points numbers makes people not estimate so granularly

  </li>

  </ul><p>t-shirt sizes (small, medium or large)
  </li>
  </ul>
  </li>

  </ul>
  </li>

  </ul>
  </li>
  <li><span id="show1_9" class="foldclosed" onClick="show_folder('1_9')" style="POSITION: absolute">+</span> <span id="hide1_9" class="foldopened" onClick="hide_folder('1_9')">-</span>
  quality assurance
  <ul id="fold1_9" style="POSITION: relative; VISIBILITY: visible;"><li>automated tests
  <ul><li>unit

  </li>
  <li>integration

  </li>
  <li>acceptance

  </li>

  </ul>
  </li>
  <li>build in quality
  <ul><li>you don't improve quality by doing more inspection
  <ul><li>best way to improve software quality is not to do more QA
  <ul><li>although you do still need that

  </li>

  </ul>
  </li>

  </ul>
  </li>
  <li>two important things:
  <ul><li>build in quality by writing automated acceptance tests

  </li>
  <li>do qa before you write the code
  <ul><li>Test-driven development

  </li>

  </ul>
  </li>

  </ul>
  </li>
  <li>if you have a QA resource (tester, manager, whomever)
  <ul><li>bring them into the meeting when you spec the feature...ask them how they would break/test it

  </li>
  <li>write down what they say...that's one of your automated acceptance tests

  </li>

  </ul>
  </li>

  </ul>
  </li>
  <li>what to do if you get a legacy codebase with no test coverage or lousy coverage
  <ul><li><p>very first thing: make sure the developers know *how* to write tests (get a consultant, figure it out, whatever you need to do)
  <p>every time you get a bug, WRITE A FAILING TEST
  <ul><li>you will start getting clusters of tests in the important parts of your app

  </li>

  </ul><p>every time you tweak a method, write a test or two
  <ul><li>the boyscout method...leave the code cleaner than when you got there

  </li>

  </ul></li>
  </ul>
  </li>
  <li>it's ok to not have code coverage in certain places, too
  <ul><li><p>you might have code you know you're going to throw away in a week
  <p>write tests for the parts that scare you, that you don't know well how they work or think they'll break
  <p>write tests for the critical parts of your codebase
  </li>
  </ul>
  </li>

  </ul>
  </li>
  <li><span id="show1_10" class="foldclosed" onClick="show_folder('1_10')" style="POSITION: absolute">+</span> <span id="hide1_10" class="foldopened" onClick="hide_folder('1_10')">-</span>
  pair programming
  <ul id="fold1_10" style="POSITION: relative; VISIBILITY: visible;"><li>having a pair is about 15% less efficient than two people programming separately

  </li>
  <li>but there are 20% fewer defects/bugs that way

  </li>
  <li>ends up being roughly a wash, efficiency-wise and much better code

  </li>

  </ul>
  </li>

  </ul><SCRIPT type="text/javascript">
  fold_document();
  </SCRIPT>
</div>]]></content:encoded>
			<wfw:commentRss>http://coryforsyth.com/2011/11/03/cto-school-v3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CTO School Session 1: Being the Tech Leader</title>
		<link>http://coryforsyth.com/2011/10/12/cto-school-session-1-being-the-tech-leader/</link>
		<comments>http://coryforsyth.com/2011/10/12/cto-school-session-1-being-the-tech-leader/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 15:51:55 +0000</pubDate>
		<dc:creator>cory</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://coryforsyth.com/?p=320</guid>
		<description><![CDATA[I went to CTO School Session 1 on Monday night. Charlie O'Donnell interviewed Mark Uhrmacher, CTO of Ideeli. I was in the back of the room and couldn't hear all that well but I used FreeMind to make a mindmap of what I did hear. These are my notes: + - hiring distributed ok timeshift [...]]]></description>
			<content:encoded><![CDATA[I went to <a href='http://nextny.org/w/page/26401962/CTOSchool'>CTO School Session 1</a> on Monday night.  <a href='http://www.thisisgoingtobebig.com/'>Charlie O'Donnell</a> interviewed Mark Uhrmacher, CTO of <a href='http://www.ideeli.com/welcome'>Ideeli</a>. I was in the back of the room and couldn't hear all that well but I used <a href='http://freemind.sourceforge.net/wiki/index.php/Main_Page'>FreeMind</a> to make a mindmap of what I did hear.  These are my notes:

<style type="text/css">
    #mindmap li { list-style: none; background: none; padding: 0; margin: 0; }
    #mindmap li>ul li { list-style: disc inside none; display: list-item; }
    #mindmap p { margin: 0; }
    #mindmap span.foldopened { color: white; font-size: xx-small;
    border-width: 1; font-family: monospace; padding: 0em 0.25em 0em 0.25em; background: #e0e0e0;
    VISIBILITY: visible;
    cursor:pointer; }


    #mindmap span.foldclosed { color: #666666; font-size: xx-small;
    border-width: 1; font-family: monospace; padding: 0em 0.25em 0em 0.25em; background: #e0e0e0;
    VISIBILITY: hidden;
    cursor:pointer; }

    #mindmap span.foldspecial { color: #666666; font-size: xx-small; border-style: none solid solid none;
    border-color: #CCCCCC; border-width: 1; font-family: sans-serif; padding: 0em 0.1em 0em 0.1em; background: #e0e0e0;
    cursor:pointer; }

    #mindmap span.l { color: red; font-weight: bold; }

    #mindmap a.mapnode:link {text-decoration: none; color: black; }
    #mindmap a.mapnode:visited {text-decoration: none; color: black; }
    #mindmap a.mapnode:active {text-decoration: none; color: black; }
    #mindmap a.mapnode:hover {text-decoration: none; color: black; background: #eeeee0; }
</style>

<script type="text/javascript">
   // Here we implement folding. It works fine with MSIE5.5, MSIE6.0 and
   // Mozilla 0.9.6.

   if (document.layers) {
      //Netscape 4 specific code
      pre = 'document.';
      post = ''; }
   if (document.getElementById) {
      //Netscape 6 specific code
      pre = 'document.getElementById("';
      post = '").style'; }
   if (document.all) {
      //IE4+ specific code
      pre = 'document.all.';
      post = '.style'; }

function layer_exists(layer) {
   try {
      eval(pre + layer + post);
      return true; }
   catch (error) {
      return false; }}

function show_layer(layer) {
   eval(pre + layer + post).position = 'relative'; 
   eval(pre + layer + post).visibility = 'visible'; }

function hide_layer(layer) {
   eval(pre + layer + post).visibility = 'hidden';
   eval(pre + layer + post).position = 'absolute'; }

function hide_folder(folder) {
    hide_folding_layer(folder)
    show_layer('show'+folder);

    scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)
}

function show_folder(folder) {
    // Precondition: all subfolders are folded

    show_layer('hide'+folder);
    hide_layer('show'+folder);
    show_layer('fold'+folder);

    scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)

    var i;
    for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       show_layer('show'+folder+'_'+i); }
}
function show_folder_completely(folder) {
    // Precondition: all subfolders are folded

    show_layer('hide'+folder);
    hide_layer('show'+folder);
    show_layer('fold'+folder);

    scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)

    var i;
    for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       show_folder_completely(folder+'_'+i); }
}



function hide_folding_layer(folder) {
   var i;
   for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       hide_folding_layer(folder+'_'+i); }

   hide_layer('hide'+folder);
   hide_layer('show'+folder);
   hide_layer('fold'+folder);

   scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)
}

function fold_document() {
   var i;
   var folder = '1';
   for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       hide_folder(folder+'_'+i); }
}

function unfold_document() {
   var i;
   var folder = '1';
   for (i=1; layer_exists('fold'+folder+'_'+i); ++i) {
       show_folder_completely(folder+'_'+i); }
}

</script>
<div id='mindmap'>
<ul><li><span id="show1_1" class="foldclosed" onClick="show_folder('1_1')" style="POSITION: absolute">+</span> <span id="hide1_1" class="foldopened" onClick="hide_folder('1_1')">-</span>
hiring
<ul id="fold1_1" style="POSITION: relative; VISIBILITY: visible;"><li>distributed ok
<ul><li>timeshift

</li>
<li>mumbai, canada, ukraine, us, spain etc

</li>

</ul>
</li>
<li>look for people who can think at all levels of stack

</li>
<li>ask lots of technical questions fast and furious

</li>

</ul>
</li>
<li><span id="show1_2" class="foldclosed" onClick="show_folder('1_2')" style="POSITION: absolute">+</span> <span id="hide1_2" class="foldopened" onClick="hide_folder('1_2')">-</span>
key technology decisions
<ul id="fold1_2" style="POSITION: relative; VISIBILITY: visible;"><li>chose Rails (early on)
<ul><li>max dev productivity

</li>

</ul>
</li>
<li>no time to rewrite
<ul><li>two modes: what sticks? and omg it's working

</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_3" class="foldclosed" onClick="show_folder('1_3')" style="POSITION: absolute">+</span> <span id="hide1_3" class="foldopened" onClick="hide_folder('1_3')">-</span>
dev methodology
<ul id="fold1_3" style="POSITION: relative; VISIBILITY: visible;"><li>2-week sprints
<ul><li>keeps QA in sync w/out drifting

</li>

</ul>
</li>
<li>no religious philosophy

</li>

</ul>
</li>
<li><span id="show1_4" class="foldclosed" onClick="show_folder('1_4')" style="POSITION: absolute">+</span> <span id="hide1_4" class="foldopened" onClick="hide_folder('1_4')">-</span>
biz-minded CEOs who don't understand tech
<ul id="fold1_4" style="POSITION: relative; VISIBILITY: visible;"><li>how to provide visibility to non-technical CEO?

</li>
<li>agile methodology helps b/c short timeframes
<ul><li>short timeframes: less deviation b/w biz side and tech realization

</li>

</ul>
</li>
<li>have to appreciate you have a better understanding of the tech
<ul><li>set expectations and beat them slightly

</li>
<li>if someone asks for the impossible, say it's impossible

</li>

</ul>
</li>
<li>be transparent
<ul><li>"share your risk"
<ul><li>here's what at stake

</li>
<li>here are the tradeoffs

</li>
<li>becomes join risk/decision

</li>

</ul>
</li>
<li>engineers have a tendency to want to please
<ul><li>keep that in check

</li>
<li>you are managing for shareholder value

</li>

</ul>
</li>

</ul>
</li>
<li>being the best technologist is not a requirement for a CTO
<ul><li>communication is the key thing

</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_5" class="foldclosed" onClick="show_folder('1_5')" style="POSITION: absolute">+</span> <span id="hide1_5" class="foldopened" onClick="hide_folder('1_5')">-</span>
how does structure of org change over time?
<ul id="fold1_5" style="POSITION: relative; VISIBILITY: visible;"><li>QA:
<ul><li>outsourced in phillipines, india

</li>
<li>never as automated as he would like

</li>
<li>they do full regression tests

</li>

</ul>
</li>
<li>product manager
<ul><li>hired at 10 people

</li>
<li>while rebuilding UI

</li>
<li>actually needed someone w/ good proJECT mgmt skills to corral different aspects

</li>

</ul>
</li>
<li>outsourced, distributed dev team
<ul><li>program mgmt becomes more important
<ul><li>program v product v project

</li>
<li>program: set of projects. mixture of product and project

</li>
<li>requirements gathering, feature definition, herding cats

</li>

</ul>
</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_6" class="foldclosed" onClick="show_folder('1_6')" style="POSITION: absolute">+</span> <span id="hide1_6" class="foldopened" onClick="hide_folder('1_6')">-</span>
any conflict about who is managing developers? (product v cto v ?)
<ul id="fold1_6" style="POSITION: relative; VISIBILITY: visible;"><li>did not happen

</li>
<li>could happen where people are more naive about dev process

</li>

</ul>
</li>
<li><span id="show1_7" class="foldclosed" onClick="show_folder('1_7')" style="POSITION: absolute">+</span> <span id="hide1_7" class="foldopened" onClick="hide_folder('1_7')">-</span>
at what point did developers become managers?
<ul id="fold1_7" style="POSITION: relative; VISIBILITY: visible;"><li>first dev became manager, was doing both, started to flame out

</li>
<li>hired head of development to replace him, moved him to architecture manager

</li>
<li>organization truck number:
<ul><li>how many people have to get hit by a truck before you are dead in the water?

</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_8" class="foldclosed" onClick="show_folder('1_8')" style="POSITION: absolute">+</span> <span id="hide1_8" class="foldopened" onClick="hide_folder('1_8')">-</span>
how much do you think about developing roles?
<ul id="fold1_8" style="POSITION: relative; VISIBILITY: visible;"><li>cool think about growth companies is they are ruthlessly merit-driven

</li>
<li>lots of room at the top

</li>
<li>if your skills exceed your years, this is the place to be

</li>
<li>no need to "pay your dues"

</li>

</ul>
</li>
<li><span id="show1_9" class="foldclosed" onClick="show_folder('1_9')" style="POSITION: absolute">+</span> <span id="hide1_9" class="foldopened" onClick="hide_folder('1_9')">-</span>
how do you find a peer group of other managers?
<ul id="fold1_9" style="POSITION: relative; VISIBILITY: visible;"><li>there is a CTO club in nyc
<ul><li>range from technical people to great managers

</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_10" class="foldclosed" onClick="show_folder('1_10')" style="POSITION: absolute">+</span> <span id="hide1_10" class="foldopened" onClick="hide_folder('1_10')">-</span>
characteristics of good hires
<ul id="fold1_10" style="POSITION: relative; VISIBILITY: visible;"><li>curiosity</li>
<li>thinking at multiple levels</li>
<li>initial impression of NYC dev market was people were looking to fill particular roles/niches</li>
<li>but doesn't think that's a good thing</li>
<li>need people who can adapt to changing roles/products/technologies as opposed to experts in one particular one</li>
</ul>
</li>
<li><span id="show1_11" class="foldclosed" onClick="show_folder('1_11')" style="POSITION: absolute">+</span> <span id="hide1_11" class="foldopened" onClick="hide_folder('1_11')">-</span>
how do you &nbsp;manage communicaton w/ distributed time
<ul id="fold1_11" style="POSITION: relative; VISIBILITY: visible;"><li>skype

</li>
<li>mingle (thoughtworks product), didn't scale past 20 devs

</li>
<li>now use jira
<ul><li>card tracking/bug tracking

</li>

</ul>
</li>
<li>added confluence for wiki (recently)

</li>
<li>most dev and ops guys live in skype
<ul><li>and in card tracking tool

</li>
<li>IM
<ul><li>long-lived dev chatrooms

</li>

</ul>
</li>

</ul>
</li>
<li>it's a tough environment to write code in
<ul><li>very obvious who is phoning it in

</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_12" class="foldclosed" onClick="show_folder('1_12')" style="POSITION: absolute">+</span> <span id="hide1_12" class="foldopened" onClick="hide_folder('1_12')">-</span>
any formal processes to keep in touch aside from ticket tracking?
<ul id="fold1_12" style="POSITION: relative; VISIBILITY: visible;"><li>daily scrum call (they have to shift time to get on that call)

</li>
<li>break into smaller groups as opposed to all 70 devs on one call

</li>
<li>daily scrum calls keep things working

</li>

</ul>
</li>
<li><span id="show1_13" class="foldclosed" onClick="show_folder('1_13')" style="POSITION: absolute">+</span> <span id="hide1_13" class="foldopened" onClick="hide_folder('1_13')">-</span>
how did they manage outsourced QA, making sure they had a test plan etc?
<ul id="fold1_13" style="POSITION: relative; VISIBILITY: visible;"><li>for regression tests, for every bug they'd automate a test or put in their plan

</li>
<li>work from the same user stories used to develop features

</li>
<li>for critical functionality, or something subtle, program managers would write out test cases

</li>
<li>now they have product managers do further user acceptance test

</li>

</ul>
</li>
<li><span id="show1_14" class="foldclosed" onClick="show_folder('1_14')" style="POSITION: absolute">+</span> <span id="hide1_14" class="foldopened" onClick="hide_folder('1_14')">-</span>
growth period
<ul id="fold1_14" style="POSITION: relative; VISIBILITY: visible;"><li>15% month-on-month growth last 40 months
<ul><li>just keeping the wheels on the train is a challenge

</li>
<li>things that are annoying now become unmitigated distasters in 180 days if not handled well

</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_15" class="foldclosed" onClick="show_folder('1_15')" style="POSITION: absolute">+</span> <span id="hide1_15" class="foldopened" onClick="hide_folder('1_15')">-</span>
big advantage of distributed team
<ul id="fold1_15" style="POSITION: relative; VISIBILITY: visible;"><li>they can fix problems overnight

</li>
<li>interesting: much higher productivity from developers who are not in the office
<ul><li>offices are distracting

</li>
<li>corporate culture is very interrupt-driven

</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_16" class="foldclosed" onClick="show_folder('1_16')" style="POSITION: absolute">+</span> <span id="hide1_16" class="foldopened" onClick="hide_folder('1_16')">-</span>
how do you measure productivity?
<ul id="fold1_16" style="POSITION: relative; VISIBILITY: visible;"><li>"how full is the parking lot at 6pm" -- fairly standard metric (in SV)

</li>
<li>cards are either getting done, or not getting done

</li>
<li>look at your 2-week sprints...what is getting done?

</li>

</ul>
</li>
<li><span id="show1_17" class="foldclosed" onClick="show_folder('1_17')" style="POSITION: absolute">+</span> <span id="hide1_17" class="foldopened" onClick="hide_folder('1_17')">-</span>
how do you balance time to market v code quality? (esp when you are small, starting up)
<ul id="fold1_17" style="POSITION: relative; VISIBILITY: visible;"><li><p>you WANT to get a product to market
<p>willing to incur tech debt to get there
<p>the hope is you get large enough that eventually you can get a "team B" who can pay down tech debt in parallel w/ new features
<p>12-24% of SW development bandwidth goes to refactoring
</li>
</ul>
</li>
<li><span id="show1_18" class="foldclosed" onClick="show_folder('1_18')" style="POSITION: absolute">+</span> <span id="hide1_18" class="foldopened" onClick="hide_folder('1_18')">-</span>
what is the value YOU personally contribute now to your company?
<ul id="fold1_18" style="POSITION: relative; VISIBILITY: visible;"><li>worried about org structure
<ul><li>how good are they at getting thigns done? (features, bug counts, happy customers?)

</li>

</ul>
</li>
<li>is there a better way to organize?

</li>
<li>continuous improvement model

</li>
<li>Am I putting pieces in place to ensure future success?
<ul><li>if it's too hard for devs to figure out what to build, bring in product person

</li>

</ul>
</li>

</ul>
</li>
<li><span id="show1_19" class="foldclosed" onClick="show_folder('1_19')" style="POSITION: absolute">+</span> <span id="hide1_19" class="foldopened" onClick="hide_folder('1_19')">-</span>
how do you build trust and recruit developers internationally?
<ul id="fold1_19" style="POSITION: relative; VISIBILITY: visible;"><li>finding people who knew rails was hard
<ul><li>in NYC mostly impossible

</li>
<li>had to look elsewhere

</li>

</ul>
</li>
<li>building trust: spent many hours w/ open skype sessions...like sitting next to him

</li>

</ul>
</li>

</ul></div><SCRIPT type="text/javascript">
fold_document();
</SCRIPT>
]]></content:encoded>
			<wfw:commentRss>http://coryforsyth.com/2011/10/12/cto-school-session-1-being-the-tech-leader/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DFW Words</title>
		<link>http://coryforsyth.com/2011/09/07/dfw-words/</link>
		<comments>http://coryforsyth.com/2011/09/07/dfw-words/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 22:52:45 +0000</pubDate>
		<dc:creator>cory</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://coryforsyth.com/?p=311</guid>
		<description><![CDATA[I read David Foster Wallace's The Pale King in April. These are some of the words I looked up while reading it. specular obtrude cruciform applique gimbal incursion chert invaginate connubial parenchyma irrupt divest umbrage exacerbate merrythought sally discursive thanatology plaint imperious imbrication cowl spindle prolix dyad dyadic labial agnate anfractuous stridulate carmine blancmange iterant [...]]]></description>
			<content:encoded><![CDATA[I read David Foster Wallace's <a href="http://www.amazon.com/gp/product/0316074233/ref=as_li_tf_tl?ie=UTF8&#038;tag=rightontime-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399369&#038;creativeASIN=0316074233">The Pale King</a><img src="http://www.assoc-amazon.com/e/ir?t=rightontime-20&#038;l=as2&#038;o=1&#038;a=0316074233&#038;camp=217145&#038;creative=399369" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> in April.  These are some of the words I looked up while reading it.

<ul>
<li>specular</li>
<li>obtrude</li>
<li>cruciform</li>
<li>applique</li>
<li>gimbal</li>
<li>incursion</li>
<li>chert</li>
<li>invaginate</li>
<li>connubial</li>
<li>parenchyma</li>
<li>irrupt</li>
<li>divest</li>
<li>umbrage</li>
<li>exacerbate</li>
<li>merrythought</li>
<li>sally</li>
<li>discursive</li>
<li>thanatology</li>
<li>plaint</li>
<li>imperious</li>
<li>imbrication</li>
<li>cowl</li>
<li>spindle</li>
<li>prolix</li>
<li>dyad</li>
<li>dyadic</li>
<li>labial</li>
<li>agnate</li>
<li>anfractuous</li>
<li>stridulate</li>
<li>carmine</li>
<li>blancmange</li>
<li>iterant</li>
<li>timorous</li>
<li>bandolier</li>
<li>forbearance</li>
<li>prostrate</li>
</ul>

Such a sesquipedalian guy, that DFW.  (I seem to have lost some of the other words.  The full list would be about twice this length.)]]></content:encoded>
			<wfw:commentRss>http://coryforsyth.com/2011/09/07/dfw-words/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Every Book I Read In 2010</title>
		<link>http://coryforsyth.com/2011/01/27/every-book-i-read-in-2010/</link>
		<comments>http://coryforsyth.com/2011/01/27/every-book-i-read-in-2010/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 21:22:59 +0000</pubDate>
		<dc:creator>cory</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://coryforsyth.com/?p=304</guid>
		<description><![CDATA[Every book I read (from cover to cover) in 2010, and the date I finished it. The ones with stars are my favorites. Looking back, there's clearly no pattern. I was a bit of a book slut in that I read anything anyone recommended to me (if I could make it through it). The attitude [...]]]></description>
			<content:encoded><![CDATA[Every book I read (from cover to cover) in 2010, and the date I finished it.  The ones with stars are my favorites.
Looking back, there's clearly no pattern. I was a bit of a book slut in that I read anything anyone recommended to me (if I could make it through it).  The attitude for last year was: read at any cost, just keep reading.  This year I am going to be a little more selective (but only just).
I read more YA books than I ever did when I was a YA myself (thanks, Guillian and the generous bookshelves of Simon &amp; Schuster).  Somewhat disappointingly there are no math or science or tech books on here. I've already improved on that this year.

Best fiction: <em>Special Topics in Calamity Physics</em>.  Total edge-of-seat, keep-me-up-at-night read.  The final third of the book is a graduated series of shocking plot twists and revelations. Unputdownable. Marisha Pessl: Release <em>Night Film</em>, already.

Best non-fiction: <em>Open</em>.  The writing style was cloyingly precious at times, but the story was very interesting and inspiring for me. <em>World Lit Only By Fire</em> was a very close second.

Most forgettable: <em>Spook Country</em>. Took me 15 minutes just now to remember what it was about.

Thanks to all my friends who gave me recommendations and especially the <a href='http://nypl.org'>New York Public Library</a>. Keep the recommendations coming; my goal this year is to read more than I did last year.

<ol>
<li>&#10025;Lush Life by Richard Price (January 4th, 2010)</li>
<li>The Girl with the Dragon Tattoo by Stieg Larsson (January 12, 2010)</li>
<li>Close to the Machine by Ellen Ullman (Jan 16, 2010)</li>
<li>Zodiac by Neal Stephenson (Jan 21, 2010)</li>
<li>Lowboy by John Wray (Jan 28, 2010)</li>
<li>black swan green by David Mitchell (Feb 23, 2010)</li>
<li>how to lose friends and alienate people by Toby Young (Feb 14, 2010)</li>
<li>&#10025;The believers by Zoe Heller (Feb 12, 2010)</li>
<li>&#10025;Chronic City by Jonathan Lethem (Feb 5, 2010)</li>
<li>Kite Runner by Khalid Hosseini (Feb 10, 2010)</li>
<li>Bridge of Sighs by Richard Russo (Mar 29, 2010)</li>
<li>Ender in Exile by Orson Scott Card (April 11, 2010)</li>
<li>&#10025;Stones from the River by Ursula Hegi (May 7, 2010)</li>
<li>The Nimrod Flip-Out by Etgar Keret (May 11, 2010)</li>
<li>&#10025;Although of Course You End Up Becoming Yourself by David Lipsky (May 15, 2010)</li>
<li>Spook Country by William Gibson (May 20, 2010)</li>
<li>The Girl Who Played With Fire by Stieg Larsson (May 31, 2010)</li>
<li>&#10025;A World Lit Only By Fire by William Manchester (June 30, 2010)</li>
<li>&#10025;Before I Fall by Lauren Oliver (June 10th, 2010)</li>
<li>Distracted (June 15th, 2010)</li>
<li>Asterios Polyp by David Mazzucchelli (July 1, 2010)</li>
<li>&#10025;Hunger Games by Suzanne Collins (July 26, 2010)</li>
<li>Catching Fire by Suzanne Collins (August 5th, 2010)</li>
<li>&#10025;Special Topics in Calamity Physics by Marisha Pessl (August 10th, 2010)</li>
<li>Logicomix by a group of folks (August 14, 2010)</li>
<li>The Girl Who Kicked the Hornets' Nest by Stieg Larsson (September 1st, 2010)</li>
<li>Vurt by Jeff Noon (September 7th, 2010)</li>
<li>&#10025;The Secret History by Donna Tartt (September 20th, 2010)</li>
<li>Mockingjay by Suzanne Collins (Sep 24th, 2010)</li>
<li>Wake by Lisa McMann (Sep 26th, 2010)</li>
<li>The Mortal Instruments by Cassandra Clare (Oct 4, 2010)</li>
<li>&#10025;The Particular Sadness of Lemon Cake by Aimee Bender (October 24, 2010)</li>
<li>&#10025;Open by Andre Agassi (November 7th, 2010)</li>
<li>&#10025;Inherent Vice by Thomas Pynchon (November 19, 2010)</li>
<li>&#10025;The Unnamed by Joshua Ferris (November 23, 2010)</li>
<li>I, Claudius by Robert Graves (December 26th, 2010)</li>
<li>Netherland, by Joseph O'Neill (December 29th, 2010)</li>
<li>&#10025;Shades of Grey by Jasper Fforde (December 30, 2010)</li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://coryforsyth.com/2011/01/27/every-book-i-read-in-2010/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Destiny is a thing to be achieved.</title>
		<link>http://coryforsyth.com/2011/01/13/destiny-is-a-thing-to-be-achieved/</link>
		<comments>http://coryforsyth.com/2011/01/13/destiny-is-a-thing-to-be-achieved/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 17:13:18 +0000</pubDate>
		<dc:creator>cory</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://coryforsyth.com/?p=299</guid>
		<description><![CDATA["Destiny is not a matter of chance; but a matter of choice. It is not a thing to be waited for, it is a thing to be acheived." &#8212; William Jennings Bryan, my great-great-grandfather.]]></description>
			<content:encoded><![CDATA["Destiny is not a matter of chance; but a matter of choice. It is not a thing to be waited for, it is a thing to be acheived."
&mdash; <a href="http://en.wikipedia.org/wiki/William_Jennings_Bryan">William Jennings Bryan</a>, my great-great-grandfather.]]></content:encoded>
			<wfw:commentRss>http://coryforsyth.com/2011/01/13/destiny-is-a-thing-to-be-achieved/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Year in Cities, 2010</title>
		<link>http://coryforsyth.com/2011/01/11/year-in-cities-2010/</link>
		<comments>http://coryforsyth.com/2011/01/11/year-in-cities-2010/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 20:34:36 +0000</pubDate>
		<dc:creator>cory</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://coryforsyth.com/?p=289</guid>
		<description><![CDATA[My yearly retrospective. These are cities I spent the night in during the year 2010. You can also see lists for 2009, 2008 and 2007. Asterisks indicate cities I spent non-consecutive nights in. You can also see this in map form, somewhat, at my Family 2010 World Map. January Maho Bay, St John, USVI* (pictures) [...]]]></description>
			<content:encoded><![CDATA[My yearly retrospective. These are cities I spent the night in during the year 2010.  You can also see lists for <a href="http://coryforsyth.com/2010/01/10/year-in-cities-2009/">2009</a>, <a href="http://coryforsyth.com/2009/01/02/2009s-year-in-cities/">2008</a> and <a href="http://coryforsyth.com/2008/01/01/list-of-places-slept-2007/">2007</a>.  Asterisks indicate cities I spent non-consecutive nights in.
You can also see this in map form, somewhat, at my <a href="http://www.forsythhindsyth.com/">Family 2010 World Map</a>.

<ol>
	<li>January</li>
<ul>
	<li>Maho Bay, St John, USVI* (<a href="http://www.flickr.com/photos/corybantic/sets/72157625741660604/">pictures</a>)</li>
	<li>Brooklyn, NY*</li>
</ul>

	<li>February</li>
<ul>
	<li>Red Hook, St Thomas, USVI</li>
	<li>Maho Bay, St John, USVI*</li>
	<li>Bangkok, Thailand (<a href="http://www.flickr.com/photos/corybantic/sets/72157623505136979/">pictures</a>)</li>
	<li>Chiang Mai, Thailand</li>
	<li>Chiang Mai Highlands, Thailand (Trek)</li>
	<li>Chiang Rai, Thailand</li>
	<li>Luang Prabang, Laos</li>
</ul>
	<li>March</li>
<ul>
	<li>Koh Samui, Thailand</li>
	<li>Logan, UT*</li>
</ul>

	<li>April</li>
	<li>May</li>
<ul>	<li>Allentown, PA (Father-Uncle-Son Road Trip V. <a href="http://www.flickr.com/photos/corybantic/sets/72157624177459030/">pictures</a>.)</li>
	<li>Strasburg, PA</li>
	<li>Gettysburg, PA</li>
	<li>Front Royal, VA</li>
	<li>Charlottesville, VA</li>
	<li>Blowing Rock, NC</li>
	<li>Asheville, NC</li>
	<li>Pigeon Forge, TN</li>
</ul>

	<li>June</li>
<ul>
	<li>East Hampton, NY</li>
	<li>Bovina, NY</li>
</ul>


	<li>July</li>
<ul>
	<li>Jersey Shore, NJ</li>
	<li>Maipú, Chile</li>
	<li>Santiago, Chile</li>
	<li>Reñaca, Chile</li>
	<li>Great Barrington, MA*</li>
</ul>

	<li>August</li>
<ul>
	<li>St Louis, MO</li>
	<li>Montauk, NY (<a href="http://www.flickr.com/photos/corybantic/sets/72157624884192214/">pictures</a>)</li>
</ul>


	<li>September</li>
<ul>
	<li>Montauk, NY</li>
	<li>Great Barrington, MA* (<a href="http://www.flickr.com/photos/corybantic/sets/72157625474544766/">pictures</a>.)</li>
</ul>


	<li>October</li>
<ul>
	<li>Binghamton, NY (Nat'l Mini-golf championship. <a href="http://www.flickr.com/photos/corybantic/sets/72157625474357356/">pictures</a></li>)
	<li>Seattle, WA (Visit Jenna. <a href="http://www.flickr.com/photos/corybantic/sets/72157625524549513/">pictures</a>)</li>
<li>Key West, FL</li>
	<li>Manhattan, NY*</li>
	<li>Fort Lauderdale, FL*</li>
</ul>
	<li>November</li>
<ul>
	<li>Atlantic Ocean (Cruise. <a href="http://www.flickr.com/photos/corybantic/sets/72157625474604600/">pictures</a>)</li>
	<li>Fort Lauderdale, FL*</li>
	<li>Logan, UT* (Thanksgiving. <a href="http://www.flickr.com/photos/corybantic/sets/72157625476329048/">pictures</a>)</li>
</ul>

	<li>December</li>
<ul>
	<li>Maho Bay, St John, USVI* (<a href="http://www.flickr.com/photos/corybantic/sets/72157625616306839/">pictures</a>)</li>
</ul>
</ol>

]]></content:encoded>
			<wfw:commentRss>http://coryforsyth.com/2011/01/11/year-in-cities-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

