<?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>feyn</title>
	<atom:link href="http://feyn.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://feyn.com</link>
	<description>feyn.com is made up of &#60;a href=&#34;http://feyn.com/author/neil&#34;&#62;neil&#60;/a&#62;, &#60;a href=&#34;http://feyn.com/author/john&#34;&#62;john&#60;/a&#62;, and &#60;a href=&#34;http://feyn.com/author/eddie&#34;&#62;eddie&#60;/a&#62;. We&#039;ve been at this software development thing for a while now, and figured it was time for us to start sharing stuff we picked up along the way.  You can follow &#60;a href=&#34;http://twitter.com/feyn&#34;&#62;@feyn&#60;/a&#62; on Twitter or use our &#60;a href=&#34;http://feyn.com/rss&#34;&#62;rss&#60;/a&#62; feed to keep posted on new articles.</description>
	<lastBuildDate>Fri, 16 Nov 2012 16:11:56 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Pickled</title>
		<link>http://feyn.com/pickled/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pickled</link>
		<comments>http://feyn.com/pickled/#comments</comments>
		<pubDate>Thu, 11 Oct 2012 18:06:01 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=2034</guid>
		<description><![CDATA[A large portion of my career has been spent fighting against organizational disarray. Over the years, I&#8217;ve become very accustomed to being dropped into an established culture with the intent and promise of doing everything I could to improve it in some way. Sometimes I was alone, and sometimes I was even accompanied by my [...]]]></description>
				<content:encoded><![CDATA[<p>A large portion of my career has been spent fighting against <a title="Little Things" href="http://feyn.com/little-things/">organizational disarray</a>. Over the years, I&#8217;ve become very accustomed to being dropped into an established culture with the intent and promise of doing everything I could to improve it in some way. Sometimes I was alone, and sometimes I was even accompanied by my closest friends and colleagues. While I&#8217;ve both succeeded and failed to varying degrees in both situations &#8212; and occasionally, even, at the same time &#8212; one thing has not changed: this is not an easy task. We were cucumbers, being dropped into jars with the intent to somehow, against the forces of nature, un-pickle pickles.</p>
<p><span id="more-2034"></span>This was always as absurd in reality as it sounds metaphorically, but unfortunately, not always as obvious. Neil has <a title="Getting Fired Is Easier The Second Time" href="http://feyn.com/getting-fired-is-easier-the-second-time/">written</a> <a title="When You are the Problem" href="http://feyn.com/when-you-are-the-problem/">about</a> this a couple times. This is actually the reason I&#8217;ve worked at 7 companies in 5 years. The problem is that the longer you stay around pickles, the more you get pickled yourself. You start getting accustomed to a weekly onslaught of production defects, and code that only occasionally works. You get used to managers that hide behind PMPs because they don&#8217;t actually encourage personal and professional growth. You get used to being surrounded by <a title="Inspired Workers" href="http://feyn.com/inspired-workers/">uninspiring pickles</a>, and it&#8217;s starting to affect your outlook.</p>
<p>My friend, we have enough pickles. We have enough people who think engineers are a cost of doing business, and paid to code, not think. <a href="http://feyn.com/finding-a-job/">Find another jar</a> &#8212; a <em>better </em>jar, with other cucumbers, and don&#8217;t lose your passion and ambition for what you do. Don&#8217;t get used to broken process, and don&#8217;t be okay with poor software quality. There are other cucumbers out there, and <a title="Parachuting In" href="http://feyn.com/parachuting-in/">we can help</a>. Find us. Just don&#8217;t get pickled.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/pickled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When You are the Problem</title>
		<link>http://feyn.com/when-you-are-the-problem/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=when-you-are-the-problem</link>
		<comments>http://feyn.com/when-you-are-the-problem/#comments</comments>
		<pubDate>Thu, 11 Oct 2012 13:25:49 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1979</guid>
		<description><![CDATA[Around 2001, I was laid off. It was still early in my career, so it was very upsetting. Those who were in IT at the time probably remember the situations that leads to mass layoffs (Dot-Com bubble burst; 9/11). I felt that I was a valuable employee, and had feedback as such, so it was [...]]]></description>
				<content:encoded><![CDATA[<p>Around 2001, I was laid off. It was still early in my career, so it was very upsetting. Those who were in IT at the time probably remember the situations that leads to mass layoffs (Dot-Com bubble burst; 9/11). I <strong><em>felt</em></strong> that I was a valuable employee, and had feedback as such, so it was confusing to my still-naive sense of fair play that I should be handed a pink-slip. After the fact, on a phone call with a VP who had left of his own accord around that time, he shared a tidbit that stuck with me ever since, &#8220;Managers never lay themselves off.&#8221; The truth of it was undeniable, and it lead to a thought experiment that has always nagged at me: if it turned out I was a part of the problem, and not part of the solution, would I have the courage to lay myself off for the betterment of the company?</p>
<p><span id="more-1979"></span></p>
<p><em>No</em>, as it turns out, as I&#8217;ve been in that situation a few times and failed to do so. To sacrifice yourself for the sake of your company is probably something that died out in the 1950&#8242;s, and I have no evidence that people even did it back then. I would be surprised if it did occur, as sacrificing oneself  for the greater good, goes against human nature. Instead, I would continue to be the problem, and I would continue to collect a paycheck. I have to say, I&#8217;m ashamed of myself for doing so. Now, I suppose I <em>can</em> sleep at night, as I did take my concerns to my superior every time I was in a situation where I was doing more harm that good. In both instances (yes, <a title="Getting Fired Is Easier The Second Time" href="http://feyn.com/getting-fired-is-easier-the-second-time/">there were two</a>) my boss reassured me that I was doing the right thing. Not coincidentally, both of these bosses ended up being dismissed withing 6 months of my departure. I suppose the lesson learned here is that if you think you&#8217;re a part of the problem, listen to your gut and not your boss.</p>
<p>Now that I&#8217;m old and wise (NOTE: <em>I am neither</em>), looking back, I could have simply written a resignation letter to the effect of, &#8220;<em>For whatever reason, my employment here isn&#8217;t working out. It may be you, it may be me, or a combination, but the end result is the same &#8212; I do not belong here.</em>&#8221; Looking at myself as a 3rd party, I would have respected that &#8212; an employee self-evaluating that they&#8217;re are a bad fit for a company, and choosing to bow-out rather than be shown the door, and/or take their bosses and co-workers down with them. Fact is, I didn&#8217;t have that courage in the past, and instead, convinced myself that my boss&#8217;s reassurances that I was doing the right thing was the truth, though I knew in my heart that it wasn&#8217;t. If I became faced with the same situation today, I hope that I would have the courage to resign for the sake of the company and co-workers. Perhaps it&#8217;s old fashioned to think this way, but when it&#8217;s all said and done, all we are is who we look at in the mirror, and I&#8217;d like to think that doing the right thing never goes out of fashion.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/when-you-are-the-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Paradox of Being a Technical Lead</title>
		<link>http://feyn.com/the-paradox-of-being-a-technical-lead/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-paradox-of-being-a-technical-lead</link>
		<comments>http://feyn.com/the-paradox-of-being-a-technical-lead/#comments</comments>
		<pubDate>Tue, 09 Oct 2012 13:56:21 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1943</guid>
		<description><![CDATA[I have, on many occasions, been a terrible technical lead. For years, I had no idea why people continued to promote me into these positions, even across different jobs. It&#8217;s not like I wanted to be a technical lead, they would just walk up and tell me that would be my new job. I was [...]]]></description>
				<content:encoded><![CDATA[<p>I have, on many occasions, been a terrible technical lead. For years, I had no idea why people continued to promote me into these positions, even across different jobs. It&#8217;s not like I wanted to be a technical lead, they would just <a title="Drafted into Leadership" href="http://feyn.com/drafted-into-leadership/">walk up and tell me</a> that would be my new job. I was a terrible technical lead, because I could never work out what the job entailed. To become a technical lead, you had to <a title="Gauging Oneself" href="http://feyn.com/gauging-oneself/">be the most skilled</a> of any of the other engineers &#8212; at least that&#8217;s the idea. However, to stay skilled you need to code constantly &#8212; that&#8217;s the &#8220;technical&#8221; part. The &#8220;lead&#8221; part, however, never seemed to fit, because to lead, you have to do more than sit at your desk and code all day with your headphones on. How can you stay technical and still lead?</p>
<p><span id="more-1943"></span>I wish I had a clever anecdote that neatly sums up how you can be (and stay) technical but also lead, but I don&#8217;t have one. In my experience, you either go all-in on technical, or go all-in on lead, or you do a disservice to your team. If you&#8217;re a technical lead, and go all-in on being technical, the code will stay well factored with little <a title="Technical Debt" href="http://feyn.com/technical-debt/">technical debt</a>, you&#8217;ll personally solve the most intractable problems, and bail the project out when it&#8217;s behind and some hero coding is called for. If you go <a title="I Used to Code" href="http://feyn.com/i-used-to-code/">all-in leading</a>, scope will stay under control, <a title="Sustainable Pace" href="http://feyn.com/sustainable-pace/">deadlines with be reasonable</a>, estimates will be done well, and the general level of chaos will be reduced to a minimum.</p>
<p>I tried really hard to be both technical as well as lead, but <a title="Making Mistakes" href="http://feyn.com/making-mistakes/">I failed</a>. Miserably. Repeatedly. After my last failure, I decided instead of trying to be both, I would go all-in on one of them. Since going all-in on leading drives your career to middle management, I decided to go all-in technical. I couldn&#8217;t be happier. Sure, scope is out of control, estimates are sh*t, deadlines are unreasonable, and the general level of chaos is <a title="A Train, Wrecking" href="http://feyn.com/a-train-wrecking/">off the charts</a>, but at least the team gets someone who at least does one thing well &#8212; being technical. As an added bonus, there&#8217;s a lot less stress in tackling technical problems than arguing requirements, scope, and deadlines. Will I ever try my hand again at the &#8220;lead&#8221; part? Only time will tell, but for right now, I&#8217;m enjoying the sweet life.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-paradox-of-being-a-technical-lead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop Lying on Your Résumé</title>
		<link>http://feyn.com/stop-lying-on-your-resume/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=stop-lying-on-your-resume</link>
		<comments>http://feyn.com/stop-lying-on-your-resume/#comments</comments>
		<pubDate>Mon, 08 Oct 2012 17:21:53 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1999</guid>
		<description><![CDATA[A few years back, I interviewed a woman for a Java software engineering position, and noticed that she had &#8220;extensive experience with Hibernate&#8221; on her résumé. I remember thinking to myself, &#8220;well, what an odd thing to mention having &#8216;extensive experience&#8217; with. This person must really adore Hibernate.&#8221; I mean, it&#8217;s not like she put [...]]]></description>
				<content:encoded><![CDATA[<p>A few years back, I interviewed a woman for a Java software engineering position, and noticed that she had &#8220;extensive experience with Hibernate&#8221; on her résumé. I remember thinking to myself, &#8220;well, what an odd thing to mention having &#8216;extensive experience&#8217; with. This person must <em>really</em> adore Hibernate.&#8221; I mean, it&#8217;s not like she put &#8220;has extensive experience building applications using Test-Driven Development,&#8221; or &#8220;has extensive experience modeling transactional domains.&#8221; Nope, &#8220;extensive experience&#8221; with a very specific framework devoted to a very specific task. Great. Let&#8217;s talk about that, I guess.</p>
<p><span id="more-1999"></span>So<sup>1</sup> I said to her, &#8221;talk to me about ORM&#8221;. She stuttered a bit, and shook her head, signaling to me that she was in the dark. &#8220;Oh, um?… Object-Relational Mapping…?&#8221; Still nothing. &#8221;Wait. What? OK, wait. You have &#8216;extensive experience with Hibernate&#8217; listed on your resume?&#8221; <em>&#8220;Oh, yeah…&#8221;</em> she said, as if she finally got the joke. <em>&#8220;Hey, listen, can I tell you something?&#8221;</em> My interest was piqued.</p>
<p><em>&#8220;<a title="Stop Saying “So”" href="http://feyn.com/stop-saying-so/">So</a><sup>2</sup>, look, my recruiter told me to put that on there. I&#8217;ve actually never used Hibernate, but [the shit-eating recruiter] said when people ask for &#8216;Hibernate experience&#8217;, they typically mean &#8216;Spring experience&#8217;&#8221;</em>. So many things immediately went through my head, but I was too shocked and amused to be livid. I couldn&#8217;t help but laugh. &#8220;OK, interesting. (I&#8217;ve never heard someone ask for Hibernate experience, meaning Spring experience, but moving on…), but, OK so you have Spring experience then?&#8221; <em>&#8220;Oh. Uh, no.&#8221; </em>True story.</p>
<p><sup><em>1. I don&#8217;t mind it here.</em></sup><br />
<sup><em>2. Fucking sucks here.</em></sup></p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/stop-lying-on-your-resume/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Measure of Success</title>
		<link>http://feyn.com/measure-of-success/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=measure-of-success</link>
		<comments>http://feyn.com/measure-of-success/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 19:40:40 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=2031</guid>
		<description><![CDATA[We&#8217;ve all heard the phrase, &#8220;What gets measured gets done&#8221; but what happens when there&#8217;s nothing to measure?  Recently, I was involved in a project where there was noticeable delay in getting the numbers behind various performance indicators.  As it turns out, the stall was due to the fact that there was so little activity [...]]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve all heard the phrase, &#8220;<em>What gets measured gets done</em>&#8221; but what happens when there&#8217;s nothing to measure?  Recently, I was involved in a project where there was noticeable delay in getting the numbers behind various performance indicators.  As it turns out, the stall was due to the fact that there was so little activity to report, people were concerned that showing &#8220;no measurements&#8221; equated to showing &#8220;no work,&#8221; which I suspect was never the <a title="Design Versus Intention" href="http://feyn.com/design-versus-intention/">intention</a> of the Management By Objectives (MBO) process.</p>
<p><span id="more-2031"></span>But that is part of the problem, isn&#8217;t it?  Processes that were defined by others, and have since lost meaning and/or relevance to the people [attempting to] adhering to them and resources being applied toward performance metrics, perhaps without regard to the actual quality of the product delivered.  That is the fundamental challenge of MBO and without the right kind of <a title="The Paradox of Being a Technical Lead" href="http://feyn.com/the-paradox-of-being-a-technical-lead/">leadership</a> in place, it is a disaster waiting to happen.  Or if it&#8217;s already <a title="Pickled" href="http://feyn.com/pickled/">happened</a>, it&#8217;s a death-march spiral without end.  As I watched this unfold in my own project, I know the solution required a different approach.</p>
<p>Instead of focusing on metrics, I turned my attention to improvements first.  Whether this was a <a title="Mostly Agile" href="http://feyn.com/mostly-agile/">proper</a> approach&#8230; well, that&#8217;s for someone else to determine.  Make small and immediate improvements first, to get us out of the death spiral.  Then, and only then, do the other <em>de rigueur</em> kick in.  Until there is improvement to the current situation, any amount of planning, definition, standardization and/or management &#8212; perhaps most importantly &#8212; won&#8217;t yield realizable results.  Then and maybe only then, would looking at the performance indicators make sense.  Because then, it would actually mean something.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/measure-of-success/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Problem with Pairing</title>
		<link>http://feyn.com/the-problem-with-pairing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-problem-with-pairing</link>
		<comments>http://feyn.com/the-problem-with-pairing/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 14:58:25 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1923</guid>
		<description><![CDATA[Look, I don&#8217;t want you to be offended, but I just don&#8217;t want to pair with you. No, I fully understand the benefit of pair programming, and have paired successfully quite a bit with other people. The problem isn&#8217;t with pair programming as a concept &#8212; the problem is you. I just don&#8217;t want to [...]]]></description>
				<content:encoded><![CDATA[<p>Look, I don&#8217;t want you to be offended, but I just don&#8217;t want to pair with you. No, I fully understand the benefit of pair programming, and have paired successfully quite a bit with other people. The problem isn&#8217;t with pair programming as a concept &#8212; the problem is <em>you</em>. I just don&#8217;t want to pair with you. You know how people say, &#8220;Don&#8217;t take it personally?&#8221; This isn&#8217;t one of those times &#8212; you should take <em>this</em> personally. Fundamentally, I am less productive as an engineer and less happy as a person when I pair with you. As a result, I&#8217;m not going to.</p>
<p><span id="more-1923"></span>Well look, you can get into a huff if you want to, but if you&#8217;ll calm down a moment, I&#8217;ll explain. First, it&#8217;s your personality &#8212; it annoys the sh*t out of me. Shut the f*ck up, focus, and lets get some work done. Don&#8217;t get me wrong, I&#8217;m all about <a title="Keeping it Light" href="http://feyn.com/keeping-it-light/">keeping things light</a>, but jokes have to in the context of getting work done. I don&#8217;t want to hear a knock-knock joke your 3 year old daughter told you this morning that has absof*ckinglootly nothing to do with figuring out the best way to test this method. Keep your eye on the prize; this is work &#8212; not play. While you&#8217;re at it, keep your attitude in check. Here&#8217;s a tip: say it once, it&#8217;s venting; say it more than once, it&#8217;s whining.</p>
<p>Second, you and I don&#8217;t see eye-to-eye when it comes to the discipline of software engineering. I take this sh*t very seriously. I&#8217;ve worked extremely hard to get the knowledge that I have, at great personal sacrifice, and for as much as I know, there is still vast amounts that I do not. I worked my ass off to get here &#8212; seems like you just got lucky. You wouldn&#8217;t know what an object was if it was sticking out of your ass. You think layering is something you do to keep warm in the winter. You are f*cking clueless and a waste of my time. So no, I&#8217;m not going to pair with you. Instead, I&#8217;m going to pair with <em>that</em> guy, and we&#8217;re going to get some sh*t done. You? How about you go get us some coffee, catch up your <a title="God Please No More Meetings" href="http://feyn.com/god-please-no-more-meetings/">personal email</a>, and leave us the hell alone.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-problem-with-pairing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Putting in Hours vs. Getting Things Done</title>
		<link>http://feyn.com/putting-in-hours-vs-getting-things-done/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=putting-in-hours-vs-getting-things-done</link>
		<comments>http://feyn.com/putting-in-hours-vs-getting-things-done/#comments</comments>
		<pubDate>Thu, 27 Sep 2012 15:12:13 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1934</guid>
		<description><![CDATA[Ever heard this one: &#8220;Come on everyone! If we&#8217;re going to make the deadline, we&#8217;re going to have to put in some hours!&#8221; or &#8220;Jimmy is really working hard &#8212; look at all the hours he&#8217;s putting in!&#8221; Yes, Jimmy is putting in a lot of hours. Yes, Jimmy comes in at 9:00 am, and [...]]]></description>
				<content:encoded><![CDATA[<p>Ever heard this one: &#8220;Come on everyone! If we&#8217;re going to make the deadline, we&#8217;re going to have to put in some hours!&#8221; or &#8220;Jimmy is really working hard &#8212; look at all the hours he&#8217;s putting in!&#8221; Yes, Jimmy is putting in a lot of hours. Yes, Jimmy comes in at 9:00 am, and leaves at 11:00 pm. Jimmy is <a title="Work More Hours" href="http://feyn.com/work-more-hours/">putting in hours</a>. Jimmy is also writing crap that has to be re-written, missing requirements, and pumping out more bugs than functional production ready code. But boy, he sure is putting in hours.</p>
<p><span id="more-1934"></span>A great book I read early in my career was &#8220;<a title="The Effective Executive" href="http://www.amazon.com/exec/obidos/ASIN/0060833459/lunarmagazine0d/ref=nosim" target="_blank">The Effective Executive</a>&#8221; by <a title="Peter Drucker" href="http://en.wikipedia.org/wiki/Peter_Drucker" target="_blank">Peter Drucker</a>, who many consider to be the father of modern management. In the book, he draws a clear distinction for how the modern manager was going to have to learn how to manage &#8220;<em>Knowledge Workers</em>&#8220;, as management techniques that worked for Factory Workers were not applicable. He used the analogy of laying bricks: If you spend more hours laying bricks, you will lay more bricks per day, and will therefore be more productive. Knowledge workers, on the other hand, are not more productive the more hours they work &#8212; in fact quite the contrary.</p>
<p>Instead, he put an emphasis on something else: <strong>Effectiveness</strong>. Are we getting the right things done, and in the right order? Rather than look at a metric that is easy to measure but irrelevant (hours), look at something that is difficult to measure, but extremely relevant (work completed). Whether it&#8217;s XP, Scrum, Lean, Agile, Kanban, or whatever the trendy label of the day is, it has the same intention: 1) What are the important things that need to get done, and 2) What is the order in which we need to do them. I used an important word there, but you might has missed it: DONE. Not started; not in progress; not finished yet to be tested; not tested but with bugs &#8212; DONE. Jimmy is busting his ass &#8212; sure he is &#8212; but is he getting the right things done, and in the right order? If he is, give Jimmy a pay increase and a spot bonus &#8212; he&#8217;s probably the most <strong>effective</strong> employee you have. I do worry about his <a title="Sustainable Pace" href="http://feyn.com/sustainable-pace/">home life</a> though&#8230; hope he&#8217;s single with no kids.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/putting-in-hours-vs-getting-things-done/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Growing Pains</title>
		<link>http://feyn.com/growing-pains/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=growing-pains</link>
		<comments>http://feyn.com/growing-pains/#comments</comments>
		<pubDate>Thu, 27 Sep 2012 13:21:20 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1955</guid>
		<description><![CDATA[Not a lot of companies do Agile well. I know some very smart people who think Agile is an utter hoax &#8212; a gimmick, used to make buckets of money by selling snake oil to gullible organizations that are just struggling to stay relevant. I don&#8217;t think it&#8217;s because Agile hasn&#8217;t been effectively evangelized. I [...]]]></description>
				<content:encoded><![CDATA[<p>Not a lot of companies do Agile well. I know some very smart people who think Agile is an utter hoax &#8212; a gimmick, used to make buckets of money by selling snake oil to gullible organizations that are just struggling to stay relevant. I don&#8217;t think it&#8217;s because Agile hasn&#8217;t been effectively evangelized. I certainly don&#8217;t think it&#8217;s because there is some fatal flaw with Agile methodologies that makes them abstruse or impractical. I think it&#8217;s because switching to Agile is painful, and people are opposed to pain.</p>
<p><span id="more-1955"></span>Agile is painful because it affects your entire product development organization, not just one group &#8212; which means you can&#8217;t reasonably replace the ones who don&#8217;t &#8220;get&#8221; Agile with the ones who do. You would be starting over. Hell, you&#8217;re basically doing that anyway. If everyone&#8217;s productivity and comfortability in their roles instantly evaporates, and panic ensues, you&#8217;re not ready for Agile. If Product Owners throw temper tantrums and paper weights, and Engineers crumble under the pressure of iterative development, <em>you&#8217;re not ready for Agile</em>. If BAs laugh with cynicism and frustration at the notion of things like Minimum Viable Product, and QAs make PowerPoint presentations about why it&#8217;s unreasonable to expect any sort of quality or automation from &#8220;this so-called in-cycle testing thing&#8221;, listen to me! <strong>You. Are. Not. Ready. For. Agile.</strong> At best, you will end up being <a title="Mostly Agile" href="http://feyn.com/mostly-agile/">mostly Agile</a>, which is to say not at all.</p>
<p>Short of hiring experienced (and deeply-concerned) consulting firms, these types of organizations will falter and fail in their attempts to succeed in implementing Agile, and it&#8217;s because they haven&#8217;t really read the fine print. They&#8217;ve been blinded by the allure of all that Agile practices give you, but they skimmed over the part where it talks about what a monstrous investment the switch will be. In fact, short of going out of business, switching to Agile is the largest and most disruptive type of change I&#8217;ve ever witnessed to happen to a company: even more so than an acquisition. It&#8217;s intensely painful, but these pains are always temporary for an organization. To the ones that give up and ultimately abandon Agile, they&#8217;ll be remembered as being paralyzing and insurmountable &#8212; a supposed testament to the impracticality of Agile principles. But to the ones that push through &#8212; well, they were merely growing pains.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/growing-pains/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Crooked Path to Quality</title>
		<link>http://feyn.com/th-crooked-path-to-quality/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=th-crooked-path-to-quality</link>
		<comments>http://feyn.com/th-crooked-path-to-quality/#comments</comments>
		<pubDate>Tue, 25 Sep 2012 19:14:02 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1905</guid>
		<description><![CDATA[Obviously, if you want a high quality product with a clean codebase and low defect counts, you need to be very careful and methodical in your approach to developing software. Ready-Fire-Aim is a sure road to disaster, leading to chaos and confusion. Not only that, but it speaks to a general immaturity and lack of [...]]]></description>
				<content:encoded><![CDATA[<p>Obviously, if you want a high quality product with a clean codebase and low defect counts, you need to be very careful and methodical in your approach to developing software. Ready-Fire-Aim is a sure road to disaster, leading to chaos and confusion. Not only that, but it speaks to a general immaturity and lack of professionalism of the development team and its members. That is, unless you iterate rapidly and continuously improve.</p>
<p><span id="more-1905"></span>I&#8217;m not a fan of the word &#8220;Agile&#8221;, as I feel that people have already formed their opinion of what Agile is, and generally I don&#8217;t agree with them. Instead, I prefer to speak about particular aspects of my interpretation of Agile. Regardless of your opinion on Agile, it&#8217;s hard to argue against the value of rapid iteration and continuous improvement. When you iterate rapidly you <strong>find</strong> design flaws and bugs quickly. When you continuously improve, you <strong>fix</strong> design flaws and bugs quickly. The result is what some call &#8220;chaos&#8221;, but I call it progress.</p>
<p>I like progress &#8212; a lot &#8212; but I wasn&#8217;t always this way. I mean, I would <em>tell</em> people I liked progress, and even <em>believed</em> that I did, but the reality was that I was so obsessed about producing high quality code with a low defect count that I forgot <a title="The Point" href="http://feyn.com/the-point/">the point</a> of software development &#8212; to develop software. What I have now realized is that to arrive at quality code, I have to iterate my way towards it in order to make incremental progress, which is more important to me than arbitrary point-in-time subjective assessment of quality. The path is crooked, and at times chaotic, but if you are backed up by a strong team fully bought in to rapid iteration and continuous improvement, then I highly recommend you give it a shot. Just don&#8217;t call it <a title="Agile Ain’t A Weekend Seminar" href="http://feyn.com/agile-aint-a-weekend-seminar/">Agile</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/th-crooked-path-to-quality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Blame The Technology</title>
		<link>http://feyn.com/dont-blame-the-technology/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dont-blame-the-technology</link>
		<comments>http://feyn.com/dont-blame-the-technology/#comments</comments>
		<pubDate>Tue, 25 Sep 2012 17:27:18 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1903</guid>
		<description><![CDATA[Poorly written code creates exceptions. Bad deployment extends service outages. SLA violated due to extreme acts of nature. Let&#8217;s face it, bad things happen as part of life, and also because people are human and mistakes are made along the way. An analogy may be made about going to restaurant and ordering some food, the [...]]]></description>
				<content:encoded><![CDATA[<p>Poorly written code creates exceptions. Bad deployment extends service outages. SLA violated due to extreme acts of nature. Let&#8217;s face it, bad things happen as part of life, and also because people are human and mistakes are made along the way. An analogy may be made about going to restaurant and ordering some food, the entire dinner/experience depends on a chain of events starting from freshness of ingredients, to expertise in the kitchen, to something as simple as hospitality and greetings. When something goes awry at the restaurant&#8230; someone on the staff will take ownership and assume responsibility. Often with that, comes an apology and some immediate offer of amelioration. We&#8217;ve come to expect that as part of customer service. The same analogy quickly breaks down when applied to the technology industry. Ironically, when things go badly, we tend to blame the technology.</p>
<p><span id="more-1903"></span>Imagine if a service staff at the restaurant told you that the meal wasn&#8217;t up to par because of the silverware selected, or blamed the salad on some beets, or told you how the oven didn&#8217;t bake the your slice of pizza just right? Or if the chef came out and explained that because he read Chef Daily&#8217;s suggestion of <a title="Agile Ain’t A Weekend Seminar" href="http://feyn.com/agile-aint-a-weekend-seminar/">sous-vide being the future</a> of cooking and funny how that didn&#8217;t make for a juicy, crunchy and tasty fried chicken? Diners wouldn&#8217;t stand for it. No way. Yet, both as consumers and as technologists, routinely, we hear and accept the lines of <del>reasoning</del> excuse of shifting the burden onto the technology itself. You&#8217;ve heard it before. Maybe you&#8217;ve done it yourself. It&#8217;s because Java does this. It&#8217;s because the framework did that. QA forgot to check for sub-feature Z. <em>If only we had chosen native instead of HTML5</em>. It&#8217;s completely absurd, and I&#8217;m over it.</p>
<p>It&#8217;s time we hold each other and the industry accountable, to what we agreed to deliver. It&#8217;s time to stop reducing the standard of excellence, after commitments and engagements have already been made. It&#8217;s not easy and we hate to break up the buddy-buddy [b]romance, force a little personal discomfort and call each other out when so-called <a title="A Dangerous Corollary" href="http://feyn.com/a-dangerous-corollary/">subject matter experts</a> [ that's us, in the room ] make a mistake, or set the bar too low, or simply fail to deliver on execution. Good managers have to do this with their subordinates, and I&#8217;m saying that peers, as equals, have to do the same with each other. Think about, until we do that, there won&#8217;t be any real buy-in either because we&#8217;re willing to cut someone slack and accept sub-standard results. I don&#8217;t know about you, but I&#8217;m tired of rubbery tasteless fried chicken.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/dont-blame-the-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parachuting In</title>
		<link>http://feyn.com/parachuting-in/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=parachuting-in</link>
		<comments>http://feyn.com/parachuting-in/#comments</comments>
		<pubDate>Tue, 25 Sep 2012 14:35:34 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1891</guid>
		<description><![CDATA[It&#8217;s Monday morning, and you walk up to your desk, cubicle, office, whatever, and set your things down. You open up your laptop or wake up your computer, take a sip of your $4.00 coffee, and look around the floor. Wait&#8230; something isn&#8217;t right. You notice 6 people you&#8217;ve never before seen huddled together with [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s Monday morning, and you walk up to your desk, cubicle, office, whatever, and set your things down. You open up your laptop or wake up your computer, take a sip of your $4.00 coffee, and look around the floor. Wait&#8230; something isn&#8217;t right. You notice 6 people you&#8217;ve never before seen huddled together with laptops. They&#8217;re drawing on whiteboards and pointing and arguing and laughing. Well now, don&#8217;t they just seem right at fucking home? Something&#8217;s not right, here &#8212; you can feel it. Relax. It&#8217;s much worse than you think.</p>
<p><span id="more-1891"></span>The people you are looking at are consultants, and you are about to be told by your manager that they&#8217;re here to clean up your mess. Your product and your hard work is being taken from you and given to outsiders, and there is absolutely nothing you can do about it. You try to argue with management and explain why it&#8217;s okay that your project is 8 months late &#8212; oops, the consultants wouldn&#8217;t be here if a deal wasn&#8217;t already signed. You threaten to leave. You&#8217;re told you&#8217;re allowed to. You feel sick, betrayed, angry, hurt, used. Your mind is racing. Slow down.</p>
<p>It occurs to you that you have not actually been terminated yet. In fact, the only person who mentioned the termination of your employment is you. You walk up to one of the consultants, determined to quickly and publicly prove their incompetency. Before you can utter a word, they look up and smile at you, genuinely. They warmly introduce themselves, and acknowledge your value on the team, mentioning that they&#8217;re looking forward to working with you. You believe them. They shake your hand, introduce themselves, and invite you into their huddle, where they&#8217;re discussing some of the most problematic parts of the codebase and which areas they&#8217;d like to address first. It&#8217;s as if they&#8217;re verbalizing all the problems you&#8217;ve had with the project that you were unable to articulate. You&#8217;ve never heard of ThoughtWorks before, but they seem like they might actually be able to help. Relax. It&#8217;s much better than you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/parachuting-in/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You Are Not Your Programming Language</title>
		<link>http://feyn.com/you-are-not-your-programming-language/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=you-are-not-your-programming-language</link>
		<comments>http://feyn.com/you-are-not-your-programming-language/#comments</comments>
		<pubDate>Thu, 20 Sep 2012 13:04:36 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=128</guid>
		<description><![CDATA[The psychology of the average software engineer is fascinating. Not only do they develop a sense of entitlement towards management, as well as an attitude of elitism toward Product and QA, they will also seek to segment themselves from other software engineers through the selection of their programming language. Following a fraternal instinct, the overwhelmingly [...]]]></description>
				<content:encoded><![CDATA[<p>The psychology of the average software engineer is fascinating. Not only do they develop a sense of entitlement towards management, as well as an attitude of elitism toward Product and QA, they will also seek to segment themselves from other software engineers through the selection of their programming language. Following a fraternal instinct, the overwhelmingly male software engineering community clumps into programming language cliques, and once the bond is established it can last their entire career. Sadly, much like college frat-boys attempting to define themselves through Greek letters, defining yourself by your programming language is both pathetic and myopic.</p>
<p><span id="more-128"></span>Software engineers, when looked at through the lens of society as a whole, are comprised almost entirely of geeks and nerds. In high school, while jocks were out partying on a Friday night learning the subtle arts of speaking to women, these future software engineers were at home playing video games. When a jock was learning how to do the minimum to get by, the geek was lamenting over less-than-perfect grades. When jocks go to college, they are drawn to fraternities like ants to a sugar cube. Nerds, on the other hand, too busy with study to socialize, miss out on male bonding rituals, and instead seek to fill the void of brotherhood in their professional careers.</p>
<p>Software engineers are conditioned by the software development industry to think that they are defined by their programming language, and to switch programming languages is a dangerous act of disloyalty. Who will want to hire someone who has only worked professionally with language A, and now wants a job programming language B? Absurd. So much safer to stay in your comfort zone, rather than try to break ranks for no apparent gain. Besides, writing software in a particular programming language is really <a title="The Point" href="http://feyn.com/the-point/">the point</a> of software engineering. <a title="The Art of Apprenticeship" href="http://feyn.com/the-art-of-apprenticeship/">Starting over</a> is hard, and there&#8217;s no reason to put yourself though that when you have already <a title="Paying Your Dues On Maintenance" href="http://feyn.com/paying-your-dues-on-maintenance/">paid your dues</a>. Take pride in being a [<a href="http://www.youtube.com/watch?v=13A0_QkqtaQ" title="Java vs Microsoft .NET Trailer" target="_blank">insert language here</a>] programmer, and don&#8217;t be one of those people who <a title="Gauging Oneself" href="http://feyn.com/gauging-oneself/">pushes themselves</a> outside of their comfort zone, only to <a title="Getting Fired Is Easier The Second Time" href="http://feyn.com/getting-fired-is-easier-the-second-time/">suffer the consequences</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/you-are-not-your-programming-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Stand So Close To Me</title>
		<link>http://feyn.com/dont-stand-so-close-to-me/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dont-stand-so-close-to-me</link>
		<comments>http://feyn.com/dont-stand-so-close-to-me/#comments</comments>
		<pubDate>Thu, 20 Sep 2012 12:33:53 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[nfc]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1877</guid>
		<description><![CDATA[NFC [ Near Field Communication ] is a clever outgrowth from RFID.  This group of short-range wireless communication standards will enable all kinds of conveniences previously un-attainable with our so-called mobile devices.  Mostly phones, but practically any un-wired NFC-capable device, eventually, will be able to communicate witho other NFC-capable devices, giving the consumers a wide [...]]]></description>
				<content:encoded><![CDATA[<p><strong>NFC</strong> [ Near Field Communication ] is a clever outgrowth from RFID.  This group of short-range wireless communication standards will enable all kinds of conveniences previously un-attainable with our so-called mobile devices.  Mostly phones, but practically any un-wired NFC-capable device, eventually, will be able to communicate witho other NFC-capable devices, giving the consumers a wide range of features for commerce, information exchange and ad-hoc authentication.  Unfortunately, NFC continues in the trend where design for security came in as an after-thought, rather than a primary focus, going in.  Perhaps it&#8217;s not fair to place the security burden on NFC, after all, it&#8217;s merely a low-level transport mechanism.  What&#8217;s the worst that could happen?</p>
<p><span id="more-1877"></span>As it turns out, as if there weren&#8217;t enough vectors of attack already &#8212; SMTP, the web, SMS &#8212; we now must add NFC as the latest avenue of entry for those with malicious intent.  And more importantly, in addition to simply being a conduit, NFC is <em>smart</em> and may contain configuration or configuration-change type of payload [ an example is that NFC may be leverage to set up Bluetooth, or modify WiFi ] and couple that with the usual carelessness by software developers, lack of familiarity from being the new things, and general un-awareness because people simply do not consider security over ease of use&#8230; NFC may become a far scarier technology than the original intention.  Some people will clamor for SSL, somewhat mis-applying channel encryption and not realizing it simply takes away the opacity of the traffic, but not the problematic traffic itself.</p>
<p>All non-wired solutions suffer greatly from eavesdropping and leakage.  To some degree, even hard wires may be tapped, but any/all wireless transmission makes it a little easier to inject into the stream.  Now, a potential attack only needs to be close[r] &#8212; while standing in a line, perhaps, or sitting next to you on the train, in a theater&#8230; or simply pacing you as you walk through some type of controlled environment, and voila NFC brings the evil of the world to your <del>door</del> pocket.  Am I simply beating a dead horse and rattling off paranoia?  Sadly, no.  Within a few weeks, we will see some Real Life attacks, where malicious, targeted code will be pushed onto the NFC device, and then forced to execute and then ultimately compromise the NFC device itself.  Good thing it&#8217;s just a little ol&#8217; NFC device&#8230; not like we keep money, access credentials, intimate details of our lives, or anything important on those things anyway.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/dont-stand-so-close-to-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fighting</title>
		<link>http://feyn.com/fighting/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fighting</link>
		<comments>http://feyn.com/fighting/#comments</comments>
		<pubDate>Tue, 18 Sep 2012 15:00:07 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1797</guid>
		<description><![CDATA[Ok. Your team is backed into a corner. You know what the right decision is &#8212; technical or political &#8212; but are, presumably, adamantly disagreed with in your organization. In spite of knowing what you&#8217;re in for, you want to take a stand. You need to do two things, quickly and effectively. First, you need [...]]]></description>
				<content:encoded><![CDATA[<p>Ok. Your team is <a title="A Train, Wrecking" href="http://feyn.com/a-train-wrecking/">backed into a corner</a>. You know what the right decision is &#8212; technical or political &#8212; but are, presumably, adamantly disagreed with in your organization. In spite of knowing what you&#8217;re in for, you want to <a title="When You Stand" href="http://feyn.com/when-you-stand/">take a stand</a>. You need to do two things, quickly and effectively. First, you need to credentialize yourself in front of everyone involved at the same time. Second, you need to focus on the contrasting effect each decision will have on the company, both in the immediate future and in the long term.</p>
<p><span id="more-1797"></span>Quick and effective credentialization is difficult, but here are some tips. First, know your sources: for instance, if you&#8217;re referencing software design, know names like Martin Fowler, Kent Beck, and Bob Martin. When you understand and can cite what the leaders in your industry believe, you&#8217;re leveraging effort that they&#8217;ve already spent to win battles that they&#8217;ve already won. It&#8217;s difficult to stand up and refute what the industry experts collectively believe and not look foolish, making this a fairly effective credentialization tactic. Another one, of course, is speaking about direct experience you might have had dealing with the particular challenges and struggles that your organization is experiencing, and how it went for you. Direct experience is not always available, but when it is, it&#8217;s potent. No one can really refute that what you&#8217;re saying is true if they weren&#8217;t there, can they? It also builds confidence that you&#8217;re a trustworthy source on whatever matter you tend to be fighting over, given that you&#8217;ve seen this before.</p>
<p>This one&#8217;s a little more difficult, because it tends to be regarded as highly subjective, even if you know it&#8217;s quantifiable: focusing on the impact that each decision will make on the company in the short and long term. The best advice I can give here is to pull from case-studies: when 5 out of the 6 Fortune 10 companies that attempted big-bang rewrites in 2012 abandoned them half-way through, and the 6th is facing another rewrite, that&#8217;s evidence. It may be incidental. It may even be refutable. But it is case-building and adds another line of defense. Talk impersonally about the forthcoming affect that each decision will have, so that the only side you&#8217;re representing is the side that&#8217;s best for the company. Speak eloquently, and formulate your responses carefully. Articulate your concerns. Leave it all on the table, and go update your résumé. The rest is out of your hands.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/fighting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What You Don&#8217;t Know Defines You</title>
		<link>http://feyn.com/what-you-dont-know-defines-you/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-you-dont-know-defines-you</link>
		<comments>http://feyn.com/what-you-dont-know-defines-you/#comments</comments>
		<pubDate>Tue, 18 Sep 2012 14:03:00 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>
		<category><![CDATA[Interview]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1813</guid>
		<description><![CDATA[School has conditioned us to think that someone who does not know the right answer off the top of their head is an idiot. At this very moment, all around the world, students are called on by their teachers to answer a question, and are publicly humiliated when they don&#8217;t know the correct answer. Their [...]]]></description>
				<content:encoded><![CDATA[<p>School has conditioned us to think that someone who does not know the right answer off the top of their head is an idiot. At this very moment, all around the world, students are called on by their teachers to answer a question, and are publicly humiliated when they don&#8217;t know the correct answer. Their peers are taught that it&#8217;s OK to jeer at someone who doesn&#8217;t know the right answer &#8211; even if they don&#8217;t know the right answer themselves. As adults in a technology profession, we see this same mentality manifested as interviews that go badly because of one wrong answer (&#8220;They should have known that!&#8221;) and first impressions that are forever stained (&#8220;That guy doesn&#8217;t know what he&#8217;s talking about&#8221;). If only it was that simple.</p>
<p><span id="more-1813"></span>A series of wrong answers can be considered a strong indication that someone does not know what their talking about, but a single wrong answer can be just as damaging depending on your audience and the nature of the question. If the question is, &#8220;What is a computer&#8221; and the answer is, &#8220;It makes toast&#8221; (and they&#8217;re being serious) then it&#8217;s safe to say they know nothing about computers. If the question is, &#8220;When the JVM is running in a virtual machine on 16 core processor hardware with 4 threads running, how many more threads can a J2EE application create?&#8221; and you answer 9 &#8211; but 9 is the wrong answer, then what? What have you learned about that person&#8217;s ability? Nothing. Yet, that one wrong answer can cause someone to not get a job and/or lose the respect of their peers.</p>
<p>We need to assess people to know how to work with them, otherwise we run the risk of speaking over their heads or being condescending. However, we also need to temper our assessment of their answers, and look inwards to determine if the question itself was fair. Most often, an extremely difficult question is really asked so that the interrogator can feel better about themselves, as an insecure interviewer attempts to demonstrate their intellectual superiority. When you are asking a question, think about what it would be like if the tables were turned. If you think the situation would be fair, then by all means proceed. If, on the other hand, you feel as though <a title="Getting Fired Is Easier The Second Time" href="http://feyn.com/getting-fired-is-easier-the-second-time/">punching the interviewer in the neck</a> would be warranted, I urge you to reconsider. After all, you <a title="The Sympathetic Approach" href="http://feyn.com/the-sympathetic-approach/">might end up working with this person</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/what-you-dont-know-defines-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Funding Trust</title>
		<link>http://feyn.com/funding-trust/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=funding-trust</link>
		<comments>http://feyn.com/funding-trust/#comments</comments>
		<pubDate>Tue, 18 Sep 2012 13:17:32 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Teams]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[Philosophy]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1821</guid>
		<description><![CDATA[I have been fortunate enough to work with highly competent people, most of my professional life. Whether they were software engineers, system administrators, project managers, business analysts or executives. Each has been smart, savvy, extremely skilled in their craft and very often, great leaders. In cases where they were my peers, they were great partners [...]]]></description>
				<content:encoded><![CDATA[<p>I have been fortunate enough to work with highly competent people, most of my professional life. Whether they were software engineers, system administrators, project managers, business analysts or executives. Each has been smart, savvy, extremely skilled in their craft and very often, great leaders. In cases where they were my peers, they were great partners in accomplishing whatever challenging tasks at hand. That a group of people were successful and continued to be successful can be attributed to the fact that we trusted one another to do the right thing, and provide the feedback, understanding and support when needed. Trust is the hallmark and the foundation of a great team.</p>
<p><span id="more-1821"></span>Trusting each other, at a professional/work level, isn&#8217;t about some touch-y feel-y semantics. Trusting one another is also not about the predictible level of contribution, based on <a title="Sustainable Pace" href="http://feyn.com/sustainable-pace/">past experiences</a>. That seems counter-intuitive, as most of us are used to thinking about trust in terms of someone doing good before, and therefore is likely to do good again. In fact, trusting in my fellow team members actually means that I am not afraid to be candid and honest, not just about my strengths but also my <a title="You Are The Weakest Link" href="http://feyn.com/you-are-the-weakest-link/">weakness</a>, without the fear that somehow those deficiencies will be leveraged against me down the line. It also makes it possible for me to ask for help, without the concerns of penalty. It enables me to make mistakes, and recover from them.</p>
<p>It&#8217;s not easy trusting people, because we tend to view each other as competitors. In fact, professional achievements often rely on the fact that we&#8217;ve excelled and surpassed, those other individuals in the respective fields. However, that path only scales so far because one person cannot be good at <a title="Speed and Quality" href="http://feyn.com/speed-and-quality/">everything</a> and at some point, a team of people will absolutely <a title="Work More Hours" href="http://feyn.com/work-more-hours/">outperform the one</a>. That is why it&#8217;s crucial to be a part of a team, and a successful team starts out by trusting one another. It&#8217;s not an easy behavior to modify, but without trust, there will be no team. Of course, this must be a mutual move, or we are right back in competition, defending ourselves and killing each other. That is not how teams work. Not every group of people will be able to pull this off, but when it does happen, you&#8217;ll be amazed what could be accomplished.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/funding-trust/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When You Stand</title>
		<link>http://feyn.com/when-you-stand/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=when-you-stand</link>
		<comments>http://feyn.com/when-you-stand/#comments</comments>
		<pubDate>Mon, 10 Sep 2012 17:07:20 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=696</guid>
		<description><![CDATA[So your organization isn&#8217;t responding to reason. What started out as a team that would attempt to exemplify the way your organization wanted to do product development has become a micro-managed monstrosity, full of stakeholders, and absent of accountability. You&#8217;ve decided that in the face of this blame-storm you keep hearing referred to as a [...]]]></description>
				<content:encoded><![CDATA[<p>So your organization isn&#8217;t responding to reason. What started out as a team that would attempt to exemplify the way your organization wanted to do product development has become a micro-managed monstrosity, full of stakeholders, and absent of accountability. You&#8217;ve decided that in the face of this blame-storm you keep hearing referred to as a &#8220;team effort&#8221; (which you&#8217;re starting to believe!), you have to take a stand. Here&#8217;s what you&#8217;re in for:</p>
<p><span id="more-696"></span>First, things are going to get unpleasant. Most people dislike conflict, but everyone dislikes hearing they&#8217;re part of the problem. If you think people are displeased with your team&#8217;s performance now, just wait until they&#8217;re on the business end of an after-action review and their role isn&#8217;t in the &#8220;Things Done Well&#8221; quadrant. Second, you&#8217;re going to be scrutinized &#8211; and I mean under a microscope &#8212; and I don&#8217;t mean like in the way a botanist admires nature through the examination of a leaf; more like in the way <em>a biochemical engineer watches bacterial cells</em>, always on the lookout for indicators of any exploitable weaknesses. This one is particularly difficult to deal with the first time, as you&#8217;ll have to face the harsh reality that you might just be the only person in the equation who&#8217;s actually focused on improving the project, rather than advancing your own career by damaging someone else&#8217;s.</p>
<p>Finally &#8212; and there&#8217;s really no getting around this &#8212; you may lose. You may lose huge. You may ultimately be thought of as a cautionary tale for crossing Product, or Architecture, or Management-or-QA-or-<em>whoever</em>. For this reason, taking this kind of a stand should really only be done as a last resort &#8212; pretty much when things couldn&#8217;t reasonably get worse, and when you&#8217;re ready to leave if you must. Are you ready? Are you <strong>sure</strong>? Ok. Fight.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/when-you-stand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sustainable Pace</title>
		<link>http://feyn.com/sustainable-pace/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sustainable-pace</link>
		<comments>http://feyn.com/sustainable-pace/#comments</comments>
		<pubDate>Thu, 06 Sep 2012 15:29:41 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Project]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1594</guid>
		<description><![CDATA[A closing interview question I sometimes like to ask is, &#8220;Is writing software more like stacking bricks, or playing high speed chess?&#8221; Asked my own question, I might answer, &#8220;It&#8217;s like playing high speed chess in order to figure out which bricks to craft so that I can stack them.&#8221; Stacking bricks, with no caveat [...]]]></description>
				<content:encoded><![CDATA[<p>A closing interview question I sometimes like to ask is, &#8220;<em>Is writing software more like stacking bricks, or playing high speed chess?</em>&#8221; Asked my own question, I might answer, &#8220;<em>It&#8217;s like playing high speed chess in order to figure out which bricks to craft so that I can stack them.</em>&#8221; Stacking bricks, with no caveat to explain their origin, couldn&#8217;t be a more incorrect metaphor for developing software. It is monotonous, predictable, and not mentally taxing in the slightest. Playing high speed chess, on the other hand, is a grueling intellectual process, and one that cannot be sustained indefinitely.</p>
<p><span id="more-1594"></span>Often heard among progressive Agile practitioners is term &#8220;<a title="Sustainable Pace" href="http://www.extremeprogramming.org/rules/overtime.html" target="_blank">sustainable pace</a>&#8220;, but I rarely hear a sufficient explanation as to why this is important. In short, thinking hard for long periods of time physically hurts. For those of us who think for a living, we either develop a tolerance for this pain, or we learn how to take breaks in order to let the pain subside &#8211; often both. Some of the most productive engineers have mastered this skill, applying a careful <a title="Work–life balance" href="http://en.wikipedia.org/wiki/Work%E2%80%93life_balance" target="_blank">balance of work and leisure time</a>. These engineers can seemingly produce high quality work day-in, day-out, with no signs of fatigue of slowing down. They are engineers that are working at a sustainable pace.</p>
<p>Project managers are typically lectured by engineers on sustainable pace, when asked to work overtime to hit a date. In order to teach a project manager sustainable pace, try the following: Give them an 8 hour long-answer test (as in, not multiple choice) every day for a week. It doesn&#8217;t matter what the test is on, so long as it requires intense brain work. As the end of the week, inform them that because the test is incomplete, or that some of the answers are wrong, or that new questions have been added, or that questions they have already answered have now changed, they will have to work the weekend to make up time, as well as work an extra 10 hours the next week. Keep this up until they understand sustainable pace.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/sustainable-pace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Occasionally Cave</title>
		<link>http://feyn.com/occasionally-cave/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=occasionally-cave</link>
		<comments>http://feyn.com/occasionally-cave/#comments</comments>
		<pubDate>Thu, 06 Sep 2012 14:56:02 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1784</guid>
		<description><![CDATA[One of my most visible faults early on in my career (and something I still struggle with to this day) was my tendency to rigidly represent my own (or my team&#8217;s) interests, regardless of how large or small. I say rigidly, because I would tend to hold the same position in spite of the political [...]]]></description>
				<content:encoded><![CDATA[<p>One of my most visible faults early on in my career (and something I still struggle with to this day) was my tendency to rigidly represent my own (or my team&#8217;s) interests, regardless of how large or small. I say rigidly, because I would tend to hold the same position in spite of the political or emotional erosion to external relationships that might be caused. In short, I didn&#8217;t really give a damn about any external team&#8217;s preferences &#8212; I knew what my team wanted, and that was that. Over the years, I&#8217;ve learned that this is not the best way to do business.</p>
<p><span id="more-1784"></span>One of my favorite quotes from the movie <em>Knockaround Guys</em> is when John Malkovich explains to Barry Pepper &#8220;Used to be, there was a way to do things and things got done [..] now everyone&#8217;s feelings are involved.&#8221; The truth is that many times in today&#8217;s business culture, it can be problematic to make the technically correct decision for the business because it might go against someone&#8217;s personal preference and therefore offend them,  making them difficult to work with later on. Negotiation might seem to be the answer when you disagree on implementation details, but even negotiation presents it&#8217;s own problems, mainly that neither party actually gets what they want, which can get very old after a while.</p>
<p>The best way answer I&#8217;ve come up with yet is simply concession. This goes against a lot of what I personally believe in, but really tends to be best deterrent I&#8217;ve found for hurt feelings. Certainly you shouldn&#8217;t become a door mat, conceding in <em>every</em> argument, or else you will have invalidated the point of conceding to begin with. But you also shouldn&#8217;t have to enter an &#8220;integration points&#8221; meeting <a title="You’re Arrogant If They Say You Are" href="http://feyn.com/youre-arrogant-if-they-say-you-are/">preceded by a reputation</a> of inflexibility and self-service. If you really want to keep your collaborators cooperative, don&#8217;t make everything a negotiation &#8212; occasionally cave.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/occasionally-cave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You Are The Weakest Link</title>
		<link>http://feyn.com/you-are-the-weakest-link/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=you-are-the-weakest-link</link>
		<comments>http://feyn.com/you-are-the-weakest-link/#comments</comments>
		<pubDate>Tue, 04 Sep 2012 14:21:41 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1764</guid>
		<description><![CDATA[At a glance, it may not be immediately be clear how ops engineers and software engineer would see eye-to-eye on very many things. For the sake of uptime, ops tend to dislike change, while developers create and enhance, by continuously introducing refinements ( &#8220;change&#8221; ) &#8212; two seemingly opposing ends of the spectrum. However, the [...]]]></description>
				<content:encoded><![CDATA[<p>At a glance, it may not be immediately be clear how ops engineers and software engineer would see eye-to-eye on very many things. For the sake of uptime, ops tend to dislike change, while developers create and enhance, by continuously introducing refinements ( &#8220;change&#8221; ) &#8212; two seemingly opposing ends of the spectrum. However, the part that cause one group to resemble the other is the inconsistency of people. When it comes to being human, one type of engineer may be indistinguishable from the other. The reliance on people to &#8220;do the right thing&#8221; repeatedly, ironically, is the greatest threat in most organizations when it comes to productivity and efficiency. It is the people that&#8217;s most likely to break down. You, the people, are the weakest link.</p>
<p><span id="more-1764"></span></p>
<p>Let&#8217;s face it, discipline isn&#8217;t natural, and more importantly, most of us crave ease in the form of less work. Perhaps less intuitively is that by doing specific preparatory work, we could actually reduce the required effort down the road &#8212; insert some parable about tortoise and the hare here &#8212; but most likely, the shortcut-seeking tendencies means that we won&#8217;t do the necessary prep and instead, opt to peddle faster/harder on the tailend to make up/pay later. Admit it, you&#8217;ve done that more than once, in your own professional life. Because why do today what you can put off for three weeks? Except despite hearing, and acknowledging, that hope is not a strategy, people continue to go through the same cycles, manually perform some specific tasks, secretly and wishfully hoping, that the outcome would be different this time. <a title="Brand New Legacy" href="http://feyn.com/brand-new-legacy/">It won&#8217;t be</a>.</p>
<p>As our roles overlap, blend and generally approach one another &#8212; ops toward developer, and vice versa, we should remove ourselves and our well-intentioned but ill-fated tendencies from the equation through automation. Anything you do more than twice, <a title="Automate Yourself out of a Job" href="http://feyn.com/automate-yourself-out-of-a-job/">consider automation</a>. Testing shouldn&#8217;t be a manual effort. Configuration management shouldn&#8217;t be a manual effort. Deployment shouldn&#8217;t be a manual effort. Is this supposed to be eliminating jobs? Absolutely&#8230; unless your job is supposed to be pushing buttons every a light flashes. No, companies can hire monkeys for that role&#8230; your job &#8212; our jobs &#8212; is supposed to be solve problems creatively. Whether that is Agile or DevOps, time to get on-board.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/you-are-the-weakest-link/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Mistakes</title>
		<link>http://feyn.com/making-mistakes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=making-mistakes</link>
		<comments>http://feyn.com/making-mistakes/#comments</comments>
		<pubDate>Tue, 04 Sep 2012 13:09:56 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>
		<category><![CDATA[Experience]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Mistakes]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1640</guid>
		<description><![CDATA[In the English language we don&#8217;t say, &#8220;They made so many mistakes in the past that they know how to avoid them in the future.&#8221; Instead we say, &#8220;They&#8217;re experienced&#8221;. Making mistakes is what gives you experience. If you come out of college, and for your whole career never made one mistake, then only one [...]]]></description>
				<content:encoded><![CDATA[<p>In the English language we don&#8217;t say, &#8220;They made so many mistakes in the past that they know how to avoid them in the future.&#8221; Instead we say, &#8220;They&#8217;re experienced&#8221;. Making mistakes is what gives you experience. If you come out of college, and for your whole career never made one mistake, then only one of two things have happened: 1) You are bull[<a title="Profanity in the Workplace" href="http://feyn.com/profanity-in-the-workplace/">sh*t</a>]ing yourself 2) You have never tried anything outside of your comfort zone. &#8220;Comfort zone&#8221; refers to things you already know how to do well. When you step outside your comfort zone, you will make mistakes, and the question then is how to recover.</p>
<p><span id="more-1640"></span>In the rare times someone asks me to describe myself, I have thought of describing myself as a &#8220;Professional Mistake Maker.&#8221; It&#8217;s true &#8212; that&#8217;s what I do for a living. I never try things that are in my comfort zone. Never. I find them dreadfully boring. My God, who wants to do again something you already know how to do well? It&#8217;s like getting another gold medal for a race you know you&#8217;re going to win. After 100 races, who cares anymore? It&#8217;s so much more stimulating to come in last to a race you thought you could win, only to find out you have a lot more to learn. And really, this is the root cause of mistakes: <em>a desire to learn</em>.</p>
<p>Making mistakes is an art form. It&#8217;s a beautiful dance of failure, and one whose bittersweet sting I&#8217;ve come to enjoy. Failing is simply a strong indicator that, perhaps, I need to change my approach. Failing completely and utterly (which I&#8217;ve done several times) means only that I need to change directions. If there is one piece of advice a sage Professional Mistake Maker can give you it&#8217;s this: Acknowledge your mistake, learn from it, pick yourself up, and try again. Keep that up for a decade or so and you will be what other people refer to as experienced, but more importantly, you will have a sense of life accomplishment that those who stayed in the comfort zone will never know.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/making-mistakes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inspired Workers</title>
		<link>http://feyn.com/inspired-workers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=inspired-workers</link>
		<comments>http://feyn.com/inspired-workers/#comments</comments>
		<pubDate>Thu, 30 Aug 2012 18:58:07 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1755</guid>
		<description><![CDATA[There is a trend with my posts about software design where I write a lot about how it is a creative process. This is largely because for years, software design was considered to be busy work, and I take extreme issue with that philosophy. I find producing consistently effective software designs to be a very [...]]]></description>
				<content:encoded><![CDATA[<p>There is a trend with my posts about software design where I write a lot about how it is a creative process. This is largely because for years, software design was considered to be busy work, and I take extreme issue with that philosophy. I find producing consistently effective software designs to be a very difficult task, and I deeply respect those who are good at it. I also find that those who are good at it have in common that they are all inspired workers.</p>
<p><span id="more-1755"></span>For me, inspiration is absolutely critical to effectively designing elegant software, and for that reason, I place a high level of importance on my ability to consistently find inspiration. Of course, this can, at times, be nearly impossible. Maybe I&#8217;m having a bad day, or I&#8217;m distracted because of other things happening in my life that are taking psychological priority. Who knows &#8212; maybe I&#8217;m just burned out. The net effect is the same: <em>in these mindsets, I am an ineffective engineer</em>. That does not mean that I can&#8217;t complete user stories or fix bugs in this mindset. I still retain the intellectual ability to come up with a solution, but it probably won&#8217;t be on you want to maintain. This is an important distinction that I think could use a lot more recognition in our industry: an uninspired engineer is an ineffective engineer. If this is true, then an engineer who is regularly uninspired has a big problem on their hands.</p>
<p>If you&#8217;re like me, you should constantly be evaluating whether you&#8217;re in an adequately inspired state of mind to be able to design elegant solutions to your problems. If you&#8217;re finding it difficult to articulate your solution, get up from your computer. Read a book, or look into the distance and take a breather. Get something to drink and listen to some music. Do your best to take your mind completely off of software in general. This is an extremely important trait of consistently effective engineers: knowing how to maximize the amount of time that they&#8217;re inspired, and knowing how to walk the fuck away when they&#8217;re not.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/inspired-workers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keeping it Light</title>
		<link>http://feyn.com/keeping-it-light/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keeping-it-light</link>
		<comments>http://feyn.com/keeping-it-light/#comments</comments>
		<pubDate>Thu, 30 Aug 2012 14:04:02 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>
		<category><![CDATA[Stress]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1736</guid>
		<description><![CDATA[I once created an engineer performance grading system to help management understand when an engineer was ready to be promoted from junior, full, senior, and through to principal. There were seven criteria, one of which was &#8220;Grace Under Pressure&#8221;. As you become more experienced, your ability to deal with the pressure of tight deadlines, fluctuating [...]]]></description>
				<content:encoded><![CDATA[<p>I once created an engineer performance grading system to help management understand when an engineer was ready to be promoted from junior, full, senior, and through to principal. There were seven criteria, one of which was &#8220;Grace Under Pressure&#8221;. As you become more experienced, your ability to deal with the pressure of tight deadlines, fluctuating requirements, and idiot co-workers should increase as you find creative ways to cope with the stress. Dealing with stress becomes the hallmark of someone with a lot of experience. One of the best ways to deal with stress, I think, is humor.</p>
<p><span id="more-1736"></span>I have been accused a few times of being &#8220;intense&#8221;, and it&#8217;s probably a label that I deserve. I love my line of work, and attack it like something I&#8217;m deeply passionate about. However, that passion can come across like a stream of scaling hot water shooting out of a fire hose (<a title="Phrasing" href="http://www.urbandictionary.com/define.php?term=Phrasing" target="_blank">phrasing?</a>). No matter the topic, if I&#8217;m asked a tough question about a tough problem, you&#8217;re going to have to strap in for a bumpy ride (<a title="Phrasing" href="http://25.media.tumblr.com/tumblr_m8umc5FV0d1qd02l0o1_500.gif" target="_blank">phrasing!</a>). Knowing this, I always try my best to lighten the mood either before or after my onslaught, as I know that people can get hurt, and little pain relief goes a long way when the pressure is starting to mount (<a href="http://www.youtube.com/watch?v=VS4QGEQaclk" target="_blank">phrasing!!!</a>).</p>
<p>There are people who let their stress fester, and it leaks out in strange and unexpected ways. Perhaps it&#8217;s a question that comes across more as an accusation, or an email with a harsh tone, or &#8220;Come to Jesus&#8221; meeting for a trivial issue. When you see the tell-tale sights of stress, be the class clown. Anything that will cause people to chuckle, giggle or belly laugh will do. If you&#8217;re no <a href="http://www.youtube.com/watch?v=CKsSvR5u-qk" title="Taste the soup" target="_blank">comedian</a>, give this a try: Next time there&#8217;s a pause in a tense conversation try a &#8220;Ain&#8217;t this a <a title="Profanity in the Workplace" href="http://feyn.com/profanity-in-the-workplace/">b**ch</a>&#8221; or in your most melodramatic tone, &#8220;<a href="http://xkcd.com/1022/" target="_blank">So, it has come to this.</a>&#8221; You might just be making someones day, and if you do it consistently enough, saving the project.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/keeping-it-light/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Somebody&#8217;s Watching Me</title>
		<link>http://feyn.com/somebodys-watching-me/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=somebodys-watching-me</link>
		<comments>http://feyn.com/somebodys-watching-me/#comments</comments>
		<pubDate>Thu, 30 Aug 2012 13:33:41 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[consumerism]]></category>
		<category><![CDATA[nfc]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1725</guid>
		<description><![CDATA[It&#8217;s a simple to envision scenario. As a perspective shopper crosses the brick-and-mortar threshold, between embedded RFID and NFC, what&#8217;s inside of my wallet is quickly scanned. This isn&#8217;t your grandparents&#8217; era of business analytics based on years and years of historic data warehouses, this is near-real time data gathering and heuristic algorithmic triggers that [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s a simple to envision scenario. As a perspective shopper crosses the brick-and-mortar threshold, between embedded RFID and NFC, what&#8217;s inside of my wallet is quickly scanned. This isn&#8217;t your grandparents&#8217; era of business analytics based on years and years of historic data warehouses, this is near-real time data gathering and heuristic algorithmic triggers that may sample the cologne I&#8217;m wearing, track my line of sight eye movements between the aisles and possibly even processing bits of my DNA left behind. Am I describing some scene from Minority Report? Hardly. This is active pursuits by some of the top mobile consumer technologies company currently.  Remember last holiday season&#8217;s attempts to track supposedly anonymized GPS signals inside of malls?</p>
<p><span id="more-1725"></span>A less aggressive version of this is already happening in the fertile eco-system of smart phone apps. Combining social shopping drivers (time limited coupons or pop-up deals), QR scanning and other location-specifying check in functions, now more than ever, retailers have an expanded electronic reach toward their customers. Not satisfied with analyzing past opt-in data, more and more retailers are moving toward capturing all the transient traffic, especially people who are not and by process, opted out of being part of the purchasing demographic. With the proliferation of mobile devices &#8212; <a title="A Camera Phone In A Coffee Shop" href="http://feyn.com/a-camera-phone-in-a-coffee-shop/">mobile sensors</a>, practically &#8212; at all age groups, there&#8217;s never been a richer or more in-depth glimpse of the individual consumer profile than now, by those seeking this information.  It&#8217;s getting difficult to see where sampling ends and Orwellian Big Brother begins.</p>
<p>Maybe the retailers are right. Maybe by knowing everything about me, my life would be better served and my needs anticipated and somehow I have save more time and well, effort. Maybe. Because so many people (the so called masses) completely, willingly perhaps unknowingly, offers all that up without hesitation, all of my efforts (not being saved) at remaining anonymous, not glows neon-bright like the anti-pattern that it is. And that pegs me into a hole as well. Of course, all of this is supposed to done with my authorization and consent.  The only true opt-out appears to be turning off my phone.  However, who does that in this <a title="The Trouble with Mobile" href="http://feyn.com/the-trouble-with-mobile/">always-on/always-connected</a> world we live in?  It may be paranoia, but I cannot shake the feeling that someone is watching me. Even if it&#8217;s for my own well being.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/somebodys-watching-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emergent Design</title>
		<link>http://feyn.com/emergent-design/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=emergent-design</link>
		<comments>http://feyn.com/emergent-design/#comments</comments>
		<pubDate>Tue, 28 Aug 2012 20:46:28 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[Teams]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1713</guid>
		<description><![CDATA[One of the most common points of extreme contention I find between Agile and Waterfall practitioners involves a heated debate about the appropriate time in the project&#8217;s life cycle to be making important decisions about the software&#8217;s architecture. In one corner, we have the Waterfall approach of Big Design Up Front (BDUF), and in the other [...]]]></description>
				<content:encoded><![CDATA[<p>One of the most common points of extreme contention I find between Agile and Waterfall practitioners involves a heated debate about the appropriate time in the project&#8217;s life cycle to be making important decisions about the software&#8217;s architecture. In one corner, we have the Waterfall approach of Big Design Up Front (BDUF), and in the other corner we have the Agile approach of Emergent Design. I&#8217;d like to outline some of the key differences between the two design philosophies because I think the right choice becomes obvious when they&#8217;re contrasted appropriately.</p>
<p><span id="more-1713"></span>Big Design Up Front is exactly what it sounds like: a series of protracted deep-dives into a perceived holistic view of the application. I say &#8220;perceived holistic view&#8221; because this view assumes that the impressions the BAs and the Architects have of the project before it&#8217;s been built are all correct and immutable. Of course, the major drawback to BDUF (and Waterfall, in fact) is that this assumption not only tends to be incorrect with extreme consistency, but is also regularly invalidated very early on in the project&#8217;s life cycle. This is primarily due to the facts that first, humans are fallible and miss requirements or design accommodations; and second, projects evolve very quickly.</p>
<p>Emergent Design is very much to the contrary of BDUF: it is <em>a series of design decisions made out of necessity, rather than supposition</em>. It is design at the <em>last responsible moment</em>: the moment after information has been collected to give appropriate context to a problem, but before it&#8217;s too late to backtrack without reasonably expensive changes. Emergent Design balances strategic design decisions based largely on implicit requirements with tactical design decisions based largely on immediate needs. It assumes refactoring happens every day, and that the optimum design is approached successively, rather than modeled up front.  I know it&#8217;s tempting to do BDUF &#8212; you think you&#8217;ve got it all figured out, and you want to see an intelligent design come to fruition. Trust me on this: resist the urge. You&#8217;ll never know less about the optimum design than you do right now.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/emergent-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finding A Job</title>
		<link>http://feyn.com/finding-a-job/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=finding-a-job</link>
		<comments>http://feyn.com/finding-a-job/#comments</comments>
		<pubDate>Tue, 28 Aug 2012 13:07:08 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[Job]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1636</guid>
		<description><![CDATA[In the software industry, there are always jobs. Sure the larger economy might tank, unemployment might skyrocket, but there are *always* jobs when it comes to writing software. This is one of the reason why people go into writing software in the first place &#8212; guaranteed employability. If you&#8217;re an out of work software developer, [...]]]></description>
				<content:encoded><![CDATA[<p>In the software industry, there are always jobs. Sure the larger economy might tank, unemployment might skyrocket, but there are *always* jobs when it comes to writing software. This is one of the reason why people go into writing software in the first place &#8212; guaranteed employability. If you&#8217;re an out of work software developer, and think I&#8217;m being unkind try this: drop your asking price below market &#8211; they&#8217;ll hire you. The problem is, a job is one thing, but finding the <em>right</em> job is another entirely.</p>
<p><span id="more-1636"></span>Software engineers are the most fickle type of whiny <em>prima donna</em> out there. If you put the average pop starlet up against the average software engineer, I think you&#8217;d find they list of demands right on par in terms of being unreasonable. &#8220;<em>I have to have a Mac</em>&#8221; and &#8220;<em>I like the lights to be dim</em>&#8221; and &#8220;<em>I need to work from home</em>&#8221; are pretty average demands for a software engineer &#8212; and God help you if you don&#8217;t give them what they want. They will pout, stamp their feet, and throw tantrums. However, much like an upset child, it&#8217;s most often not just the individual that&#8217;s the problem, but the environment they&#8217;re in.  They simply need to find a job that better suits them.</p>
<p>Finding the right job is a critical skill for any software engineer. When you start looking for one, you fret about how <em>you</em> will do in an interview. Once you find a company you like, you fret about how <a title="Attracting Talent" href="http://feyn.com/attracting-talent/">they will do in the interview</a>. Nothing is more devastating than being in an interview with your <a title="Dream Job" href="http://feyn.com/dream-job/">dream company</a> only to find out you&#8217;re in a room full of idiots &#8211; or worse, <a title="You’re Arrogant If They Say You Are" href="http://feyn.com/youre-arrogant-if-they-say-you-are/">arrogant</a> idiots. When an engineer hasn&#8217;t found the right job, they will be a holy terror, causing devastation in their wake. If you are such an engineer, take a good look at yourself, and ask yourself if you need to switch jobs. If you employ such an engineer, fire them. Don&#8217;t worry, <a title="Getting Fired Is Easier The Second Time" href="http://feyn.com/getting-fired-is-easier-the-second-time/">it&#8217;s not so bad</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/finding-a-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s A Mobile World After All</title>
		<link>http://feyn.com/its-a-mobile-world-after-all/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=its-a-mobile-world-after-all</link>
		<comments>http://feyn.com/its-a-mobile-world-after-all/#comments</comments>
		<pubDate>Tue, 28 Aug 2012 12:20:00 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[fallacies]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1696</guid>
		<description><![CDATA[In 1995, there were approximately 5 million mobile connections.  A short 15 years later, that number is closer to 5 billion a number that&#8217;s rapidly approaching and will handily surpass the actual population of the planet.  Look around, and look on your person, it&#8217;s likely you&#8217;ll find a smart phone, maybe a tablet or even [...]]]></description>
				<content:encoded><![CDATA[<p>In 1995, there were approximately 5 <em>million</em> mobile connections.  A short 15 years later, that number is closer to 5 billion a number that&#8217;s rapidly approaching and will handily surpass the actual population of the planet.  Look around, and look on your person, it&#8217;s likely you&#8217;ll find a smart phone, maybe a tablet or even an older MP3 player.  This isn&#8217;t even counting such <em>antiquated </em>computing resource like a laptop, and it&#8217;s easy to see why the calculation is going to average over four such devices per person.  To say there will be growth in mobile is a bit of an understatement, once you consider all the other &#8220;widgets&#8221; yet to come &#8212; from embedding into appliances to health-related devices, like glucose meters, heart monitors or even plain old thermometers.  My point is, lots of mobile (platforms) invites for lots of mobile apps.  Seems like daily, that I hear about someone becoming a mobile application developer.</p>
<p><span id="more-1696"></span>Most of that distinction centers around the devices themselves &#8212; screen resolution, rendering, native code vs HTML5, etc &#8212; things related to UI or frontend development.  On the back-end or server side, it may not matter what type of client is being serviced, be it web application or mobile application.  In this always-connected world, developers are growing up without memories, and the lessons learned, of a time when latency, bandwidth and topology often did break the application.  The luxury of not knowing that time period, when speed is measured in bps instead of Mbps, is reflected in the design and performance of these applications.  They are wasteful in consuming bandwidth; they remain largely un-informed regarding network security; the hidden cost of transport is readily passed onto the users themselves; and avoiding bottlenecks happens <a title="Don’t Just Buy More Hardware" href="http://feyn.com/dont-just-buy-more-hardware/">after the launch</a>, and then sudden success breaks the application itself &#8212; to the point we&#8217;ve coined terms for it, FailWhale, slashdotted, to just name a few.</p>
<p>It&#8217;s not that ideas like social or image-centric applications weren&#8217;t dreamt of prior to this current state of mobile application.  However, resource constraints meant that creative solutions were applied elsewhere.  It simply seems like currently, developers are producing apps, even useful ones, without consideration that mobile devices may travel in and out of range, cross network (much less, national) boundaries and there may be cost/penalties levied against the user in a heavy data model.  Why?  Because broadband, DSL, Ethernet and WiFI have created this myopic vision of the world.  I&#8217;d like for apps to continue to maintain reasonable functionality when the signal is weak.  I&#8217;d like for apps to be mindful of my battery and data consumption.  I certainly have no interest in paying for roaming charges &#8212; a scenario much more common outside of North America &#8212; unnecessarily by dormant programs.  But none of those seems to be top of mind in this generation of mobile apps, and instead, as a user I&#8217;m left to fend for myself.  Can you hear me, <a title="The Point" href="http://feyn.com/the-point/">creators of products and solutions</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/its-a-mobile-world-after-all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speed and Quality</title>
		<link>http://feyn.com/speed-and-quality/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speed-and-quality</link>
		<comments>http://feyn.com/speed-and-quality/#comments</comments>
		<pubDate>Fri, 24 Aug 2012 13:36:36 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality Assurance]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1660</guid>
		<description><![CDATA[Speed and quality are universally contentious. Engineers always choose quality, but claim to value speed. Business owners always choose speed, but claim to value quality. Each side is skeptical of the other&#8217;s intentions when their actions seem to contradict their claims. Why does such an ironic and contentious relationship exist between the funder and the implementer? This [...]]]></description>
				<content:encoded><![CDATA[<p>Speed and quality are universally contentious. Engineers always choose quality, but claim to value speed. Business owners always choose speed, but claim to value quality. Each side is skeptical of the other&#8217;s intentions when their actions seem to contradict their claims. Why does such an ironic and contentious relationship exist between the funder and the implementer? This post is not a referendum on either side: it&#8217;s a bi-directional concession letter, between Competent Business Owner and Competent Engineer.</p>
<p><span id="more-1660"></span>Dear Competent Business Owner: To an engineer, speaking about speed is speaking idiomatically about the fastest responsible pace, which is to say the fastest pace at which acceptable quality can be achieved. When you demand shorter timelines, we perceive that you are undermining our judgment about how long acceptable quality should take &#8212; which, by the way, you are, in fact, doing. Negotiate with us, and work with us to understand why we&#8217;re taking longer than you would like.</p>
<p>Dear Competent Engineer: Respect the fact that when speaking about code complexity and time lines, you are in an unfair position of leverage, similar to the position an auto-mechanic is in, explaining to a suburban house-wife why an $80 oil change turned into a $600 repair. Abuse this position at the expense of all of our collective credibility. Work with the business owner to explain that your job is mentally taxing, and your synapses need time to fire. Explain that to rush would be to rob them blind in maintenance cost and future feature additions. Negotiate with them, and work to understand why they need you to occasionally <a title="Debt" href="http://feyn.com/debt/">cut corners</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/speed-and-quality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The First Ninety Days</title>
		<link>http://feyn.com/the-first-ninety-days/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-first-ninety-days</link>
		<comments>http://feyn.com/the-first-ninety-days/#comments</comments>
		<pubDate>Fri, 24 Aug 2012 11:39:35 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Teams]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[compromise]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[velocity]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1657</guid>
		<description><![CDATA[With every new job, there is a short but finite honeymoon period &#8212; it&#8217;s called that, because similar to marriage, there is an initial rush of adrenalin and endorphins and obviously, the promise of the new opportunities &#8212; if there was not promise, why bother leaving one position for another? &#8212; and everyone bask in [...]]]></description>
				<content:encoded><![CDATA[<p>With every new job, there is a short but finite honeymoon period &#8212; it&#8217;s called that, because similar to marriage, there is an initial rush of adrenalin and endorphins and obviously, the <em>promise</em> of the new opportunities &#8212; if there was not promise, why bother leaving one position for another? &#8212; and everyone bask in that glow.  In time, those feelings might change, and reality will gradually come back into focus.  Familiarity will erode the novelty and the real challenges of the role will become apparent.  Some employees already recognize this, but many are not fully aware/cognizant&#8230; your first ninety days on the job holds the greatest indicator of nearly all your future success in that role.</p>
<p><span id="more-1657"></span>Regardless of your background, skill set and the environment, the fundamentals of the challenges, of the situation remains the same. It may be that you&#8217;re brought on-board for a new effort (growth), or to replace someone, either doing a good job (maintenance) or doing a bad job (rescue), there is a transition period where you will have the least amount of knowledge, despite of whatever other hard skills you bring to the table. More importantly, there will be a lot of focus/emphasis because you&#8217;re often the <em>visual</em> representation of the change itself. Momentarily, it may seem like one of the three &#8212; growth, maintenance, rescue &#8212; may have an advantage over another, but ultimately, you&#8217;d want to excel in any one specific, as long as you&#8217;re aware of the challenges going into the new setting.</p>
<p>I won&#8217;t bother with the specific strategies, as there are no two situation that&#8217;s exactly alike. But a similar approach may be adopted at addressing all scenarios, regardless of origin &#8212; and to some degree &#8212; or the challenge itself. Learn quickly. Examine the problems you&#8217;re asked to solve quickly, and pick the right strategy for attack. Garner some quick wins, however small. And if you make mistakes, make them smaller and make them more quickly. Build those relationships with the stakeholders, and make sure the technology and the technical solutions show sufficient alignment to the business itself. As you cultivate those relationships, measure them in the level of reciprocal support, because you&#8217;ll need them down the road, when things get really tough. And did I mention do everything as fast as possible? It&#8217;s not rocket science, but it will require some effort and a clear vision and sharp, critical thinking. It&#8217;s a piece of cake, as long as you can catch your breath.  The clock is ticking, why are you still sitting there, just reading?</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-first-ninety-days/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When Ambushed For An Estimate</title>
		<link>http://feyn.com/when-ambushed-for-an-estimate/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=when-ambushed-for-an-estimate</link>
		<comments>http://feyn.com/when-ambushed-for-an-estimate/#comments</comments>
		<pubDate>Thu, 23 Aug 2012 14:04:49 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Estimate]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Meeting]]></category>
		<category><![CDATA[Project]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1588</guid>
		<description><![CDATA[Held captive in a status meeting, your moment of shame approaches. Vulnerable and exposed, like a naked baby laid before encroaching doom, you await your turn. Your peers&#8217; bold claims, naive honesty, and feeble excuses are recorded for posterity by a stone faced facilitator. They work their way around the room, thinly masking disdain at [...]]]></description>
				<content:encoded><![CDATA[<p>Held captive in a status meeting, your moment of shame approaches. Vulnerable and exposed, like a naked baby laid before encroaching doom, you await your turn. Your peers&#8217; bold claims, naive honesty, and feeble excuses are recorded for posterity by a stone faced facilitator. They work their way around the room, thinly masking disdain at any answer that is not a crisply delivered &#8220;I&#8217;m done&#8221;. Finally, the time of judgement is upon you. As you fumble to explain your lack of completion, you are interrupted by a question that has struck down even the strongest among us: &#8220;When will you be done?&#8221; Fighting back a swelling tide of emotion, you try desperately to think of what you can say that you haven&#8217;t already. Step aside my child, let me handle this.</p>
<p><span id="more-1588"></span>&#8220;I&#8217;m not sure how to answer,&#8221; I reply calmly, shifting my body language to show that I am relaxed, yet ready for battle. The facilitator is caught off guard &#8212; never has a commoner dared to express a lack of certainty in response to a direct demand for delivery date. &#8220;Why not?&#8221; they reply gruffly, unable to mask their frustration. Looking distant and aloof, I move another piece into position: &#8220;I don&#8217;t have enough information to know how much work is ahead of me.&#8221; Infuriated by this apparent recrimination, they chortle &#8220;What information do you need?&#8221; I respond with, &#8220;I don&#8217;t know yet, but should in the next few hours&#8221;. Bishop takes queen-side rook. <em>Check</em>.</p>
<p>Stunned and confused, your opponent breaks out into a cold sweat, struggling to identify their next move. How can they now ask for a direct answer without appearing overbearing &#8212; or worse yet &#8212; disconnected from the realities of actually doing work? Surely there must be a way out, but every second that ticks away erodes their authority. In an ill-advised and clumsy maneuver, they let fly what they hope to be a killing stroke: &#8220;So can I have your answer by end of day?&#8221; With a rakish grin, my overarching strategy is finally revealed, too late to be thwarted: &#8220;That depends on how long this meeting takes.&#8221; Chuckles are heard throughout the room. <em>Checkmate</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/when-ambushed-for-an-estimate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Dangerous Corollary</title>
		<link>http://feyn.com/a-dangerous-corollary/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-dangerous-corollary</link>
		<comments>http://feyn.com/a-dangerous-corollary/#comments</comments>
		<pubDate>Tue, 21 Aug 2012 18:57:47 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Teams]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[promotion]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1624</guid>
		<description><![CDATA[One of the most difficult challenges I face in my professional life is is maintaining a healthy working relationship with people who I believe are deeply incompetent. Incompetency is, for me, extremely difficult to stomach &#8212; far more difficult than, say, laziness or apathy, because whereas those might point to an attitude problem, incompetency reveals that [...]]]></description>
				<content:encoded><![CDATA[<p>One of the most difficult challenges I face in my professional life is is maintaining a healthy working relationship with people who I believe are deeply incompetent. Incompetency is, for me, extremely difficult to stomach &#8212; far more difficult than, say, laziness or apathy, because whereas those might point to an attitude problem, incompetency reveals that the <em>basic skills</em> necessary to effectively perform daily tasks are missing. To further exacerbate the issue, one of my [many] personal character flaws is that I find it extremely difficult to relate to or to support someone I do not respect. Because of this, I&#8217;ve not only become acutely aware of the truth behind the <a title="Peter Principle" href="http://en.wikipedia.org/wiki/Peter_Principle" target="_blank">Peter Principle</a>, but I&#8217;ve also picked up on an even more dangerous corollary that&#8217;s become more and more prevalent in the workplace. For the sake of discussion, I&#8217;ll refer to it as the Napier Principle.</p>
<p><span id="more-1624"></span>The Peter Principle stipulates that the phenomenon of systemic incompetency in the workplace can be attributed to a fundamental flaw in corporate advancement strategy. That is, if employees are promoted based on their successes, they will naturally tend to rise to their level of incompetence, or to the point where they cease to succeed. While this is concerning, I&#8217;ve noticed a growing trend where companies attempt to promote employees <em>out of their level of incompetence</em>.</p>
<p>This, to me, is both far more disconcerting, and absolutely <em>absurd</em>, because with the Peter Principle, promotions cease at an employee&#8217;s level of incompetency; but with the <strong>Napier Principle</strong>, <em>that&#8217;s exactly where they start</em>! Don&#8217;t believe me? What about that one middle-manager at your company who used to be an engineer, but was terrible at it, and thus promoted to be kept away from the <a title="The Cooperative Code Base" href="http://feyn.com/the-cooperative-code-base/">codebase</a>? Somehow, their inability to perform their task effectively lead to a leadership role over <a title="Gauging Oneself" href="http://feyn.com/gauging-oneself/">others who could</a>. Watch out for this: it is cancer to an organization. Run from this type of company, unless you&#8217;ve been hired to address this type of problem. All the Napier Principle leads to is a disconnect between the manager and the employee, and resentment. Oh, and more incompetency.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/a-dangerous-corollary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Career In Sales</title>
		<link>http://feyn.com/a-career-in-sales/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-career-in-sales</link>
		<comments>http://feyn.com/a-career-in-sales/#comments</comments>
		<pubDate>Tue, 21 Aug 2012 15:22:29 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1648</guid>
		<description><![CDATA[I love information technology.  I&#8217;ve been fortunate, in that I&#8217;ve always known what I wanted to do [professionally] and then be able to pursue that with vigor and passion. Over time, as I move up and through my career ladder, I&#8217;ve deliberately aligned myself with people who&#8217;ve garnered my respect, and conversely, people who recognize [...]]]></description>
				<content:encoded><![CDATA[<p>I love information technology.  I&#8217;ve been fortunate, in that I&#8217;ve always known what I wanted to do [professionally] and then be able to pursue that with vigor and passion. Over time, as I move up and through my career ladder, I&#8217;ve deliberately aligned myself with people who&#8217;ve garnered my respect, and conversely, people who recognize my values.  As such, I&#8217;ve worked for a series of companies fitting a certain profile.  Until recently&#8230; with some changes in my [personal] life, I suddenly find myself craving something different, something outside of what I&#8217;ve known.  Making career changes is not the simplest of tasks and required that I exercise some skills I&#8217;ve not used in some time.</p>
<p><span id="more-1648"></span>For one thing, I had gotten <em>rusty</em> at interviewing.  Not because I haven&#8217;t had to apply for one position or another over time, but because I had selectively favored companies whose audience already favored what it is that I do. I hadn&#8217;t needed to walk into a cold room, as there often is an insider recommendation easing my application for employment.  This time, it was different.  Or the same.  I had just forgotten.  I&#8217;m back at the catch-22 of starting out &#8212; wanting a position without the exact experience required, and wanting the experience without some prior qualified position &#8212; remember that period of your life?  Luckily, my fellow feyn-mates worked with me on re-activating and exercising those dormant muscles of selling my highlights to the prospective (hiring) audience.  As engineers, we are not foreign to the concept of sales.  I don&#8217;t just mean working with the sales team down the hall.  Or vendors who routinely pitch us one type of wares or another.  We ourselves participate in selling daily, even if we&#8217;re not fully cognizant of the act.</p>
<p>We are selling, when people accept the solution we&#8217;ve proposed.  We are selling, when people adopt the practices we&#8217;ve been espousing.  We sell to our bosses on time lines and deliverables.  We sell to business stakeholders, even if it&#8217;s fraught with negotiated terms.  We sell to one another in the team, in dividing up the tasks or assignments.  For those of us who manage people, we sell the motivation for achieving corporate goals, occasionally.  And of course, at the end of the day, we sell to our customers by reminding them how the product meets their needs.  It may not always be slick brochures and rib eye lunches, or extolling past accomplishments and regaling perspective employers with an engaging narration &#8212; those things definitely help, incidentally &#8212; but as professional engineers, we just happen to be able to take the next step past selling sketches on a napkin.  We do more than pitch.  We can build it.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/a-career-in-sales/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make it Crash</title>
		<link>http://feyn.com/make-it-crash/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=make-it-crash</link>
		<comments>http://feyn.com/make-it-crash/#comments</comments>
		<pubDate>Tue, 21 Aug 2012 13:20:33 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Crash]]></category>
		<category><![CDATA[System]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=581</guid>
		<description><![CDATA[Want to find out if an engineer performance tested their application? Tell them to do one thing for you: Make it crash. That&#8217;s right, bring the network traffic to a crawl; force it to run out of memory; take away disk space. Have them demonstrate that they know the limits of their application so well, [...]]]></description>
				<content:encoded><![CDATA[<p>Want to find out if an engineer performance tested their application? Tell them to do one thing for you: Make it crash. That&#8217;s right, bring the network traffic to a crawl; force it to run out of memory; take away disk space. Have them demonstrate that they know the limits of their application so well, they can make it fall over at will. If they&#8217;re bad ass, they&#8217;ll whip out a test script and start it up. In a few minutes, the application should crash in a predictable way &#8212; predictable if the application is well designed. But really, my point here is to <strong>try</strong> to make it crash but not be able to.</p>
<p><span id="more-581"></span></p>
<p>Under extreme performance conditions, a well designed application will just grind to a halt and stop honoring requests, rather than puke and collapse into an unrecoverable state. This is actually not an easy thing to design, as it requires quite a bit of art to pull off. Within the industry, people don&#8217;t talk about this evil little place where the application runs out of system resources as electrons and silicon fight for air in a rapidly drying pool of capacitance. No, we like to ignore this and <a title="Don't just buy more hardware" href="http://feyn.com/dont-just-buy-more-hardware">say stupid things</a> to make ourselves try to forget that the inevitable is just an DDOS attack away.</p>
<p>Bad things will happen. Your poor application will one day leave the nest and and take its place in the cloud. On that day, it will no longer have you to protect it by increasing the heap size of your local app server or closing your email because you&#8217;re running out of RAM. It will be in a deployment environment outside of your control for an indefinite period of time, and its only defense against falling over in the face of dwindling resources is what you give it when you&#8217;re building it. If it makes you feel any better, most engineers don&#8217;t give a sh*t about this, and just let it fall over, but then again most <a title="Engineers are Lazy Bastards" href="http://feyn.com/engineers-are-lazy-bastards">engineers are lazy bastards</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/make-it-crash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technical Debt</title>
		<link>http://feyn.com/technical-debt/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=technical-debt</link>
		<comments>http://feyn.com/technical-debt/#comments</comments>
		<pubDate>Thu, 16 Aug 2012 16:38:57 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1572</guid>
		<description><![CDATA[While on site at a client the other day, I heard one of the FTEs make the statement about their brand new legacy application that &#8220;there was too much technical debt, so it needed to be rewritten&#8221;. I cringed a little bit, but I considered that I was just being pedantic, and decided not to [...]]]></description>
				<content:encoded><![CDATA[<p>While on site at a client the other day, I heard one of the FTEs make the statement about their <a title="Brand New Legacy" href="http://feyn.com/brand-new-legacy/" target="_blank">brand new legacy application</a> that &#8220;there was too much technical debt, so it needed to be rewritten&#8221;. I cringed a little bit, but I considered that I was just being pedantic, and decided not to nit-pick at the misuse of the term &#8220;technical debt&#8221;. Looking back, I&#8217;m not sure I should have let that statement go. I probably should have shed light on the important distinction that should be made between accruing technical debt and creating a mess.<span id="more-1572"></span></p>
<p>Technical debt is the result of an engineer being faced with the choice of the appropriate design decision at the time, or some other favorable outcome (usually short-term), and consciously deciding to go with the latter. Accruing technical debt is intentional, like using a credit card. It&#8217;s a decision to get a result without contributing the effort necessary to earn the result, but always with the intention of paying it down. Just like with credit, if the debtor is good at managing their technical finances, they should be able to easily avoid falling into overwhelming debt, usually resulting in having to negotiate with bill collectors (management) and occasionally resulting in declaring bankruptcy (a rewrite).</p>
<p>A mess, on the other hand, is an unmitigated river of a bad decisions devoid of any discernible amount of discretion. It is bad decision making without rhyme or reason, and is typically perpetuated by engineers who have no context or frame of reference by which to measure a good design decision over a poor one. Messes are extremely dangerous, because they point to a competency or professionalism problem, and almost always result in a rewrite, the scale of which is proportional to how intricately the mess has been woven into the fabric fibers of the application. Look at your code, and focus on the parts that disturb you. Check the author&#8217;s other commits. Make sure they were intentional and temporary, and hopefully annotated with a TODO. Otherwise, you might find yourself <a title="The Office - Declaring Bankruptcy" href="http://www.youtube.com/watch?v=fNqoLRy4VHw" target="_blank">declaring bankruptcy</a> on behalf of someone else&#8217;s mistakes.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/technical-debt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When Good Scripts Go Bad</title>
		<link>http://feyn.com/when-good-scripts-go-bad/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=when-good-scripts-go-bad</link>
		<comments>http://feyn.com/when-good-scripts-go-bad/#comments</comments>
		<pubDate>Thu, 16 Aug 2012 14:01:11 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality Assurance]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1559</guid>
		<description><![CDATA[This week, an incident happened with Knight Capital when their &#8220;trading algorithms&#8221; allegedly cost the firm hundreds of millions of dollars. Within hours of the story, various camps have been quick to denounce the algorithms and the automation that was supposed to save the day.  Of course, the problem is in automation, because automation is [...]]]></description>
				<content:encoded><![CDATA[<p>This week, an incident happened with <a href="http://goo.gl/DX2sc" target="_blank">Knight Capital</a> when their &#8220;trading algorithms&#8221; allegedly cost the firm hundreds of millions of dollars. Within hours of the story, various camps have been quick to denounce the algorithms and the automation that was supposed to save the day.  Of course, the problem is in automation, because automation is supposed to reduce errors and prevent outages and boost security and mitigate risks and improve the bottom line and make ice cream sundaes with a cherry on top.  Except when it doesn’t, and now this latest mishap only adds to the argument against such automated practices.</p>
<p><span id="more-1559"></span>The challenge is that, automation does not reduce errors like some magical fairy dust.  People have rallied around it without realizing some the side effects, especially when the starting points of so many automated tasks may be severely flawed to begin with.  Automation will not clean up your mess, and more importantly, it absolutely removes some of the safety controls that were once present in the manual and belabored efforts.  The elimination of small and frequent interactive human touches &#8211; where the same small and frequent errors are injected &#8211; means that now, one singular mistake may be replicated through the whole and the magnitude of such a singular mistake is magnified many folds.  Fewer small problems, but boy, the one problem will likely be HUGE.  Automation’s strength aligns with speed, scale and cost reduction.  “Doing it wrong” is a human mistake, and not a weakness of automation.  The computer is literal, it is doing exactly as you commanded it to. As a tool, automation must be used to increase coverage, <a title="Automate Yourself out of a Job" href="http://feyn.com/automate-yourself-out-of-a-job/" target="_blank">like in QA</a>, and not for simple <a title="QA As A Crutch" href="http://feyn.com/qa-as-a-crutch/" target="_blank">laziness</a>, believing that the tools will manage themselves.</p>
<p>The duality of being great at engineering is that there is absolutely no recognition &#8212; sometimes, not even a <em><a title="The Path to Becoming an Agile Developer, Not" href="http://feyn.com/the-path-to-becoming-an-agile-developer-not/" target="_blank">nod</a></em> from the direction of the software team themselves &#8212; on achieving a spectacular milestone. However, the Spanish Inquisition will assuredly arrive to find facts on behalf of the management team if things ever go awry. The level of ensuing finger-pointing is directly proportional to the level of publicity such a going-astray commands. Remember, by that time, it&#8217;s not really about identifying causality as much as channeling the embarrassment or anger onto some deflective path, as to avoid the painful introspection [ or revelation ] on what truly went wrong. Identifying <em>human</em> errors takes effort, gumption and a heaping bowl of humility. The easier out is to un-shoulder the responsibility onto systems and processes &#8212; oh especially automation &#8212; because that&#8217;s surely where the mistakes were made.  If it was up to me, I’d still double-down on automation.  The alternative is not the answer.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/when-good-scripts-go-bad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drafted into Leadership</title>
		<link>http://feyn.com/drafted-into-leadership/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=drafted-into-leadership</link>
		<comments>http://feyn.com/drafted-into-leadership/#comments</comments>
		<pubDate>Thu, 16 Aug 2012 12:13:14 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[Culture]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Leadership]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1449</guid>
		<description><![CDATA[Corporate culture is obsessed with the term &#8220;leadership&#8221;. They pride themselves on being &#8220;leaders&#8221;, and for fostering &#8220;leadership&#8221; within their organization. We even have the idea that everyone is a &#8220;leader&#8221; in his or her own right, each taking personal accountability over what they do every day and &#8220;leading&#8221; in their own special way. I [...]]]></description>
				<content:encoded><![CDATA[<p>Corporate culture is obsessed with the term &#8220;leadership&#8221;. They pride themselves on being &#8220;leaders&#8221;, and for fostering &#8220;leadership&#8221; within their organization. We even have the idea that everyone is a &#8220;leader&#8221; in his or her own right, each taking personal accountability over what they do every day and &#8220;leading&#8221; in their own special way. I glaze over when people talk about leadership. I fully expect that you&#8217;re glazing over just reading the opening of this article. It&#8217;s old. It&#8217;s stale. We&#8217;ve heard it all before. At this point it&#8217;s boring. Someone who takes ownership of cobbling together a PowerPoint before a big presentation, and the people who lead troops to storm Normandy ain&#8217;t the same type of leader. They ain&#8217;t even in the same ballpark. Those types of leaders didn&#8217;t want to lead, they were drafted into it and rose to the occasion. To the rest of us, these are the people we want to call leaders.</p>
<p><span id="more-1449"></span>Being drafted into leadership sucks. One day, you&#8217;re minding your own business, trying to do the best job you know how, and then someone taps you on the shoulder and asks you to take on a formal leadership role. The though is this: You&#8217;ve displayed an innate leadership ability (probably without trying) and if they give you an official title, you&#8217;ll be all the more effective. It&#8217;s hard to think of a more destructive thing. The reason you are (soon to be were) an effective leader is that you were, &#8220;one of us&#8221; &#8211; someone who worked with us in the trenches, and therefore had a pulse on what was really going on. As soon as you are promoted, you instantly become &#8220;one of them&#8221;. Furthermore, what used to come naturally to you now has to be forced through a sieve of &#8220;appropriate conduct&#8221;, further eroding any respect you may have garnered by working shoulder to shoulder with your peers. Instead of grinding away day-by-day buried in the suck, you&#8217;re away in some <a title="God Please No More Meetings" href="http://feyn.com/god-please-no-more-meetings/">pointless meeting</a>. Instead of being able to say, &#8220;That guy&#8217;s an incompetent [<a title="Profanity in the Workplace" href="http://feyn.com/profanity-in-the-workplace/">flip</a>]&#8220;, you have to say, &#8220;He has an opportunity for improvement&#8221;. You&#8217;re neutered. You lost your mojo. And it&#8217;s not coming back.</p>
<p>Then there&#8217;s the thing that always gets me: Leadership &#8211; in corporate culture &#8211; sucks. They&#8217;re not leaders. They&#8217;re out for themselves, and to make themselves look good so they can climb to the next rung. Don&#8217;t talk to me about the exceptions, I&#8217;m talking about the rule. Once you become &#8220;one of them&#8221; you can&#8217;t go back to being &#8220;one of us&#8221; &#8211; there isn&#8217;t a reverse career path. Therefore, you have to claw and climb up the food chain because there is no place left to go but up. How do you rise in an organization? By putting yourself second to the needs of the team? In fantasy-wonderland maybe, but in the real world you follow the laws of power, and do what has to be done to outshine the next guy. Why? You have no choice &#8211; you&#8217;re a &#8220;leader&#8221; now. Don&#8217;t you have ambition? You don&#8217;t want to be a <a title="Incentivizing Mediocrity" href="http://feyn.com/incentivizing-mediocrity/">middle manager</a> your whole life, do you? Besides, the higher your rise, the greater your ability to address broader organizational concerns, right? Keep telling yourself that. What&#8217;s the solution? Quit your job, and get hired on as a grunt somewhere else to re-boot your career. Either that, or settle in to spending the next decade of your life desperately clinging to the hope that one day you might be the next VP in charge of whatever, only to find out that your past loyalty to the troops hinders your ability to rise by stepping on them.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/drafted-into-leadership/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop Saying &#8220;So&#8221;</title>
		<link>http://feyn.com/stop-saying-so/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=stop-saying-so</link>
		<comments>http://feyn.com/stop-saying-so/#comments</comments>
		<pubDate>Wed, 15 Aug 2012 13:02:13 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1552</guid>
		<description><![CDATA[“So, hey, you’ve got that report ready for review at 4 o’clock, right?” “So, uh…I thought I had until Monday for that…” “‘SO-A?’? No, not on SOA, on ‘World Domination and All Things Evil.’” “So&#8230;no, I said, ‘so, uh‘&#8230;” “&#8230;So…I don’t really know what you’re saying to me, but if you could have that report [...]]]></description>
				<content:encoded><![CDATA[<p>“So, hey, you’ve got that report ready for review at 4 o’clock, right?”<br />
“So, uh…I thought I had until Monday for that…”<br />
“‘SO-A?’? No, not on SOA, on ‘World Domination and All Things Evil.’”<br />
“So&#8230;no, I said, ‘so, uh‘&#8230;”<br />
“&#8230;So…I don’t really know what you’re saying to me, but if you could have that report ready by 4, it would be great&#8230;”</p>
<p><span id="more-1552"></span>This type of conversations absolutely drives me up the fucking wall. I hear it in one form or another multiple times a day, and only after actually taking the time to write it down did it finally occur to me what was so intolerable about this type of weak speech: it&#8217;s the word &#8220;so&#8221;. Somehow &#8212; and I&#8217;m not sure when this happened &#8212; &#8220;so&#8221; became the staple of passive-aggressive prose in the workplace, preceding any statements that the speaker might foresee as being potentially disruptive or ill-received. For some reason, people think that it&#8217;s a diffusing technique. When I hear it, I instantly &#8212; possibly subconsciously, even &#8212; label the speaker as preeminently defensive and ineffectively manipulative.</p>
<p>Stop pussy-footing around your point. Worried you&#8217;ll lose your job for what you&#8217;re about to say? Hire a communication coach to teach you how to effectively articulate your point while maintaining an open, honest, direct and respectful approach. Still worried about losing your job? Find another one! Don&#8217;t waste your time in an environment where your perspectives will be discouraged unless you can dilute them with weak, indirect language. Seriously, avoid saying “so” as much as possible, and when you&#8217;re tempted to, ask yourself why. While it may seem to keep tempers down in the workplace and buy you a little time to write your reports, it comes across as if you’re either trying to mask your incompetence or stall while you think of an answer the person wants to hear. Either way, it’s not good. Don’t do it anymore, okay?</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/stop-saying-so/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Work More Hours</title>
		<link>http://feyn.com/work-more-hours/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=work-more-hours</link>
		<comments>http://feyn.com/work-more-hours/#comments</comments>
		<pubDate>Tue, 14 Aug 2012 14:33:23 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[Teams]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[Hours]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Project]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1463</guid>
		<description><![CDATA[If you&#8217;re a senior-or-above talent, you know how work longer hours without it significantly impacting your work product. For this, I&#8217;m talking about the 40-50 hour range. Most people start to fall off around the 50-60 hour range, and we all start producing crap around 60-80 hours. Beyond 80 hours, it probably time to look [...]]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;re a senior-or-above talent, you know how work longer hours without it significantly impacting your work product. For this, I&#8217;m talking about the 40-50 hour range. Most people start to fall off around the 50-60 hour range, and we all start producing crap around 60-80 hours. Beyond 80 hours, it probably time to look for a new job. Having said this, let&#8217;s focus on the 40-50 hour range. If your employer suggests or requires that you work these extra hours, it&#8217;s probably <em>not</em> going to destroy your home life, or wreck your sense of well-being, so the impact should be minimal, if not negligible. Why not work these extra hours? Because you&#8217;re not getting paid for them.</p>
<p><span id="more-1463"></span>When you sign on with a company, there&#8217;s a document you sign called your employment agreement. Give that a read. If it says you are required to work a 50 hour work week, and you signed it to get your job, stop reading as this article doesn&#8217;t apply to you. However, if you&#8217;re like to majority of us, it probably assumes a 40 hour work week, which is most likely explicitly called out in the employee handbook. What this &#8220;40 hour work week&#8221; implies, however, is largely lost on people working in software development. It doesn&#8217;t imply that you come in at 9:15am, take an hour for lunch, and then leave at 4:45pm so that you can dodge traffic. No, it&#8217;s saying that you owe them 40 hours of business value. When you do the math, that&#8217;s more like you arriving at 8:00am and leaving at 5:00pm with a 1 hour lunch break, or working 9-to-5 but skipping a lunch break. That&#8217;s what they&#8217;re paying you for, but you abuse the system and end up giving them around 6.5 hours a day. They get pissed, and try to balance the equation by pressuring you to work more hours.</p>
<p>Then, there&#8217;s the quality of the hours you do give them. Let say you are one of the few employees in software development who give their employer a solid 8 hours a day of business value. What did you do during those 8 hours? Did you goof off in the break room? Did you attending a <a title="God Please No More Meetings" href="http://feyn.com/god-please-no-more-meetings/">mind-numbing meeting</a> where you spent most of your time paying bills online? Are you giving them the business value they&#8217;re paying you for? What I&#8217;m driving at here is that we [ collectively ] need to stop bitching about being asked to work overtime <strong>UNTIL</strong> we start giving them the solid 8 hours they pay us for. At that point, when they want us to work the weekend we can legitimately put our foot down and politely decline. What happens next will hopefully be a discussion acknowledging the difference between a <a title="Knowledge worker" href="http://en.wikipedia.org/wiki/Knowledge_worker" target="_blank">knowledge worker</a> and a factory worker. Then again, we could always <a title="Jimmy Hoffa" href="http://en.wikipedia.org/wiki/Jimmy_Hoffa" target="_blank">unionize</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/work-more-hours/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Bring Your Toys To Work</title>
		<link>http://feyn.com/dont-bring-your-toys-to-work/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dont-bring-your-toys-to-work</link>
		<comments>http://feyn.com/dont-bring-your-toys-to-work/#comments</comments>
		<pubDate>Tue, 14 Aug 2012 13:33:16 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1544</guid>
		<description><![CDATA[Mobile is changing our lives.  We now have nearly un-dreamt amount of computing resources in our pockets, and it has deeply enriched our day to day experiences, especially for the current consumption-centric life styles we lead.  But, companies seem to be resistant in adopting the same outlook, and are in fact, not embracing the BYOD [...]]]></description>
				<content:encoded><![CDATA[<p>Mobile is changing our lives.  We now have nearly un-dreamt amount of computing resources in our pockets, and it has deeply enriched our day to day experiences, especially for the current consumption-centric life styles we lead.  But, companies seem to be resistant in adopting the same outlook, and are in fact, not embracing the <a title="Bring Your Own Device" href="http://en.wikipedia.org/wiki/Bring_your_own_device" target="_blank">BYOD</a> movement.  MP3 players were OK, but corporate IT seems so resistant about hooking up your Samsung Galaxy Nexus for Email, or adding you to the WiFi network.  Don&#8217;t they get the value?  That’s just the business being slow and monolithic and missing out on the wonderful opportunities, right?  Not so fast.</p>
<p><span id="more-1544"></span>It’s easy to blast the decision makers for not embracing the wonderful world of tablets, and phones and other cool, nifty toys in this mobile space.  However, that’s just it… more than a few of the mobile innovations are <em>still</em> just toys.  Admit it, most of the popular apps fall in the infotainment curve, and is of little productive value.  Do people consider investment returns prior to purchasing that iPad?  How does it improve the household bottom line in leveraging mobile?  More importantly, I wonder how many purchase decision was simply made – on a credit card no less – without consideration of expenditure and debt.  It&#8217;s really just a cost center, without even the slightest appearance of generating revenue.  The office cannot be quite as un-restrained as readily-swayed impulse shoppers in a mall.  As much as we may crave some of those comforts, the work place isn’t about the consumer experience.</p>
<p>You’re not supposed to be playing Words With Friends, Draw Something or practice photo-journalism.  Taking a break from the keyboard, was never supposed to be surfing for the daily-LOL on YouTube.  The employment agreement, in <a title="Work More Hours" href="http://feyn.com/work-more-hours/">exchange for a paycheck</a>, surprisingly does not mention Facebook and stringently require that &#8220;work&#8221; be performed during the work day.  Who knew?  Additionally, most people probably do not practice enough safe computing in protecting their (personal) information, treat malware prevention as an after-thought, and heck, if you lose the phone, just go and purchase another one.  Can you imagine working at a place with those kinds of cavalier approaches to asset, security management and business practices?  No?  Some day, when the apps catch up and there is a proper model for securing devices and generating returns, mobile may be the <em>only</em> platform in the enterprise.  Until then, get back to your desk already.  Five o’clock is still hours away.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/dont-bring-your-toys-to-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Let The Stapler Go</title>
		<link>http://feyn.com/let-the-stapler-go/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=let-the-stapler-go</link>
		<comments>http://feyn.com/let-the-stapler-go/#comments</comments>
		<pubDate>Thu, 09 Aug 2012 15:16:39 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1507</guid>
		<description><![CDATA[What do you suppose the average person thinks of when they hear the words &#8220;software engineer&#8221;? Perhaps they think of a famous (or infamous) entrepreneur who&#8217;s been forcing them to restart their PC for years. They might even think of a hip, well-built hacker with an earring who assembles software &#8220;worms&#8221; by racing to reconstruct [...]]]></description>
				<content:encoded><![CDATA[<p>What do you suppose the average person thinks of when they hear the words &#8220;software engineer&#8221;? Perhaps they think of a famous (or infamous) <a title="Bill Gates" href="http://en.wikipedia.org/wiki/Bill_Gates" target="_blank">entrepreneur</a> who&#8217;s been forcing them to restart their PC for years. They might even think of a <a title="Stanley Jobson" href="http://www.imdb.com/character/ch0008265/" target="_blank">hip, well-built hacker</a> with an earring who assembles software &#8220;worms&#8221; by racing to reconstruct some antagonistic digital Rubik&#8217;s Cube<sup>1</sup>. But I would bet that the majority of the population would think of a <a title="Milton" href="http://www.luminomagazine.com/2004.03/spotlight/officespace/roott.html" target="_blank">middle-aged man</a> with high blood pressure and vitamin D deficiency. Well folks, I&#8217;m here to tell you that while that last group may have been right for years, the <em>Age of Milton</em> is over.</p>
<p><span id="more-1507"></span>In the late eighties, software engineering was largely comprised of building back-office applications from white cubicle farms with fluorescent lighting. Nowadays, the profession has a sort of excitement and exhilaration behind it, primarily due to the nature of the products that are now being built: Facebook, the Curiosity, and <a title="Audi R8" href="http://en.wikipedia.org/wiki/Audi_R8_(road_car)" target="_blank">Tony Stark&#8217;s car</a> are all the product of modern software engineering. This profession which used to exile its implementers to dark corners of an office is now embracing, through methodologies like Agile, open and ongoing dialogue with them.</p>
<p>This can be extremely difficult if the engineer is a poor communicator or socially inept. The most effective engineers in today&#8217;s market are not only exceptional craftsmen, but are also great verbal communicators. It&#8217;s interesting to consider the correlation between communicating effectively with code and communicating effectively in conversation. Personally, I find the former to be significantly easier, and for a few reasons: first, you have time to gather your thoughts; second, you can assert and validate theories before you socialize them; third, you can refine your phrasing. In conversation, however, you must do all of that in real time, while also attempting to keep a compelling tone and cadence to your speech and constantly reacting to nonverbal queues. Ineffective communication from an engineer is no longer an option. We aren’t line workers; we are knowledge workers — it’s time for us to learn to articulate like some.</p>
<p><sup>1. <em>Please, like you know what the fuck he&#8217;s doing either</em>.</sup></p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/let-the-stapler-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The New Lines of Code Equation</title>
		<link>http://feyn.com/the-new-lines-of-code-equation/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-new-lines-of-code-equation</link>
		<comments>http://feyn.com/the-new-lines-of-code-equation/#comments</comments>
		<pubDate>Thu, 09 Aug 2012 14:11:09 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1360</guid>
		<description><![CDATA[In yesteryear, in the time of our coding forefathers, ancient project managers would gauge a developer&#8217;s productivity my measuring the lines of code added per unit time. This was a convenient and intuitive metric, as there was seemingly a correlation between number of lines coded and number of features added. When companies then started rewarding [...]]]></description>
				<content:encoded><![CDATA[<p>In yesteryear, in the time of our coding forefathers, ancient project managers would gauge a developer&#8217;s productivity my measuring the <a href="http://en.wikipedia.org/wiki/Lines_of_code">lines of code</a> added per unit time. This was a convenient and intuitive metric, as there was seemingly a correlation between number of lines coded and number of features added. When companies then started rewarding developers according to this metric, it lead to a rash of bad programming habits &#8211; most notably <a href="http://en.wikipedia.org/wiki/Copy_and_paste_programming" target="_blank">copy and paste coding</a>. In modern times, we consider ourselves enlightened, and claim to have realized that not only is there no direct correlation, but that attempting to measure developer productivity in this way is both meaningless and destructive. Yet, if you corner the average development manager and ask them to compare developer productivity, many of them would not be able to resist the urge to pull metrics from source control. This due to a lack of awareness of a <strong>complete reversal</strong> in the way in which lines of code reflect productivity.</p>
<p><span id="more-1360"></span>The programming practices of the modern software engineer are amazingly diverse. They include <a href="http://en.wikipedia.org/wiki/Object_oriented_design" target="_blank">Object Oriented Design</a>, <a href="http://en.wikipedia.org/wiki/Functional_programming" target="_blank">Functional Programming</a>, <a href="http://en.wikipedia.org/wiki/Design_Patterns" target="_blank">Design Patterns</a>, <a href="http://en.wikipedia.org/wiki/System_architecture" target="_blank">System Architecture</a>, <a href="http://en.wikipedia.org/wiki/Software_framework" target="_blank">Software Frameworks</a>, and <a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">Test Driven Development</a>. Each of these practices all have the same goal: To reduce the total number of lines of code. Some would argue in the short term, several of these practices will temporarily increase the number of lines of code e.g. a <a href="http://en.wikipedia.org/wiki/Strategy_Pattern" target="_blank">Strategy pattern</a> where a <a href="http://en.wikipedia.org/wiki/Switch_statement" target="_blank">switch </a>might do, or a <a href="http://en.wikipedia.org/wiki/Domain_model" target="_blank">Domain Model</a> where a <a href="http://en.wikipedia.org/wiki/God_class" target="_blank">God Class</a> would suffice. However, in the long term, each result in a <strong>net reduction</strong> of lines of code thanks to a judicious application of the <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself" target="_blank">DRY principle</a>. Learning the proper application of these diverse, complex, and at times paradoxical practices is a career long pursuit, and is a skill set typically only found in the most experienced of engineers. To say it another way, the very best engineers are working their hardest to reduce the total number of lines of code.</p>
<p>Think of the number of lines of code like straws in the proverbial haystack in which one seeks a needle. The primary measure of developer productivity is their ability to rapidly locate needles in the haystack. The more straws, the harder it is to find the needle. &#8220;Finding the needle&#8221;, in this context, is what a developer does when they program: They scan through many thousands of lines of code looking for the proper spot to change or enhance in order to incorporate a new business requirement. The secondary measure of developer productivity is their ability to apply the change or enhancement rapidly with little fear or breaking the system as a whole. Both measures are dramatically impacted by the number of lines of code, <strong>with productivity spiking upwards sharply in small code bases, and plummeting when the code base becomes massive</strong>. This is the #1 reason developer&#8217;s overwhelmingly prefer working in <a href="http://feyn.com/stop-waiting-for-green-fields/">green field projects</a> rather than in <a href="http://feyn.com/brand-new-legacy/">legacy systems</a>. What then is the proper method for <a href="http://feyn.com/gauging-oneself/">gauging</a> a developers productivity? Simply put: <a href="http://feyn.com/the-point/">Business value added per unit time</a>. Agile methodologies provide a means to measure this type of productivity in terms of the team&#8217;s <a href="http://en.wikipedia.org/wiki/Velocity_(software_development)">velocity</a>, which is derived from <a href="http://en.wikipedia.org/wiki/User_story">user stories</a> (business value) completed per <a href="http://en.wikipedia.org/wiki/Iterative_and_incremental_development">iteration</a> (unit time). If you <a href="http://feyn.com/mostly-agile/">cannot gauge productivity from velocity</a>, and instead feel compelled to glance at the number of lines of code, there is strong possibility that you are <a href="http://feyn.com/agile-aint-a-weekend-seminar/">doing Agile all wrong</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-new-lines-of-code-equation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scorching The Earth</title>
		<link>http://feyn.com/scorching-the-earth/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scorching-the-earth</link>
		<comments>http://feyn.com/scorching-the-earth/#comments</comments>
		<pubDate>Thu, 09 Aug 2012 13:17:15 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1525</guid>
		<description><![CDATA[The sphere is lit up with the latest tale of woe, which has befallen a prominent writer in the technology space.  It is a terrible event, to experience this particular invasion in one&#8217;s life, and not to mention the loss of not just the sense security but the actual loss of invaluable data, especially pictures [...]]]></description>
				<content:encoded><![CDATA[<p>The sphere is lit up with the latest tale of <a title="How Apple and Amazon Security Flaws Led to My Epic Hacking" href="http://goo.gl/ddqId" target="_blank">woe</a>, which has befallen a prominent writer in the technology space.  It is a terrible event, to experience this particular invasion in one&#8217;s life, and not to mention the loss of not just the sense security but the <em>actual loss</em> of invaluable data, especially pictures of children that cannot be replaced/retaken.  While I empathize with the plight to reconstruct his life, and appreciate the journalistic approach toward soliciting insight from the alleged hackers&#8230; I&#8217;m not entirely in agreement with the finger-pointing to Amazon and Apple.  At least not in the same way that&#8217;s being discussed.  Yes, two-factor authentication is desirable.  Yes, it&#8217;s a good lesson for security vs. ease-of-use.  Yes, entrusting information to others expose oneself to risks, when the other party isn&#8217;t demonstrating the same diligence at managing your information.  However, the failure somewhat overlooked, once again, is that social engineering was the attack vector &#8212; similar to the <a title="Security Achilles’ Heel" href="http://feyn.com/security-achilles-heel/" target="_blank">CloudFire incident</a> from a few months ago &#8212; and no amount of technology will solve this no-tech grandfather challenge.</p>
<p><span id="more-1525"></span>As I&#8217;ve stated, while both Apple and Amazon were exploited by the attackers, can you imagine a consumer world without the conveniences offered by both companies?  Imagine if you had to key in credit card numbers, every single purchase?  Once upon a time, that was the practice, and people griped and likely <em>demanded</em> storing of their credit cards.  So it came to be.  Or needing to work with customer service in resetting account credentials and having to actual go through deep-dive vetting, as opposed to the PIN method?  How do I know, because people are lazy and carefree about that kind of behavior, until it jumps up and bite them.  Don&#8217;t believe me?  Think about how many people write their PIN on the ATM cards&#8230; don&#8217;t pretend that scenario does not happen.  Ease wins over security, almost all the time.  So now, suddenly, it&#8217;s Apple&#8217;s and Amazon&#8217;s fault that the convenience they offered is exploited.  Sure, some processes got subverted and what was a feature now became a huge risk, but that&#8217;s what happens when <a title="Design Versus Intention" href="http://feyn.com/design-versus-intention/" target="_blank">intention and design</a> are not fully aligned &#8212; or at least not fully considered.  The moment any personal information is put out onto the web, you have already accepted the risk that information may be subject to misuse.</p>
<p>Then the part of not backing up, except into &#8220;one&#8221; cloud.  One cloud is better than a drive array of one&#8217;s own making, but imagine a company only backing up business critical information <em>one time</em> via <em>one device</em>.  That solution would be laughed and rejected out of the room so fast, yet in our personal lives, people are a lot more cavalier about the value of personal information.  <a title="Password Is Not Protection" href="http://feyn.com/password-is-not-protection/" target="_blank">LinkedIn&#8217;s breach</a> is going to cost them millions of dollars, what is the worth for pictures of Zoe as a baby, or the simple sense of well-being and privacy?  What&#8217;s more shocking is the shock that there are hackers who aren&#8217;t even looking for a financial gain necessarily, but acting destructive wanton purely for entertainment value &#8212; to amuse themselves and pass the time.  I&#8217;ve seen that movie before, the one called <strong><em>rm -rf / </em></strong>because if the attack isn&#8217;t successful moving forward, let&#8217;s make sure there&#8217;s no traces left behind. In case I haven&#8217;t written the word back up enough, make sure adequate back up exists, because who knows what may happen to the data even if it were hackers erasing drives.  Backups are for expecting the un-expected.  That is all.  Harnessing technology is clearly a Promethean effort, let&#8217;s make sure hands are not burned in the process.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/scorching-the-earth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automate Yourself out of a Job</title>
		<link>http://feyn.com/automate-yourself-out-of-a-job/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=automate-yourself-out-of-a-job</link>
		<comments>http://feyn.com/automate-yourself-out-of-a-job/#comments</comments>
		<pubDate>Tue, 07 Aug 2012 15:34:25 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Quality Assurance]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=575</guid>
		<description><![CDATA[Nobody wants to manually test software. &#8220;That&#8217;s not true! I do!&#8221; you say, missing my point. If you think you want to manually test software, then you need to dig deeper into what that entails: To do your job well, every time any developer changes anything to any part of the system you need to [...]]]></description>
				<content:encoded><![CDATA[<p>Nobody wants to manually test software. &#8220;That&#8217;s not true! I do!&#8221; you say, missing my point. If you think you want to manually test software, then you need to dig deeper into what that entails: To do your job well, every time any developer changes anything to any part of the system you need to re-test everything. Anything less and you&#8217;re not doing your job. If you&#8217;ve heard different then they&#8217;re lying to you. *That* is what Quality Assurance is &#8211; the assurance of quality. The only way you can be sure that some developer didn&#8217;t break something is to test the whole system again no matter how minuscule the change. On a simple mobile app, that&#8217;s not so bad; on an enterprise system, you may end up throwing yourself down a flight of stairs just for a change of pace.</p>
<p><span id="more-575"></span>To be a good QA &#8211; and not want to physically harm yourself &#8211; you have to write automated tests. You have to code to test code. If you hate coding, and therefore hate writing automated tests, then you&#8217;re going to hate your life as you endlessly click the same button, seeing it do the same thing, and checking off the same list for the umpteenth time that it still goes, &#8220;Confirmed!&#8221; every time you click it. When you were a kid and someone asked you what you wanted to be when your grew up, testing confirmation pop-ups was your dream? Hell no. That&#8217;s not the job you want. Automate that crap so a machine clicks that button for you. That way, the only button you click is the one that says, &#8220;Run Automated Tests&#8221;.</p>
<p>Engineers look down on QA. OMG, yes, I said it. If you haven&#8217;t figured that out by now, then you haven&#8217;t been paying attention. I assure you, the elitism is far worse than you could imagine. I&#8217;ve heard engineers say things about QA that would make you want to punch a baby. The way to turn the tide is simple: Write code that tests their code. You will make their life a living hell. Engineers make mistakes &#8211; lots of mistakes. They&#8217;re allowed to get away with it because their mistakes can be so subtle it can sneak past a manual QA tester who can&#8217;t possibly test everything. When you have your automated tests, however, nothing can get past them &#8211; and if they do you can simply improve the tests such that next time they can&#8217;t. At that point, your full time job is pwning elitist engineers, and while it may not compare to being a rock star or movie god I will tell you, it does feel good.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/automate-yourself-out-of-a-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Going to Mars</title>
		<link>http://feyn.com/going-to-mars/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=going-to-mars</link>
		<comments>http://feyn.com/going-to-mars/#comments</comments>
		<pubDate>Tue, 07 Aug 2012 14:52:25 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1489</guid>
		<description><![CDATA[Yesterday morning, along with hundreds of thousands others online, I watched the live HD video feed of the Mars Science Laboratory Curiosity successfully touch down at Gale Crater as planned/designed.  It is a significant milestone, and quite the hallmark of success for a complicated mission.  I couldn&#8217;t help but think about the dichotomy that is [...]]]></description>
				<content:encoded><![CDATA[<p>Yesterday morning, along with hundreds of thousands others online, I watched the live HD video feed of the Mars Science Laboratory <em>Curiosity</em> successfully touch down at Gale Crater as planned/designed.  It is a significant milestone, and quite the hallmark of success for a complicated mission.  I couldn&#8217;t help but think about the dichotomy that is NASA &#8212; the rare mix of size, bureaucracy and performance.  Over the years, we&#8217;ve witnessed their triumphs and their failures, as well as some epic recoveries from disastrous missteps that plague the largest of enterprises.  One observation became clear to me, as I listened to the debriefing panel:  if you&#8217;re not making something better than you&#8217;re not relevant.</p>
<p><span id="more-1489"></span>People rarely get to work in ideal environments, where the balance of team members, tools, and requirements hum in a harmonious unison, while immaculate products are made and delivered.  In the real world, set backs are routine and conflicts arise regularly &#8212; anything that may potentially throw a wrench, often will.  Overcoming these challenges is what sets one apart from another.  Whether a company, a product, or an engineering team has any longevity comes down to serving some kind of need. Acting and reacting too slowly, and you may miss the window of opportunity.  Not listening, and not understanding the plight of the user, will drive that very business away looking for a different, better, solution.  In this competitive market place, there is no place for arrogance or assumption because there will always be alternatives.  Technology evolve, things change and if you, your team or your organization behaves like a woolly Mammoth&#8230; don&#8217;t be surprised when a single innovative caveman armed with a crude axe whacks you on the head.</p>
<p>The exaggeration is for emphasis, because we all know it takes three cavemen to successfully tackle the beast.  Meanwhile, there are no <a title="Stop Waiting For Green Fields" href="http://feyn.com/stop-waiting-for-green-fields/">perfect launch windows</a> for the MSL.  There was an opportunity and then there&#8217;s the attention to <a title="Little Things" href="http://feyn.com/little-things/">details</a>, to focus on what needs to be done and planning for the resiliency.  It took team work, discipline, and probably million lines of code &#8212; of <a title="Idiot Proof Deployments" href="http://feyn.com/idiot-proof-deployments/">automation</a> &#8212; to ensure the successful launch and landing of a space vessel.  Comparatively, some of our daily tasks may be more mundane than going to space, but upon successful execution and completion of the goal, it&#8217;s still a sense of pride and accomplishment.  Get your ass to Mars already.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/going-to-mars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Sympathetic Approach</title>
		<link>http://feyn.com/the-sympathetic-approach/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-sympathetic-approach</link>
		<comments>http://feyn.com/the-sympathetic-approach/#comments</comments>
		<pubDate>Tue, 07 Aug 2012 13:16:44 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1475</guid>
		<description><![CDATA[I have a predictable threshold for Macy&#8217;s. Not too long ago, I was shopping there with a girl &#8211; which is to say that she was shopping, and I was serving dual life-sentences back-to-back for a crime I didn&#8217;t commit. The likeliest explanation for my unjust, albeit fashionable, incarceration was that she was a heartless shrew who had [...]]]></description>
				<content:encoded><![CDATA[<p>I have a predictable threshold for Macy&#8217;s. Not too long ago, I was shopping there with a girl &#8211; which is to say that <em>she</em> was shopping, and I was serving dual life-sentences back-to-back for a crime I didn&#8217;t commit. The likeliest explanation for my unjust, albeit fashionable, incarceration was that she was a heartless shrew who had no concern for my long-term psychological or emotional well-being. In the unlikely event, however, that she was not pure evil, but merely that the allure of fragrances and cosmetics had acutely undermined her ability to feel specific empathy for the opposite sex &#8212; the scents having temporarily transmuted her into a sort of sociopathic shopaholic &#8211; I felt it would be in my best interest to point out that not only was Macy&#8217;s <em>not</em> where I would like to spend 84 hours of a Saturday afternoon, but also that it was utterly absurd to spend $1.4M &#8212; which is only a slight exaggeration &#8212; on eye shadow.</p>
<p><span id="more-1475"></span>As you might imagine, this was an unfortunate strategy. In retrospect, I would have arrived at a much more desirable outcome if I had mentioned that I was getting hungry and that the myriad of overpowering fragrances were starting to give me a headache. The problem was that I made an impersonal and non-relatable case. This is also a mistake I make all too often when attempting to persuade organizations to change their ways. Too many times I&#8217;m stoic instead of understanding; calculating instead of concerned. I&#8217;ve grown accustomed to using words like &#8220;absurd&#8221; when describing an organization&#8217;s 18 minute, non-deterministic build process.</p>
<p>You know what the truth is? It <em>is</em> fucking absurd. Many times, the ridiculous challenges organizations are plagued with have no earthly business being problems in 2012, and it tends to be extremely difficult for me to relate to them. However, I&#8217;m not there to write a dissertation on all the ways they&#8217;ve misunderstood encapsulation, and I&#8217;m not there to win a debate about Java&#8217;s terrible inheritance model: I&#8217;m there to improve a situation. As a general rule, whenever I&#8217;ve made this mistake in the past, I would have been far better off had I taken the sympathetic approach. Maybe instead of explaining that a 1500 line POM file is atrocious, I could instead sit down and listen to the sordid tale of how the organization ended up with 53 unused dependency entries, among other perversions. Maybe I could mention how these types of challenges are really tough when you don&#8217;t have an exhaustive and comprehensive understanding of the tools you&#8217;re using. And maybe next time I <em>won&#8217;t</em> mention that, by the way, that&#8217;s the information they hide in books.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-sympathetic-approach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Touch That Dial</title>
		<link>http://feyn.com/dont-touch-that-dial/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dont-touch-that-dial</link>
		<comments>http://feyn.com/dont-touch-that-dial/#comments</comments>
		<pubDate>Thu, 02 Aug 2012 15:03:07 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1427</guid>
		<description><![CDATA[I&#8217;ve already proposed an approach that will encourage Ops to avoid doing more work. Now, I&#8217;m going to expand on that less-effort trajectory, and share the following fortune-cookie wisdom: &#8220;Doing nothing is better than doing something&#8230;&#8221; although, you have to add &#8220;&#8230;stupid&#8221; to the end of that, to truly gleam this particular gem.  Let&#8217;s face it, [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve already proposed an approach that will encourage Ops to avoid doing <a title="The Path To Becoming An Agile Developer, Not" href="http://feyn.com/the-path-to-becoming-an-agile-developer-not/">more work</a>. Now, I&#8217;m going to expand on that less-effort trajectory, and share the following fortune-cookie wisdom: &#8220;Doing nothing is better than doing something&#8230;&#8221; although, you have to add &#8220;&#8230;stupid&#8221; to the end of that, to truly gleam this particular gem.  Let&#8217;s face it, if the smartest and brightest people were always at the helms, there&#8217;d be a real dearth of topics for discussion here at feyn.com.  Because there are under-qualified decision makers in the mix, who often measure performance with misapplied KPI or othere misguided metrics, there is a constant push to demonstrate value by doing <em>something</em>.  That is probably the worst combination when it comes to operational soundness and security &#8212; doing something for the sake of doing, especially when there is an unlikelihood of doing something smart.</p>
<p><span id="more-1427"></span>It is up to the savvy Ops engineer to recognize this particularly flawed impetus.  Furthermore, the irony is that it&#8217;s far easier to <em>not do something stupid</em>, than it is to actual do something <em>smart</em>.  Because doing something smart requires effort &#8212; awareness, common sense and applying the right solution to the right problem, etc.  At this point, if you&#8217;re wondering <a title="Gauging Oneself" href="http://feyn.com/gauging-oneself/">how to determine</a> if you fall into the smart and competent camp, vs the less smart and probably unqualified camp, you are already ahead of the game &#8212; because only those people who care about their soul, have a one.  Remember, competition between vendors is ruthless, and it&#8217;s not chance happenstance that an army of sales people strapped with slick pitches, back nine passes and other enticing items find the weakest link in the decision tree and attack it with using the enterprise wine-and-dine maneuvers.  Objective assessment do not come from that direction.  Real life war stories come from fellow survivors on the frontline.  Trust someone with hands-on experience, and because you&#8217;ve surrounded yourself with competent peers, draw upon that collective wisdom to combat the impulse to act simply because.</p>
<p>Of course, this is not an advocacy for monolithic stonewalling of service delivery.  This is certainly not a battle cry against early adoption, rapid deployments or the ideas of iterative improvements.  All of those and other best practices are still true and should be respected as such, where applicable.  The is just a reminder to pause, however briefly, to think about the basic task of evaluation and decision making, and to make sure that before you, or someone else, commit to a course of action, it isn&#8217;t the result of reactive, short-attention span jitter swayed by the wrong influences.  At the end of the day, support is tough enough without <a title="Stockholm Syndrome" href="http://feyn.com/stockholm-syndrome/">self-inflicted dumbness</a>.  When you push that button to go and go forward, make sure the smart decision is pushing the button at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/dont-touch-that-dial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Little Things</title>
		<link>http://feyn.com/little-things/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=little-things</link>
		<comments>http://feyn.com/little-things/#comments</comments>
		<pubDate>Thu, 02 Aug 2012 14:12:20 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1419</guid>
		<description><![CDATA[In 2005, socioeconomic researchers at Harvard, in conjunction with the local police force, performed a social experiment in Lowell, Massachusetts. After identifying over 30 of the highest crime rate areas in Lowell, the police forces were instructed to clean up litter from the roads and sidewalks, replace broken street lights, and implement a series of other [...]]]></description>
				<content:encoded><![CDATA[<p>In 2005, socioeconomic researchers at Harvard, in conjunction with the local police force, performed a social experiment in Lowell, Massachusetts. After identifying over 30 of the highest crime rate areas in Lowell, the police forces were instructed to clean up litter from the roads and sidewalks, replace broken street lights, and implement a series of other small &#8220;cleanup&#8221; initiatives for 15 of the 30 areas. In the other 15, the police were instructed to continue operating normally. The result was an almost immediate 20% drop in police calls in the cleaned up areas. This is an interesting case-study for <a title="Broken Windows Theory" href="http://goo.gl/pyP0h" target="_blank">Broken Windows Theory</a>.</p>
<p><span id="more-1419"></span>What the police force found was that by addressing a series of little things, you can effect a cumulative impact that&#8217;s more significant than the sum of its parts. In fact, one of the foundational premises of <a title="The Atlantic - Broken Windows" href="http://goo.gl/l3Bcn" target="_blank">the original article on the topic</a> was that large problems like vandalism and crime are the causal result of allowing small problems to fester. Thus, by fixing problems when they&#8217;re small, you can prevent larger problems from ever occurring, for significantly less effort. I&#8217;ve written about <a title="Campgrounds and Codebases" href="http://feyn.com/campgrounds-and-codebases/" target="_blank">how to apply this to a codebase</a>, but I believe the generalized theory holds some interesting premises for team dynamics and organizational efficacy as it pertains to addressing the early symptoms of a system that&#8217;s trending badly.</p>
<p>The symptoms start small, which is largely the point. Twenty-minute standups can be one symptom, and can ultimately lead to a de-emphasis on internally managed accountability, resulting in external micro-management. Specialization among pairs could be another, which can create communication silos and erode team-wide communication. One of us is currently struggling with <a title="God Please No More Meetings" href="http://feyn.com/god-please-no-more-meetings/" target="_blank">meeting overload</a>, which can ultimately lead to a myriad of unhealthy organizational challenges. In comparison, these problems are significantly easier to address before they snowball. For instance, if someone feels especially articulate in a standup and is having trouble staying on point, it&#8217;s not unreasonable to politely interject that they&#8217;re getting off track and their story, while certainly fascinating, is a better topic for coffee-room conversation. In-team cliques can be discouraged from forming by encouraging promiscuous pairing and open communication in dev huddles. You can even reduce structured meetings by holding ad-hoc group conversations regularly with your team members and facilitating open, honest, direct, and respectful communication. Take my word for it: address the little things when they&#8217;re small. You wouldn&#8217;t believe how quickly an organization will fall to disarray if you let them get away with the small things.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/little-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Fired Is Easier The Second Time</title>
		<link>http://feyn.com/getting-fired-is-easier-the-second-time/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-fired-is-easier-the-second-time</link>
		<comments>http://feyn.com/getting-fired-is-easier-the-second-time/#comments</comments>
		<pubDate>Thu, 02 Aug 2012 13:28:31 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1106</guid>
		<description><![CDATA[First, let&#8217;s define &#8220;fired&#8221;: At some point, you were informed that your company has made the decision that they no longer want you working there. There are 3 broad categories for which you can get fired: The first is a violation of company policy, which includes absenteeism, tardiness, poor personal hygiene, threatening a fellow employee, [...]]]></description>
				<content:encoded><![CDATA[<p>First, let&#8217;s define &#8220;fired&#8221;: At some point, you were informed that your company has made the decision that they no longer want you working there. There are 3 broad categories for which you can get fired: The first is a violation of company policy, which includes absenteeism, tardiness, poor personal hygiene, threatening a fellow employee, discrimination, and sexual harassment. If you&#8217;ve been fired for any of these you deserved it, and you better get your life right before you look for another job. The second is incompetence, but most companies require extreme incompetence for a long period of time even <em>after</em> their <a title="Runaway Train Never Going Back" href="http://feyn.com/runaway-train-never-going-back/">attempts to train you</a> have failed before they fired you. If you&#8217;ve been fired for that, well, you may not be smart enough or hard working enough for this line of work. Blame your parents for not making you study and do your chores. Finally, there is getting fired for standing up for what you believe in, but what you believe in is not in line with the what the company wants.</p>
<p><span id="more-1106"></span>Getting fired for what you believe in is still getting fired, and it stings just the same. When we&#8217;re kids we&#8217;re taught (or should have been taught) to do what is right, and some of us bring doing what is right into our professional careers. The problem is, <strong>doing what is right doesn&#8217;t always line up with doing what you&#8217;re told</strong>. &#8220;Right&#8221; is a difficult thing to pin down, as it is based on nothing but your subjective assessment of the situation. If you disagree with your employer, and refuse to do what your told, they&#8217;re well within their right to fire you. And really, if they do, you shouldn&#8217;t be totally shocked. They were paying you to do what they tell you, and not what you felt like doing. If you choose to stop doing what you&#8217;re told to, why should they keep paying you, and presto! You&#8217;re fired.</p>
<p>Is there any honor in getting fired for sticking to your personal beliefs and doing what is right? Yes, there is. If you refused to <a href="http://goo.gl/BVDET" target="_blank">cook the books</a> to save a couple million in tax liabilities, then hold your head high. If you refused to tell your team they have to <a href="http://goo.gl/QUL61" target="_blank">cancel their Christmas vacation</a> to hit an arbitrary project deadline, then be proud of yourself. If you committed yourself to doing what was in the <a href="http://goo.gl/tp5a6" target="_blank">best interest of the customers</a>, even if it wasn&#8217;t in the best interest of your boss, then good for you. When it&#8217;s all said and done, your life isn&#8217;t going to be defined by a single job, it will be weighed in it&#8217;s entirety, and history looks fondly on those who stay true to their convictions. Still, if you&#8217;re setting yourself up to be a martyr, make sure that you have an updated resume and a couple of months of cash to float you, as bill collectors are unmoved by excuses from the moral high ground.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/getting-fired-is-easier-the-second-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solidarity</title>
		<link>http://feyn.com/solidarity/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=solidarity</link>
		<comments>http://feyn.com/solidarity/#comments</comments>
		<pubDate>Wed, 01 Aug 2012 14:27:35 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1412</guid>
		<description><![CDATA[Software engineers have an uncommonly difficult job. Not only are they tasked with the monumental challenge of accurately modeling a business in digital interactions, they also need to be constantly permuting the different ways they could be solving their problems and the pros and cons of each possible implementations. To make matters more difficult, they&#8217;re [...]]]></description>
				<content:encoded><![CDATA[<p>Software engineers have an uncommonly difficult job. Not only are they tasked with the monumental challenge of accurately modeling a business in digital interactions, they also need to be constantly permuting the different ways they could be solving their problems and the pros and cons of each possible implementations. To make matters more difficult, they&#8217;re having to constantly juggle the ever-evolving needs of the client and an employer who thinks having something done yesterday is still late. You&#8217;d think that with all of this, we&#8217;d find little time to resist the progressive development philosophies and methodologies that have proven themselves for years from entrenching themselves in our day to day lives.</p>
<p><span id="more-1412"></span></p>
<p>Not too long ago I was with a new colleague that I&#8217;ve come to amass a significant amount of respect for. In the presence of other fellow trusted technologists, we heard something rather alarming &#8211; their team had made the conscious decision to not practice test-driven development. &#8220;Certainly there must be more to this,&#8221; we thought, and proceeded to probe a bit. It became quickly apparent that there was no deeper truth to discover &#8212; the team was comprised of engineers who had intentionally opted out of TDD in order to code faster. This was extremely disheartening to both of us, and after a moment of disbelief and frustration, my colleague exclaimed &#8220;I thought we had polio beaten!&#8221;</p>
<p>Why in the hell are we still arguing about this? We have bigger fish to fry. I understand if you&#8217;ve never done TDD and as such are hesitant about your short-term throughput. Spoiler alert: it&#8217;s not going to be great, especially if you don&#8217;t have someone on your team who has strong experience with it. But that doesn&#8217;t change the fact that opting out of it really shouldn&#8217;t be an option. This comes down to professionalism, and with all the commotion of rapidly changing requirements juxtaposed against building quality in at the ground level, there&#8217;s little time to be resistant to the progressive methodologies (from the past) that have finally started taking root. It&#8217;s time for some solidarity among engineers &#8211; we have tough jobs, let&#8217;s not make it tougher on each other by fighting against things like TDD.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/solidarity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Incentivizing Mediocrity</title>
		<link>http://feyn.com/incentivizing-mediocrity/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=incentivizing-mediocrity</link>
		<comments>http://feyn.com/incentivizing-mediocrity/#comments</comments>
		<pubDate>Tue, 31 Jul 2012 14:48:30 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1381</guid>
		<description><![CDATA[No organization would say they strive for mediocrity, yet so often they inadvertently reward employees for mediocrity and punish them for excellence. This slippery slope begins by attempting to define a job by the lowest common denominator of skills and responsibilities. Indeed, we hire for this lowest common denominator, and upon hiring we inform our [...]]]></description>
				<content:encoded><![CDATA[<p>No organization would say they strive for mediocrity, yet so often they inadvertently reward employees for mediocrity and punish them for excellence. This slippery slope begins by attempting to define a job by the lowest common denominator of skills and responsibilities. Indeed, we hire for this lowest common denominator, and upon hiring we inform our new employees that they will have their performance measured, with an emphasis on executing in accordance with their new job&#8217;s requirements &#8211; job requirements that were determined through an examination of lowest common denominator expectations. There is often a hint at how an employee can exceed expectations, but no matter how this is presented it typically traces back to number of hours worked above those required. Having hired for mediocrity, set expectations for mediocrity, and offered incentives for longer hours which will lead to an eventual <a href="http://goo.gl/oS8mw" target="_blank">reduction in overall performance</a>, we have successfully created a drone &#8211; a fungible resource that can be replaced or scaled a moment&#8217;s notice should the need arise. This, in essence, is the role of a middle management &#8211; to recruit and groom drones incapable of stepping outside of a company&#8217;s documented expectations.</p>
<p><span id="more-1381"></span></p>
<p>But of course, <em>your</em> organization does not do this. No, you hire for exceptional talent, and encourage your employees to think outside the box in order to come up with creative solutions to difficult problems. Sadly, this is a lie you are telling yourself. Exceptional talent is very expensive, and seldom on the job market because, well, they are exceptional. You punish employees for thinking outside the box, because they will be fostering change, and <strong>change is disruptive</strong>, and disruption is the antithesis of a smoothly running organization. At best, you offer the banal complement of, &#8220;Good idea&#8221; and encourage them to document the idea for future consideration. At worst, you fire them for not focusing on their core job responsibilities, and therefore not meeting company expectations. Little thought is given to what the now ex-employee was attempting to fix, or why they were attempting to fix it. All too often, the employee was not focusing on their core job responsibility because they realized that in order for the organization as a whole to improve, they must attempt to address an issue orthogonal to their set job expectations. They do this because they <em>want</em> to focus on their core job responsible, but are unable to do so until the issue is resolved.</p>
<p>What makes exceptional talent exceptional? How did they get that way? Excelling at <a href="http://feyn.com/the-art-of-apprenticeship/">standardized education</a>? A rote following of the rules handed to them? A focus on unwavering day-in-day-out steadiness of measurable progress? Not in the slightest. These exceptional individuals (that you now find yourself <a href="http://feyn.com/attracting-talent/">unable to attract</a>) were once rebels within their organization, breaking free of the limits of their job description. They took risks, made mistakes, got in trouble, and kept going, and occasionally <a href="http://feyn.com/getting-fired-is-easier-the-second-time/" title="Getting Fired Is Easier The Second Time">got fired</a>. Now, when you look at them you believe them to be magical, as they so dramatically exceed expectations. They are not magical &#8211; they have simply broken out of the finely tuned corporate drone factory. By definition, this is what makes them exceptional. The question then remains, are they exceptionally good, or exceptionally bad? Not coincidentally, it takes an exceptional middle manager to tell the difference.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/incentivizing-mediocrity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Injection Sequel</title>
		<link>http://feyn.com/the-injection-sequel/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-injection-sequel</link>
		<comments>http://feyn.com/the-injection-sequel/#comments</comments>
		<pubDate>Tue, 31 Jul 2012 14:32:32 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1396</guid>
		<description><![CDATA[It still amazes me, sometimes, that SQL Injection ever came into vogue, becoming one of the poster children of web application vulnerability.  It&#8217;s outright jaw-dropping that in 2012, an iconic web company would fall victim to this technique.  I could go on and on, about the number of things that went awry and/or should&#8217;ve been [...]]]></description>
				<content:encoded><![CDATA[<p>It still <em>amazes</em> me, sometimes, that SQL Injection ever came into vogue, becoming one of the poster children of web application vulnerability.  It&#8217;s outright jaw-dropping that in 2012, an iconic web company would fall victim to this <a href="http://goo.gl/L7bLP" target="_blank">technique</a>.  I could go on and on, about the number of things that went awry and/or should&#8217;ve been done.  But this appears to be a chronic failure, with each generation of software engineering re-inventing the same bug all over again, like an endless nightmare of unlearned remedial lessons.  SQL injection attack is a variation on one of the oldest secure computing tenet no-no&#8217;s, and that is the implicit granting of permissions.</p>
<p><span id="more-1396"></span>The list of victims of implicit permit is long and sordid, and can be easily traced back to a time predating the so-called modern web, back when consideration of security did not play a role in application development.  History buffs may remember the jokes about Sendmail, with each passing week a new bug would be exposed.  Or the packet filters [ that eventually became firewalls ] that permitted everything, and rules were written to exceptionally deny.  The problem in both cases is a faulty approach&#8230; the rules should&#8217;ve always been explicitly permit and implicitly deny, because as creator of these software and logic, one should already know [ in advance ] what is permitted and within bounds of execution.  Sendmail shouldn&#8217;t have unplanned passing of parameters.  Firewalls shouldn&#8217;t allow packet traversal unless it was known and expected.  Yet in each case, programmers <em>blacklisted</em> unexpected behavior only after each successful breach, repeatedly.  It took many weeks/months/years before explicitly permit and implicitly deny became the default for both programs.  In hindsight, that seems crazy.</p>
<p>Yet that is exactly what is happened, and apparently happening, with SQL injection attacks &#8212; the careless and negligent handling of input data, and then additionally passing it onward into a database without limiting access [ or other ] permissions.  This implicit permit problem continues today and elimination does not likely in the near term.  Already, the next-generation of OWASP Top 10 reads like a bad re-run, as the rise of mobile applications have led to an equal rise in intrusions based on untrusted input.  Let me repeat that, <strong>input is not to be trusted</strong>.  We&#8217;ve seen this movie.  We know the ending.  We know how to slay this particular dragon, and it&#8217;s <strong>not</strong> implicit trust or permission.  It takes nominal more effort to implement the right solution &#8212; to explicity permit and implicity deny.  Do it already, so that we may go back to writing other, original, insecure code instead.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-injection-sequel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Profanity in the Workplace</title>
		<link>http://feyn.com/profanity-in-the-workplace/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=profanity-in-the-workplace</link>
		<comments>http://feyn.com/profanity-in-the-workplace/#comments</comments>
		<pubDate>Thu, 26 Jul 2012 14:23:30 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1318</guid>
		<description><![CDATA[Look, I don&#8217;t see what the big [flippin] deal is. We all curse &#8211; all the time. Stop [bull pooing] about it &#8211; you do, they do, we all do. When you&#8217;re around your friends having a drink, you curse like a [mother flippin] sailor on shore leave. So why is it not allowed in [...]]]></description>
				<content:encoded><![CDATA[<p>Look, I don&#8217;t see what the big [flippin] deal is. We all curse &#8211; all the time. Stop [bull pooing] about it &#8211; you do, they do, we all do. When you&#8217;re around your friends having a drink, you curse like a [mother flippin] sailor on shore leave. So why is it not allowed in the work place? Because it offends people. Well you know what? It offends me that I can&#8217;t curse! Now I have to spend all my [gosh darn] time tiptoeing around your [flipped] up [bull poo] instead to telling you like it is! That&#8217;s not only frustrating, it&#8217;s a waste of valuable company resources!</p>
<p><span id="more-1318"></span>Instead of saying, &#8220;Dude, that is the most [flipped] up [poo] that I have ever seen in my entire [gosh darn] career.&#8221; I have to say, &#8220;Ah, OK. I can see opportunity for improvement here, here, and here. Also, here, and here. And here. Perhaps we can pair up together for a refactoring?&#8221; Man, look, I don&#8217;t want to pair with you &#8211; I&#8217;m just saying that to be polite. You <em>have</em> to know I&#8217;m being polite. You saw my face twitch when you showed me the 40th method on your 700 line class. You heard my voice crack as I choked out my thinly veiled stream of [bull poo]. You know full well I want to curse you out for being a [dumb bell] in front of your peers, but can&#8217;t or else I&#8217;ll get fired.</p>
<p>I&#8217;m not going to justify my need to curse. Blame it on a poor education that failed to give me an <a href="http://i.chzbgr.com/completestore/12/4/13/OTbqncCw-EGuJDqf-TKvpA2.jpg" title="Adult Language" target="_blank">adequately sophisticated</a> vocabulary with which to express myself. I really could give a flying [flip] as to the justification. The fact is, with a curse, you can know <em>exactly</em> where I stand <em>instantly</em>. That saves the company time <em>and</em> money &#8211; which is nothing but a good thing. Think of the openness, honesty, and directness that &#8220;Your code is all [flipped] up&#8221; conveys? [Heck], I&#8217;m not even trying to offend you &#8211; I&#8217;m just calling it like it is. If we can get past this childish notion of not cursing in workplace we can focus on things that matter &#8211; like the proper usage of the various inflections of [flip].</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/profanity-in-the-workplace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Risk of Sounding Competent</title>
		<link>http://feyn.com/the-risk-of-sounding-competent/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-risk-of-sounding-competent</link>
		<comments>http://feyn.com/the-risk-of-sounding-competent/#comments</comments>
		<pubDate>Thu, 26 Jul 2012 14:05:14 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1341</guid>
		<description><![CDATA[It&#8217;s a well known fact among software professionals that the moment your friends and family discover your technical competency, you will become their indentured technical support servant for life. Whether it&#8217;s re-installing Windows or replacing ink cartridges, no task is too demeaning: if it involves a computer, you&#8217;re the first phone call they make. And why [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s a well known fact among software professionals that the moment your friends and family discover your technical competency, you will become their indentured technical support servant for life. Whether it&#8217;s re-installing Windows or replacing ink cartridges, no task is too demeaning: if it involves a computer, you&#8217;re the first phone call they make. And why not? This <em>is</em> your fault, after all.</p>
<p><span id="more-1341"></span>The first time you spoke about defragmenting a hard drive you doomed yourself. They have a new printer, and you know what CMYK stands for: their problem is now your problem, and this is the way the world works. This happens <em>all the time</em> in corporations, only with significantly higher risk, and significantly more challenging logistical problems. For instance, if you verbalize to a manager that a team&#8217;s iteration retrospectives could be more fruitful if they made actionable items a priority for the things that went poorly, you will have just become the owner of the team&#8217;s retrospectives &#8211; complete with all the hassle of facilitation, minutes recording, and follow up. Why did you say anything at all? Don&#8217;t tell me you were just trying to help &#8212; no one&#8217;s going to believe that you&#8217;re that naïve.</p>
<p>It feels good to sound smart and capable, and it&#8217;s nice to be able to answer questions with enthusiasm and helpful contextual back stories. It does not, however, feel good to end up owning a problem that you have no interest in owning merely because you were too cavalier with what you knew and who was within earshot of what you said. And don&#8217;t expect to refuse ownership once the cat&#8217;s out of the bag &#8212; that&#8217;s not what a team player would do! In fact, that would be uncooperative! And&#8230;and selfish! Seriously, if you don&#8217;t want to own the problem, don&#8217;t run the risk of sounding competent. And the rest of us &#8212; I guess we&#8217;re just gluttons for punishment.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-risk-of-sounding-competent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Trouble with Mobile</title>
		<link>http://feyn.com/the-trouble-with-mobile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-trouble-with-mobile</link>
		<comments>http://feyn.com/the-trouble-with-mobile/#comments</comments>
		<pubDate>Thu, 26 Jul 2012 13:43:35 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1342</guid>
		<description><![CDATA[I started out titling this as The Challenge With Mobile, but the thoughts that keep me awake and go bump in the night are really troubling. I wonder and worry if people even recognize this brave new, slightly dystopian, world of technology we have created for ourselves &#8212; one which the phone is never off. An always-on [...]]]></description>
				<content:encoded><![CDATA[<p>I started out titling this as The <em>Challenge</em> With Mobile, but the thoughts that keep me awake and go bump in the night are really <em>troubling</em>. I wonder and worry if people even recognize this brave new, slightly dystopian, world of technology we have created for ourselves &#8212; one which the phone is <strong>never</strong> off. An always-on and always-connected digital frontier, full of irresponsible citizens who fail to exercise their civic responsibilities on minding their own perimeter defense&#8230; thus as a result, endangering my co-existence within that space. If the initial wave of personal computers joining the Web unleashed a wave of malice and destruction, you ain&#8217;t seen nothing yet.</p>
<p><span id="more-1342"></span>When the world first moved from dial-up to broadband, the initial generation of users suffered every imaginable offenses, before the firewall appliances and the anti-malware solutions came along. That was with a smaller and slower adoption, and not everyone left their desktop turned on and plugged in.  With laptops and Wi-Fi, things got worse, again, until security and Web-consciousness caught up in the form of encryption, certificates and passwords.  Social taught and continues to teach the <a title="The Privacy Fiction" href="http://feyn.com/the-privacy-fiction/">hard lessons</a> on information privacy.  Now, with this wave of mobile &#8212; covering the gamut from smart phones, to tablets, to home and lifestyle devices &#8212; the opportunity for complexity, and exploitation, has never been greater.  The same platform and resources for developing fantastic and useful code may also be leveraged for previously un-imaginable, versatile and powerful botnets.  When is the last time you turned your phone off?  When is the last time you checked the un-seen software running within the smart O/S, behind a visually stunning display?  Are you even able to peek behind the curtains?</p>
<p>Blaming the <a title="Ripe Like An Apple" href="http://feyn.com/ripe-like-an-apple/">consumer culture</a> is no help. People are lazy and will always choose ease of use over security.  But that&#8217;s &#8220;regular&#8221; people &#8212; layman who does not understand authentication from authorization.  We are not those people. As providers of this double-edged sword, we must be the diligent curators, the watchful guardians and the last line of defense against those who seek to exploit the mobile universe. Do not write crappy code.  <a title="Penetrate Yourself" href="http://feyn.com/penetrate-yourself/">Be security conscious</a>. Do not escalate privileges un-necessarily, and do not dip into more data than you need &#8212; avoid those temptations, because trust me, the bad guys will come knocking. Let&#8217;s not make it any easier, because the web is full of ready-to-plunder scenarios, and we&#8217;ve gone through this lesson plan, at least twice, already.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-trouble-with-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stockholm Syndrome</title>
		<link>http://feyn.com/stockholm-syndrome/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=stockholm-syndrome</link>
		<comments>http://feyn.com/stockholm-syndrome/#comments</comments>
		<pubDate>Wed, 25 Jul 2012 13:51:00 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1328</guid>
		<description><![CDATA[A regular critique I hear of engineers who are new to projects or codebases is that they provide almost immediate negative feedback about what they see, and are in no position to do so. The feedback tends to be received as being premature, unsolicited, and out of context, and is therefore undesired. To further complicate [...]]]></description>
				<content:encoded><![CDATA[<p>A regular critique I hear of engineers who are new to projects or codebases is that they provide almost immediate negative feedback about what they see, and are in no position to do so. The feedback tends to be received as being premature, unsolicited, and out of context, and is therefore undesired. To further complicate things, the engineer typically genuinely wants to improve things, and isn&#8217;t merely interested in bitching. I&#8217;ve personally received this feedback multiple times, and frankly, I&#8217;ve had just about enough of it. Rather than meet this constructive criticism with hostility, I&#8217;d like to propose a different approach for the receivers of the feedback. I&#8217;d also like to offer a peaceful compromise.</p>
<p><span id="more-1328"></span></p>
<p>For the rest of this article, let&#8217;s assume &#8220;engineer&#8221; is &#8220;employee&#8221;, because while this is common with engineers, it&#8217;s not unique to engineers. Consider an employee who has no context about a company&#8217;s past, but evaluates a situation at face value. I would argue that their evaluation is not only extremely useful, but also it could potentially point out problems that veterans at the company may not notice due to countless other distractions. They may even be problems that were at one time obvious, but have since been accepted as the &#8220;way things are&#8221;, or too difficult for anyone to fix. The veterans who adopt this attitude are suffering from Stockholm Syndrome.</p>
<p>The employees that are bold enough to point out problems early on in their employment aren&#8217;t going to be satisfied with the statement that &#8220;this is just the way things are&#8221;. That statement will be interpreted as a defeatist attitude, and the employee will have no use for that. It will also seriously undermine the credibility of the person who says it in the employee&#8217;s eyes &#8212; as well it should. Don&#8217;t ever say that to us. Instead, provide context as to why things are the way they are <em>currently</em>, and why no one has successfully changed things <em>yet</em>. Here&#8217;s the compromise: we&#8217;ll take a softer approach with our feedback, if the veterans will  acknowledge that it&#8217;s not okay to merely leave things the way they are. Remember what it was like to have to do whatever fucked up thing we&#8217;re critiquing back when you had to do it &#8212; maybe this time around we can help propose a better solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/stockholm-syndrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get Out of Jail</title>
		<link>http://feyn.com/get-out-of-jail/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=get-out-of-jail</link>
		<comments>http://feyn.com/get-out-of-jail/#comments</comments>
		<pubDate>Tue, 24 Jul 2012 16:05:28 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1326</guid>
		<description><![CDATA[As I watch the flight attendant go through the pre-flight safety speech, I cannot help but wonder how many people are paying attention, and more importantly, in a &#8220;real&#8221; emergency, if people will actually find their nearest exits. That&#8217;s not just a problem plaguing airline passengers. I routinely observe managers, developers and engineers ignore smart [...]]]></description>
				<content:encoded><![CDATA[<p>As I watch the flight attendant go through the pre-flight safety speech, I cannot help but wonder how many people are paying attention, and more importantly, in a &#8220;real&#8221; emergency, if people will actually find their nearest exits. That&#8217;s not just a problem plaguing airline passengers. I routinely observe managers, developers and engineers ignore smart practices and safety procedures, and head blindly into tasks without proper planning, ill-informed, or worse yet&#8230; motivated by fear. It&#8217;s not wonder they, along with their code and systems, end up in a prison of their own creation &#8212; the kind of legacy scenario we retell like ghost stories, nonetheless, people continue to not heed this information. Knowing where the exits are will help you to avoid getting trapped in your burning jail cell.</p>
<p><span id="more-1326"></span>Exit planning isn&#8217;t just for entrepreneur&#8217;s looking to cash out from their ideas. Or looking for the next opportunity in your career ladder. I won’t waste any explanation on why exit planning is the panacea to deployments gone awry, disaster recovery and business continuance. More importantly, exit planning should cover the adoption of any technology &#8212; let&#8217;s face it, whatever clever toolset or powerful framework or even the web language <em>du jour</em> will one day remind you of Perl. Or Shockwave. You get the idea. The people who wrote billion lines of COBOL that drove banking industries probably never imagined that those same lines of code would still be around in 1999 and cause the eventual End-Of-World Y2K problems. Conversely, knowing how to get away from the smarter mouse trap isn&#8217;t just about updating and upgrading. It also means the ability to evaluate and determine the time and path to upgrade/update [which is just another variation of exit], without being forced to upgrade or update, just because the vendor is looking to up the licensing revenue. By knowing how to get out of the situation, before you get in, the dominoes are better managed.</p>
<p>This isn&#8217;t a call for meticulous waterfall of decision making and planning. The future cannot be controlled like that. Just the opposite. Attempting to satisfy on that global level of planning is destined for failure. This is actually about being agile and being incremental, because doing so decreases the likelihood of monolithic decisions that will erect sudden albeit slow walls on all sides and leaving the hapless managers, engineers and developers trapped in the middle. Make good [smart] decisions. Leverage standards. Adopt best practices. All of these will ensure your safety, whether you&#8217;re on an airplane, jumping out of a burning building, or just wrangling code. You know there will be an ending, so know how to get out and move onward, without being prompted by emergencies. Don&#8217;t get in, unless you know your way out.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/get-out-of-jail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Camera Phone In A Coffee Shop</title>
		<link>http://feyn.com/a-camera-phone-in-a-coffee-shop/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-camera-phone-in-a-coffee-shop</link>
		<comments>http://feyn.com/a-camera-phone-in-a-coffee-shop/#comments</comments>
		<pubDate>Tue, 24 Jul 2012 13:36:06 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=578</guid>
		<description><![CDATA[It&#8217;s human nature to be trusting. We don&#8217;t want to think people are out to get us, because we don&#8217;t want to live in constant fear. I get that. As a normal human being, you can&#8217;t walk through life being afraid of your shadow and paranoid that someone is out to get you. However, as [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s human nature to be trusting. We don&#8217;t want to think people are out to get us, because we don&#8217;t want to live in constant fear. I get that. As a normal human being, you can&#8217;t walk through life being afraid of your shadow and paranoid that someone is out to get you. However, as a software developer writing internet deployed code, that <em>exactly</em> how you have to think. If you are constantly vigilant, do everything right, cross all your t&#8217;s and dot all your i&#8217;s, you will still introduce vulnerabilities without knowing it. Sometimes, the attack will come in ways that will blow your mind&#8230;like say a camera phone in a coffee shop.</p>
<p><span id="more-578"></span>Try this the next time you&#8217;re enjoying an overpriced cup of cow secretions and burnt bean dishwater: Take out your phone, turn on the video camera feature, and position it such that it can record someone&#8217;s (or many people&#8217;s) keyboard, hands, and screen. Then just leave it there and record while you read your morning paper. After that you just [editor redacted to safeguard the innocent]. See? It&#8217;s that easy. No matter how many boards, bricks and chains you put up, it just took a camera phone in a coffee shop to walk through the front door.</p>
<p>Freaked out yet? That wasn&#8217;t even that hard. As a matter of fact, you&#8217;re probably going to try it the first chance you get. In many ways, that&#8217;s a good thing, so that you can convince yourself that you need to defend against something this simple. &#8220;OMG how???&#8221; you ask. There&#8217;s lots of ways, and they all suck. For this you really want IP address white-listing. Sadly, most applications can&#8217;t get away with IP white-listing, so you might try IP blacklisting, which is a lot like protecting your house by surrounding it completely with land mines (hope you never have to leave to get more cow secretions). Now you come to the horrid realization that there are some attacks you can&#8217;t rationally defend against. Give up? Nah. It&#8217;s like chess &#8211; giving up is the only guaranteed way to lose. They moved camera phone to coffee shop, <a title="Penetrate Yourself" href="http://feyn.com/penetrate-yourself/">what&#8217;s your move?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/a-camera-phone-in-a-coffee-shop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Point</title>
		<link>http://feyn.com/the-point/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-point</link>
		<comments>http://feyn.com/the-point/#comments</comments>
		<pubDate>Thu, 19 Jul 2012 18:08:54 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1294</guid>
		<description><![CDATA[Let&#8217;s briefly take a step back. Yes, we&#8217;re all very concerned with how best to drive software development. We love our methodologies and our philosophies &#8212; our little software calendar platitudes and acronyms. We love Martin Fowler, Kent Beck, Eric Evans, Bob Martin, so on and so forth. But really, what is the point? This [...]]]></description>
				<content:encoded><![CDATA[<p>Let&#8217;s briefly take a step back. Yes, we&#8217;re all very concerned with how best to drive software development. We love our methodologies and our philosophies &#8212; our little software calendar platitudes and acronyms. We love Martin Fowler, Kent Beck, Eric Evans, Bob Martin, so on and so forth. But really, what <em>is the point</em>? This article is for  everyone who has ever been subjected to my ongoing ramblings and critiques of software, processes, and team dynamics. I&#8217;d like to try to offer you a moment &#8212; if ever so brief &#8212; of catharsis. These were my intentions. Here was my point.</p>
<p><span id="more-1294"></span>When you understand <a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">TDD</a>, you realize that it&#8217;s actually extremely compelling if you want to facilitate rapid changes to a codebase while ensuring that quality is built into the <strong>product</strong>, rather than added retroactively later. When you start to understand the advantages of pair programming, you realize the distribution of domain knowledge and understanding on a daily basis is beneficial to the <strong>product</strong>. When we debate design patterns and evaluate code on the basis of the <a href="http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)" target="_blank">S.O.L.I.D. principles</a>, it&#8217;s because an object having one responsibility leads to simpler designs that are easier to use to recompose into new features, rather than duplicate concepts, which reduces effort in maintaining and extending the <strong>product</strong>.</p>
<p>Are you seeing a trend? It&#8217;s about the product. Nothing &#8212; not good architecture, not clean code, not unit tests or test-driven development, not Agile practices, not pair programming, not domain-driven design, not adaptive software &#8212; I mean, <em>none of it </em>is important if it doesn&#8217;t facilitate a quality product, faster. <em>That&#8217;s it.</em> That was the point. All of the critiques and conversations about how to build software better is about how to implement a strong vision rapidly with acceptably high quality. So you can make money. So we can have jobs. So people can have better lives. This is, and has always been, about building the product. Anyone who cares about any of this for another reason should not be trusted, because they have some other priority than simply building a great product quickly. <a title="Neil Green" href="http://www.feyn.com/author/neil">Neil</a> said it best: <a title="Nothing Matters More Than Coding Fast" href="http://www.slideshare.net/NeilGreen1/nothing-matters-more-than-coding-fast" target="_blank">nothing matters more than coding fast</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-point/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Art of Apprenticeship</title>
		<link>http://feyn.com/the-art-of-apprenticeship/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-art-of-apprenticeship</link>
		<comments>http://feyn.com/the-art-of-apprenticeship/#comments</comments>
		<pubDate>Thu, 19 Jul 2012 15:10:52 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1072</guid>
		<description><![CDATA[Fresh out of college, you have no idea what you&#8217;re doing. This fact is true no matter how much you paid for you college education, where you went, what your GPA was, or what Latin title was bestowed upon graduation. You have no clue, because you&#8217;ve never had a real job &#8211; this is your [...]]]></description>
				<content:encoded><![CDATA[<p>Fresh out of college, you have no idea what you&#8217;re doing. This fact is true no matter how much you paid for you college education, where you went, what your GPA was, or what Latin title was bestowed upon graduation. You have no clue, because you&#8217;ve never had a real job &#8211; this is your first. The number one gauge of being good at a job is experience in doing that job, and you have none. You may think that your college education is an indicator of how quickly you will master your job, but there is no correlation. It might actually work against you, because if you believe you already know everything you won&#8217;t be open to learning anything. If you want to get good at a job and you have no experience, you&#8217;ll need to apprentice under someone who can show you the ropes.</p>
<p><span id="more-1072"></span>Selecting a good mentor to apprentice under is critical to your long term success. If you pick the wrong one, you will be mistrained, which will cripple the rest of your career. Without a <a title="Gauging Oneself" href="http://feyn.com/gauging-oneself/">gauge</a> as to who is good at their job and who isn&#8217;t, <strong>selecting a mentor is a difficult process</strong>. Over time, as your knowledge of what makes a good mentor improves, you may end up switching mentors, but you still need to pick the first one. You want someone who will continually push you to the next level by forcing you outside of your comfort zone. You also want someone who can be frank without being cruel, so that you will be given good advice while still having the motivation to listen to it. Still, even if you do find someone who would make a good mentor, there&#8217;s no guarantee that they will want to take you on as their apprentice.</p>
<p>To convince someone to be your mentor you have to demonstrate your willingness to be subjugated. Today, the word &#8220;subjugate&#8221; has fallen out of favor due to it&#8217;s <a href="http://en.wikipedia.org/wiki/Indentured_servant" target="_blank">negative connotations</a>, but it is accurate in describing the superior/subordinate relationship of master/apprentice. Someone has to direct, the other has to follow, or it doesn&#8217;t work. Subjugation means following what you are directed to do, and &#8211; at times &#8211; without question. If you are unwilling to do this, you are <a href="http://en.wikipedia.org/wiki/Luke_Skywalker" target="_blank">not ready to be someones apprentice</a>. Knowing that you are entering into a relationship of subjugation, the pressure is on you to find someone that you respect so deeply that <a href="http://en.wikipedia.org/wiki/List_of_Kill_Bill_characters#Pai_Mei" target="_blank">being subjugated under them fills you with a sense of pride</a>. In the tough days to follow, this alone may be all you have to keep you from quitting, and making to all-too-common mistake of attempting to learn a job on your own.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-art-of-apprenticeship/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Path to Becoming an Agile Developer, Not</title>
		<link>http://feyn.com/the-path-to-becoming-an-agile-developer-not/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-path-to-becoming-an-agile-developer-not</link>
		<comments>http://feyn.com/the-path-to-becoming-an-agile-developer-not/#comments</comments>
		<pubDate>Thu, 19 Jul 2012 12:43:06 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1274</guid>
		<description><![CDATA[Since I&#8217;ve already started the fire for more Agile in operations, it makes sense to actually discuss what exactly is involved in doing just that.  After all, this isn&#8217;t just envy of my fellow software development brethren&#8211; then again, who wouldn&#8217;t want to be a hip and Agile developer? &#8212; these are real methodologies and [...]]]></description>
				<content:encoded><![CDATA[<p>Since I&#8217;ve already started the fire for more <a title="Smooth Operators" href="http://feyn.com/smooth-operators/">Agile in operations</a>, it makes sense to actually discuss what exactly is involved in doing just that.  After all, this isn&#8217;t just envy of my fellow software development brethren&#8211; then again, who wouldn&#8217;t want to be a hip and Agile developer? &#8212; these are real methodologies and enlightenment gleamed through blood, sweat and tears and savvy Ops should outright <del>borrow</del> <em><strong>steal</strong></em> those tough-earned wisdom from the software teams.  If nothing else, only to avoid doing any <em>real</em> work so that we may continue to be grumpy and misanthropic stonewalls that system administrators are known for.  And play StarCraft.</p>
<p><span id="more-1274"></span>That should&#8217;ve caught your attention, because <a title="Mostly Agile" href="http://feyn.com/mostly-agile/">being Agile</a> is all about avoiding doing repetitive and the dreaded support tasks, probably the worst resource drain for many daily Ops scenarios. By embracing but a few ideas of the <a href="http://goo.gl/NVr2M" target="_blank">Agile Manifesto</a> &#8212; ideas such as simplicity, sustainability, process and teamwork<strong></strong> &#8212; there is a clear and measurable difference in minimizing the need to dragon-slay on a routine basis. Keeping things simple, eliminates the devotion of time required for grasping non-standard or incompatible [ or worse, non-compliant ] solution offerings. Instead, look for broadly adopted and commonly-accepted practices and technologies.  Leveraging them will lead readily to sustainability between the users and their demands, the business case requirements and operational effort because you&#8217;re not wasting time to troubleshoot some obscure feature in a proprietary package.  Sustainable also means creating processes, be it deployment or monitoring, that address challenges intrinsically as opposed to reacting upon exceptions.  Focus on the teams and you&#8217;ll focus on the people.  Focus on the people and invariably customer service will improve, and with that, customer satisfaction.</p>
<p>I&#8217;m writing in generics, because despite all operations being the same, <a title="Agile Ain’t A Weekend Seminar" href="http://feyn.com/agile-aint-a-weekend-seminar/">no two are truly alike</a>.  However, with all the advancements within reach, from utility computing to automation, you won&#8217;t have to look very far to find immediate and applicable Agile tenets in every day Ops-life.  <a title="No, Actually, Simpler Than That" href="http://feyn.com/no-actually-simpler-than-that/">Keep it simple</a>. <a title="Design Versus Intention" href="http://feyn.com/design-versus-intention/">Smart design</a>.  <a title="The Cooperative Code Base" href="http://feyn.com/the-cooperative-code-base/">Collaborative</a>.  <a title="Paying Your Dues On Maintenance" href="http://feyn.com/paying-your-dues-on-maintenance/">No support</a>.  No support means less work, in layman&#8217;s language. Next thing you know, you too will be just another hip and Agile guru.  Thank goodness you won&#8217;t have to write code&#8230; who&#8217;d want to do that every day?</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-path-to-becoming-an-agile-developer-not/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prioritization Encourages Groupthink</title>
		<link>http://feyn.com/prioritization-encourages-groupthink/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=prioritization-encourages-groupthink</link>
		<comments>http://feyn.com/prioritization-encourages-groupthink/#comments</comments>
		<pubDate>Tue, 17 Jul 2012 16:13:43 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1097</guid>
		<description><![CDATA[&#8220;Good morning everyone. First, let me say how excited I am on this, the first day of our new project! The goal of the project is to build a single family home, and we have a month to build it. Working closely with our team of engineers and architects we have broken down all the [...]]]></description>
				<content:encoded><![CDATA[<p>&#8220;Good morning everyone.  First, let me say how excited I am on this, the first day of our new project!  The goal of the project is to build a single family home, and we have a month to build it.  Working closely with our team of engineers and architects we have broken down all the individual requirements for the house, estimated how long they will take, and all we need to do today is prioritize them.  Since building houses is intuitive to everyone, this shouldn&#8217;t take too long, but I&#8217;ve blocked out 2 hours just in case we need extra time.  Let&#8217;s get started!&#8221;</p>
<p><span id="more-1097"></span>&#8220;Obviously, all houses start with a foundation, so we should start there.  This is a costly task, but since it&#8217;s a required for in order to building the rest of the house it should be our first one.  What&#8217;s that?  Oh, yes, of course, I assumed we were already connected to utilities such as water and electricity ahead of time, but if you guys want I can move those to the top of the priority list.  Now, once we have the foundation, we need to put up the walls, as logically a house needs walls after the foundation.  Sorry, I didn&#8217;t catch that&#8230;yes the walls would of course have places for the doors and windows to go, I figured that went without saying.  However, I think we can all agree that you first need to put the walls up before worrying about the doors and windows.  OK, now once they&#8217;re fully painted&#8230;uh&#8230;yes, I suppose it would be a good idea to wait until the doors and windows were installed before we did the painting.  Good point, I&#8217;ll make a note of that.</p>
<p>&#8220;With the walls up, we can move onto the roof.  Yes, sorry, I&#8217;m listening: What if it rains and the inside of the doors and windows gets damaged?  Aren&#8217;t all doors and windows weather-proof from both sides?  OK, well if we need to have a roof first, we can move adding the roof before the doors and windows but after adding the walls.  OK, with foundation, wall, roof, and doors and windows in place we&#8217;re pretty much done, and just need so finishing touches that shouldn&#8217;t take that long &#8211; which is good as we will only have a week left to the project.  I recommend that in order to make our deadline, we should focus on only adding the most important features first, which are the kitchen and bathrooms.  It has one kitchen, and 3 bathrooms, and since the project plan calls for 4 people working on the kitchen, and 2 people working on a bathroom, we&#8217;ll need 10 people working in parallel to get it all done.  Oh, I didn&#8217;t realize that was outside of the budget.  Well, looking at the sub-tasks, it looks like electrical and plumbing take the majority of the time, so we can either cut those or reduce the number of bathrooms.  I agree, electrical is something we move to later phase of the project, as we can give them portable lighting in the meanwhile.  Also, we can cut toilets until the next phase &#8211; they can just use the sinks.  Wow, sorry about that folks but it looks like we&#8217;re running 15 minutes over our 2 hour meeting time.  I&#8217;ll reschedule a follow up meeting for later this week, and continue working through this list.  Personally, I feel like we have enough of a priority list to tell the construction team to get started, so not getting through the entire list today won&#8217;t cost us any time.  Good job everyone!&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/prioritization-encourages-groupthink/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brand New Legacy</title>
		<link>http://feyn.com/brand-new-legacy/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=brand-new-legacy</link>
		<comments>http://feyn.com/brand-new-legacy/#comments</comments>
		<pubDate>Tue, 17 Jul 2012 15:15:59 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Quality Assurance]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1174</guid>
		<description><![CDATA[In Working Effectively With Legacy Code, Michael Feathers defines &#8220;legacy code&#8221; as code without tests. I love this definition for two reasons: first, it provides a succinct, objective way to measure whether code is legacy or not; secondly &#8212; and this really is the main reason I love it &#8212; it asserts that any code, [...]]]></description>
				<content:encoded><![CDATA[<p>In <em><a title="Working Effectively With Legacy Code" href="http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052" target="_blank">Working Effectively With Legacy Code</a></em>, Michael Feathers defines &#8220;legacy code&#8221; as code without tests. I love this definition for two reasons: first, it provides a succinct, objective way to measure whether code is legacy or not; secondly &#8212; and this really is the main reason I love it &#8212; it asserts that any code, written by anyone, at any time, without accompanying tests, is legacy the moment it&#8217;s written.</p>
<p><span id="more-1174"></span>Well, shit. That means that I&#8217;ve personally written rather a lot of legacy code in my life &#8212; especially before I started practicing Test-Driven Development. While TDD prevents me from making this conscious and inexcusable mistake now days, that doesn&#8217;t retroactively absolve me of the thousands of lines of untested code I&#8217;ve certainly written in the past. I&#8217;d even bet that a large portion of the legacy code I&#8217;ve written is still in use &#8212; still causing companies major headaches and heartburn. It might even be costing them major money. They&#8217;re having to pay for my lack of professionalism in my craft.</p>
<p>That stings, but here&#8217;s the real punchline: if legacy code is defined as code without tests, and making changes to untested code is extremely risky, then making changes to legacy code is, by necessity, extremely risky: a equals b equals c. Now that <em>really</em> sucks, because legacy code is commonly the source of many problems in applications, and consequently, the source of necessary changes and refactorings. Once you have legacy code, you&#8217;re already in a tough situation, and there&#8217;s not a ton that can be done to really reduce the risk of your [necessary] refactorings. For this reason, legacy code is easier to prevent than to cure, which is to say, if no one wrote any code without tests, there would be no more legacy code, and a huge chunk of the risk involved in the day-to-day maintenance of an application would drastically diminish. Learn from my mistakes, please. For all of us: don&#8217;t leave behind a legacy of legacy code.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/brand-new-legacy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Runaway Train Never Going Back</title>
		<link>http://feyn.com/runaway-train-never-going-back/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=runaway-train-never-going-back</link>
		<comments>http://feyn.com/runaway-train-never-going-back/#comments</comments>
		<pubDate>Tue, 17 Jul 2012 12:59:32 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1253</guid>
		<description><![CDATA[Management loves, and loves to tout about, training. Management distrusts training, because it highlights broken people, systems and processes. How can you love and distrust something at the same time?  The dichotomy is a simple reflection that as it is designed today, many if not most training programs are ineffective and are nothing short of [...]]]></description>
				<content:encoded><![CDATA[<p>Management loves, and loves to tout about, training. Management distrusts training, because it highlights broken people, systems and processes. How can you love and distrust something at the same time?  The dichotomy is a simple reflection that as it is designed today, many if not most training programs are ineffective and are nothing short of last-ditch efforts at salvaging un-qualified employees.  This is especially true within the technology sector, a group of professionals that may benefit the most from training yet reaps the least as a result of mandate, motivation and momentum associated with training.  There has to be a better way.</p>
<p><span id="more-1253"></span>A quick examination at the average person clamoring for corporate training will yield some funny and painful stereotypes:  People who <em>abuse</em> training as vacation time away from their job.  People who are <em>required</em> to undergo training, the result of an issued edict to address some chronic or systemic problem.  Last but not least, people who are truly incompetent, and despite countless hours of training, shows little signs of improvement and <em>continues</em> their mediocrity in the work place.  Of course these are anecdotal, but there is enough resemblance to real life that most won&#8217;t disagree with what&#8217;s been depicted.  None of these should be the prominent figure in the training picture.  People who are <a href="http://feyn.com/train-novices-before-hiring-new-people/" title="Train Novices Before Hiring New People">genuinely seeking betterment of themselves</a> should have an opportunity, and the tools, to help achieve those goals.  Companies should be able to rely on training for those improvements, and with measurable results to justify the investment made.  The overall process should be flexible, and adaptive, so that the impact adds to the whole as opposed to detracting from efficiency and productivity.</p>
<p>It&#8217;s not an impossible scenario, but one that requires doing the right things, with the right kind of resources.  Management has to become smarter in selecting the appropriate training platform.  Human Resources prefer continuing education to be more than a slogan on a pamphlet.  People need to take <a href="http://feyn.com/gauging-oneself/" title="Gauging Oneself">accountability of their own advancement</a>.  The truth is, <strong><em>anyone can train</em></strong> given the right combination of incentive, pace and guidance.  Before you sign up, or sign off, on next year&#8217;s training budget, make the choices that will yield the desired results.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/runaway-train-never-going-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Verbal, Protracted Metaphor About Software</title>
		<link>http://feyn.com/a-verbal-protracted-metaphor-about-software/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-verbal-protracted-metaphor-about-software</link>
		<comments>http://feyn.com/a-verbal-protracted-metaphor-about-software/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 15:48:16 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1171</guid>
		<description><![CDATA[The 2000 Presidential Election was mired in controversy over which candidate received the popular vote. Whether due to faulty hardware, or a state-wide psychomotor-disfunction epidemic, a large number of Florida ballots were unclear about which candidate they endorsed. &#8220;How could something as parochial and deterministic as aggregating multiple choice answers lead to such a quagmire?&#8221;, [...]]]></description>
				<content:encoded><![CDATA[<p>The 2000 Presidential Election was mired in controversy over which candidate received the popular vote. Whether due to faulty hardware, or a state-wide psychomotor-disfunction epidemic, a large number of Florida ballots were unclear about which candidate they endorsed. &#8220;How could something as parochial and deterministic as aggregating multiple choice answers lead to such a quagmire?&#8221;, you might ask, and indeed, it makes for an entertaining story.</p>
<p><span id="more-1171"></span></p>
<p>The voters were instructed to punch holes in their ballots beside the candidates they were electing, and the ballots were then to be automatically counted by a machine that would process the placement of the holes on the ballot. For most of the voters, punching a hole completely through their ballot was not a difficult task. For the ballots in question, however, the common case was that a hole appeared to have been started, but the chad &#8212; the circular paper cutout that previously filled the area that the hole now resided in &#8212; had not been separated from the ballot, but was instead left indented into the ballot. These were referred to as <a title="What Crappy Looks Like" href="http://feyn.com/what-crappy-looks-like/">dimpled chads</a>; they were imperceivable by the tallying machine because they weren&#8217;t actual holes in the paper, and they were confusing and controversial for the human panel that would ultimately have to apply both visual and tactile inspections to the ballot in order to determine what it was trying to say.</p>
<p>The dimpled chads were unclear about the voter&#8217;s intention. Whether by a fit of acute insanity, profound incompetence, or extreme laziness, the voter had abused the opportunity to make a clear, obvious statement of their <a title="Design Versus Intention" href="http://feyn.com/design-versus-intention/">intent</a> in this simple system, and had instead turned a process that should have been deterministic, thoughtless, and automated, into something <em>tragically</em> fuzzy, discreet, and manual. As you might have expected, the human committee that deliberated over the tens-of-thousands of ballets were constantly arguing, <a title="Negotiating With Terrorists" href="http://feyn.com/negotiating-with-terrorists/">negotiating</a>, and collaborating their way to an answer that they felt was a reasonable representation of what they assumed the dimpled chad was suggesting about its voter&#8217;s intent. &#8221;Okay John, very good. Anything useful today?&#8221; Yes, Reader. Presented for your viewing pleasure: a verbal, protracted metaphor about software.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/a-verbal-protracted-metaphor-about-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gauging Oneself</title>
		<link>http://feyn.com/gauging-oneself/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gauging-oneself</link>
		<comments>http://feyn.com/gauging-oneself/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 14:20:43 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1074</guid>
		<description><![CDATA[How good are you &#8211; really? Are you a master of your craft, merely mediocre, or do you suck? How would you know? Asking other people tends to yield nothing more but polite indirection and flattery, or at the other end of the spectrum rudeness masquerading as honesty. Within your organization, there are annual reviews, [...]]]></description>
				<content:encoded><![CDATA[<p>How good are you &#8211; really? Are you a master of your craft, merely mediocre, or do you suck? How would you know? Asking other people tends to yield nothing more but polite indirection and flattery, or at the other end of the spectrum rudeness masquerading as honesty. Within your organization, there are annual reviews, but they only gauge your performance against set expectations, not how you stack up to your peers. Without true visibility into other organizations, much less how their employees perform, you&#8217;re left with how they describe their employees: Typically infallible and elite. In truth, there is no yardstick to assess your own abilities compared to others, so what are you to do? How do you know if you need to improve, if you&#8217;re perfectly adequate, or if you&#8217;re so good that you need no further improvement?</p>
<p><span id="more-1074"></span></p>
<p>In sports, we have competitions and trophies; In academia, we have grades and degrees; In corporate America, we have titles and compensation &#8211; but titles are perfectly meaningless and compensation is based primarily on your ability to negotiate. When you get that promotion, <strong>is it truly reflective of where you stand on the world stage?</strong> Are you now in the same ranks as those with the same title at the top institutions on earth? No, probably not &#8211; at least not day one. If you claim that you <em>are</em> at the top institution on earth (and how you would claim that is <a title="You’re Arrogant If They Say You Are" href="http://feyn.com/youre-arrogant-if-they-say-you-are/">beyond me</a>), how do you know that there&#8217;s not someone more brilliant, hard working, and effective than you at an organization you&#8217;ve never heard of? Even if you are &#8211; irrefutably &#8211; the best at what your do, nothing says that you&#8217;ll stay there. People are constantly evolving and improving, and they won&#8217;t send you a memo when they&#8217;ve surpassed you.</p>
<p>There are those who are entirely self-motivated: They require no external validation to continue to improve. Even in the face of harsh criticism, they will continue on their chosen path no matter the cries of the naysayers. They are disciplined and determined, and <strong>are to be admired</strong>. They ignore external achievements, as they perceive that they will never be good enough. Winning competitions, good grades, and getting promoted mean nothing to them, because in the end it is only their self-assessment that carries any weight. If knowing how good you are compared to others is your motivation for improving, they you will never hit your full potential. The only true way to reach your peak is to look inwards, and be your own greatest critic. In the end, your abilities may or may not go recognized, but keep trying &#8211; the world needs more people like you.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/gauging-oneself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smooth Operators</title>
		<link>http://feyn.com/smooth-operators/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=smooth-operators</link>
		<comments>http://feyn.com/smooth-operators/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 12:44:24 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1224</guid>
		<description><![CDATA[Go to a developer-oriented gathering and you&#8217;ll hear this: &#8220;I have no interest in learning &#60;xyz&#62;&#8221; where &#60;xyz&#62; represent some kind of operational tasks or knowledge.  Why should they?  System administration is not really essential to software engineering, and conversely, ops teams have similar disinterest in writing code.  Or they would be doing each other&#8217;s [...]]]></description>
				<content:encoded><![CDATA[<p>Go to a developer-oriented gathering and you&#8217;ll hear this: &#8220;I have no interest in learning &lt;xyz&gt;&#8221; where &lt;xyz&gt; represent some kind of operational tasks or knowledge.  Why should they?  System administration is not really essential to software engineering, and conversely, ops teams have similar disinterest in writing code.  Or they would be doing each other&#8217;s job already.  That doesn&#8217;t mean there aren&#8217;t lessons to be learned from one another.  In fact, the emergence of <strong><em>devops</em></strong> reflect just that recognition. It&#8217;s time for operations to adopt and apply the same discipline and knowledge that their brethren in the software camp have gradually refined over the years.  It&#8217;s time for agile operations.</p>
<p><span id="more-1224"></span>There are just as many interruptions in the daily grind of systems and operations, and while it may be difficult to fathom, there are also more fires to put out on a regular basis.  These fires represent the same kind of disruption that software engineers bemoan about when it comes to productivity.  <a title="God Please No More Meetings" href="http://feyn.com/god-please-no-more-meetings/">Disruption kills productivity</a>.  If there was only a way for the tasks to be smaller, so that an administrator may work on pieces of a task without having to wrangle the entire [ day of ] story all at once, especially since fires may introduce new tasks previously un-identified in the same story.  At the end of it all, there is also an order to troubleshooting, or deployment, or administration, that lends itself to automation.  And what do you know, the first &#8220;S&#8221; in SLA stand for <em><a title="It’s Called “Service” For A Reason" href="http://feyn.com/its-called-service-for-a-reason/">Service</a></em>&#8230; OK, OK, I&#8217;ve droned on long enough, do you see this <em>pattern</em> emerging yet?  Agile may be readily applied to operations, especially system administration, for the very same reason that your software development team should be agile.</p>
<p>On the road to delivering resources for developers, production and thus serving the business itself, operations need to <a title="Idiot Proof Deployments" href="http://feyn.com/idiot-proof-deployments/">deploy rapidly</a>, monitor vigilantly and automate so that time could be spent elsewhere.  Systems have to be up.  Data must be safe.  <a title="When The Train Is Wrecking" href="http://feyn.com/coordinating-consequences/">Priorities must be met</a>.  All these and more demand agile practices within the teams, regardless whether the output is lines of code, or minutes of uptime.  Let go of the monolithic notion of tight and centralized control.  That time has passed in the current era of commoditized technology. The smart and savvy ops people have already moved on &#8212; they&#8217;ve embraced the same principles that drive effective modern software teams.  They&#8217;ve gone agile.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/smooth-operators/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No, Actually, Simpler Than That</title>
		<link>http://feyn.com/no-actually-simpler-than-that/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=no-actually-simpler-than-that</link>
		<comments>http://feyn.com/no-actually-simpler-than-that/#comments</comments>
		<pubDate>Tue, 10 Jul 2012 15:29:35 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=468</guid>
		<description><![CDATA[Stop adding features. That one mantra &#8212; if followed consistently &#8212; would improve the majority of user interfaces. In terms of concrete evidence, it&#8217;s out there in droves, but I leave it to the reader to discover the truth of it. In essence, humans have a tough time finding what they need in a sea [...]]]></description>
				<content:encoded><![CDATA[<p>Stop adding features. That one mantra &#8212; if followed consistently &#8212; would improve the majority of user interfaces. In terms of concrete evidence, it&#8217;s out there in droves, but I leave it to the reader to discover the truth of it. In essence, humans have a tough time finding what they need in a sea of what they don&#8217;t. The more features you add, the more the likelihood that you&#8217;re adding what the user doesn&#8217;t need at a given point in time. This guideline, as simple and intuitive as it is, is an extremely difficult pill to swallow for business that make their money selling new features.</p>
<p><span id="more-468"></span>Long before we can discuss what features to cut, or how to make money if we do, we have to first become comfortable with this inverted proportion: As number of features increases, <a href="http://www.useit.com/alertbox/features.html" target="_blank">usability decreases</a>. No amount of hand wringing or fervent objection is going to change this fact, as it stems from the way in which the human mind functions. Rather that rail against the concept, learn to embrace it and work with it: You degrade the user experience with additional features.</p>
<p>Rationally then, the question should be how much do you care about degrading the user experience? If you&#8217;re honest with yourself, not much &#8212; especially if your livelihood depends on it. The world&#8217;s most <a href="http://www.microsoft.com" target="_blank">successful software companies</a> suffer from  extreme <a href="http://en.wikipedia.org/wiki/Software_bloat" target="_blank">feature bloat</a> and are enormously profitable. Perhaps you care from an aesthetic standpoint, or an ideal that all user interfaces should be easy to use, but also don&#8217;t forget that you&#8217;re running a business. If at some point your business would benefit from a more usable user interface, before enlisting the help of user interface experts, look first to your feature set and trim out the 20% that go unused. You may as well &#8212; it will be the first bit of advice any user interface expert worth their salt will give you.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/no-actually-simpler-than-that/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Design Versus Intention</title>
		<link>http://feyn.com/design-versus-intention/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=design-versus-intention</link>
		<comments>http://feyn.com/design-versus-intention/#comments</comments>
		<pubDate>Tue, 10 Jul 2012 14:44:37 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1184</guid>
		<description><![CDATA[As  problem solvers, we dream of a positive vision of the future, based upon the belief that the challenges and problems we face are solved by good design.  OK, stop the playback.  Back in the real world, the dominoes occasionally get knocked down in sequences un-imagined and worse, in ways where our complex and richly-integrated [...]]]></description>
				<content:encoded><![CDATA[<p>As  problem solvers, we dream of a positive vision of the future, based upon the belief that the challenges and problems we face are solved by good design.  OK, stop the playback.  Back in the real world, the dominoes occasionally get knocked down in sequences un-imagined and worse, in ways where our complex and richly-integrated systems cannot address.  Some of it will be act-of-god happenstance, some will be introduced by the ever fallible humans, while others are just malicious intent.  It&#8217;s a harsh reality, but that is and have always been the Internet in spite of funny cat GIFs.  When you are creating a solution &#8211; from authentication to authorization &#8212; make sure the design takes some consideration for all intents, not just the ones derived from planned and expected user stories.</p>
<p><span id="more-1184"></span>When BMW created an access point for non-franchised garages and mechanics to be able to pull diagnostics and interact with their sophisticated vehicles, they never <em>intended</em> for criminals to <a href="http://goo.gl/EpQ2x">re-program illegitimate keys </a>ad-hoc, and with ease and expediency for car theft.  When financial institutions added forgotten-password retrieval and reset routines, they never expected that a lingering password retrieval session could be hijacked and used for logging in without <em>any</em> credentials.  Amazon&#8217;s own &#8220;<a href="http://goo.gl/PT3gq">elasticity</a>&#8221; stretched past breaking recently, because of an anticipated failure recovery created over subscription of the very Amazon Web Services provided, during a problematic power period caused by Mother Nature&#8217;s record-breaking heat wave.</p>
<p>In each of these scenarios, engineering teams went through rigorous design and review to ensure they addressed the planned or imagined use cases, individually.  Project managers watched as QA performed the required tests.  They absolutely delivered what was asked of them in terms of product and functionality and usability.  Yet every single one of them failed in such a way that leads to pondering, how could this not have been thought of?  Ironically, it is the efficiency at solving the original problem &#8212; allow access, reset credentials, shift to a different resource pool &#8211; that in turn created an entirely different monster.  Their design satisfied <em>their</em> singular and original intention.  Will your silver bullet bring out the boogey man underneath the bed?</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/design-versus-intention/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Campgrounds and Codebases</title>
		<link>http://feyn.com/campgrounds-and-codebases/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=campgrounds-and-codebases</link>
		<comments>http://feyn.com/campgrounds-and-codebases/#comments</comments>
		<pubDate>Tue, 10 Jul 2012 12:05:15 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1176</guid>
		<description><![CDATA[The Boy Scouts of America have a rule, &#8220;Always leave the campground cleaner than you found it.&#8221; I was never a Boy Scout, but I found out about this rule when I read Bob Martin&#8217;s Clean Code. I thought it was such a splendid philosophy to apply to software engineering and codebases that I&#8217;ve probably referenced [...]]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://en.wikipedia.org/wiki/Boy_Scouts_of_America">Boy Scouts of America</a> have a rule, &#8220;Always leave the campground cleaner than you found it.&#8221; I was never a Boy Scout, but I found out about this rule when I read Bob Martin&#8217;s <em>Clean Code</em>. I thought it was such a splendid philosophy to apply to software engineering and codebases that I&#8217;ve probably referenced it a hundred times. Sure, it rolls off the tongue nicely, and teaches children to clean up after themselves, but I knew there was something subtle about it that I liked that wasn&#8217;t immediately apparent &#8212; something more fundamental, revolving around diligence, discipline, and dedication. It occurred to me that the underlying philosophy I was so attracted to was this revolutionary concept of giving a shit.<span id="more-1176"></span></p>
<p>Imagine for a moment if your team rallied behind this unified vision of always leaving your codebase cleaner than when you opened it. How would that affect your approach? Would you think more about the changes you were about to make? I certainly did. I thought about how I felt about whomever had been here before me and had left this monolithic catastrophe. I also thought about the person who would spend some time here after me and who would have to clean up whatever mess I decided to leave behind. I thought twice, and I cleaned up. The Boy Scout Rule helps you think about the code you&#8217;re writing in terms of how it will affect the next person after you, and how it contributes to the system as a whole.</p>
<p>Most importantly, however, is that it encourages you to make small, incremental improvements. No improvement is too small. Extract an interface, pick up a bottle; introduce a factory, leave behind some firewood for the next troop. This approach to software makes the monumental task of refactoring a legacy system somehow possible. It makes the codebase <em>everyone&#8217;s</em> responsibility; if you spend time in it, you&#8217;re responsible for it. Someone may want to use the campground after you, so clean it up, ok? Every little bit helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/campgrounds-and-codebases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mutiny On The Bounty</title>
		<link>http://feyn.com/mutiny-on-the-bounty/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mutiny-on-the-bounty</link>
		<comments>http://feyn.com/mutiny-on-the-bounty/#comments</comments>
		<pubDate>Thu, 05 Jul 2012 17:17:30 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1135</guid>
		<description><![CDATA[It&#8217;s not the easiest pill to swallow, and more importantly, imagine trying to convince the management team to not only implement an external security review program, but to provide incentives for the resulting discoveries &#8212; that&#8217;s right, we&#8217;re going to pay others for our mistakes. Yikes! Let&#8217;s face it, there will be bugs in software, [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s not the easiest pill to swallow, and more importantly, imagine trying to convince the management team to not only implement an external security review program, but to provide incentives for the resulting discoveries &#8212; that&#8217;s right, we&#8217;re going to pay others for our mistakes. Yikes! Let&#8217;s face it, there will be bugs in software, despite <a title="Agile Ain’t A Weekend Seminar" href="http://feyn.com/agile-aint-a-weekend-seminar/">development process</a>, review and QA. Items will get missed, and unintended feature or behavior will creep into the code base. The systems have become complex. The interactions are not always planned or even <a title="Negotiating With Terrorists" href="http://feyn.com/negotiating-with-terrorists/">manageable</a> with 3rd parties. Likely, only non-developers won&#8217;t acquiesce to that simple truth. It&#8217;s an understandable sentiment by the business stakeholders, as their focus isn&#8217;t on design or implementation of complex application logic. However, there should be one common ground within any organization, and that is the need to be diligent stewards of their customers, and by extension, their customers&#8217; information. Security is the bedrock of excellent customer service.</p>
<p><span id="more-1135"></span>People tend to be entrenched on the subject of bug bounties &#8212; and conversely, bug bounty programs. Companies on the opposing side of this idea, which include some of the biggest names in the industry &#8212; Adobe, Microsoft, and Apple – they do not believe in rewarding others for vulnerability discoveries, at least not in monetary terms. Meanwhile, they are the same companies that routinely struggle with reactive security patches and frequent egg on their face, when defects leading to mass breaches comes to light. Proponents of this &#8220;radical&#8221; idea of bug bounty include Mozilla, Facebook and Google, who&#8217;ve been able to reap the benefits of crowdsourcing bug researches, and both publicly and monetarily acknowledge that effort. To that list, we must now include PayPal, who&#8217;ve announced an update to their bug reporting system to include a paid bug bounty program. This is a huge step, when a financial company is ready to embrace such programs. It’s not some <a href="http://goo.gl/nsXqr" target="_blank">leap of faith</a>, &#8220;data has shown it to be an effective way to increase researchers attention on Internet-based services and therefore find more potential issues.&#8221;</p>
<p>Just as award winning directors need a separate set of eyes to aid in editing to preserve and enhance the integrity of a film; software companies need the scrutiny of outsiders, especially when the Internet is on the other side of the threshold. PayPal’s steps down this path should be lauded and others should take notice&#8230; if a company whose core business is financial transactions, and the corresponding challenge in preventing the misuse of their systems, have endorsed that bug bounty is the appropriate approach… what’s holding your company back from adopting a similar program?  In that debate, the gallery of witnesses now includes more than just grass root supporters of open source projects, it includes real companies needing a solution to some very real problems.  Time to discuss the same need within your organization.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/mutiny-on-the-bounty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>God Please No More Meetings</title>
		<link>http://feyn.com/god-please-no-more-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=god-please-no-more-meetings</link>
		<comments>http://feyn.com/god-please-no-more-meetings/#comments</comments>
		<pubDate>Thu, 05 Jul 2012 15:49:30 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=475</guid>
		<description><![CDATA[The majority of meetings are a waste of time for the majority of people in them, yet we call them mercilessly whenever we feel there is the slightest communication need. Meetings have no cost that can be directly measured, but a benefit that can: People sat in a meeting for a period of time. Really, [...]]]></description>
				<content:encoded><![CDATA[<p>The majority of meetings are a waste of time for the majority of people in them, yet we call them mercilessly whenever we feel there is the slightest communication need. Meetings have no cost that can be directly measured, but a benefit that can: People sat in a meeting for a period of time. Really, as stated, that can only be a good thing &#8212; especially if it&#8217;s the <em>right</em> people. With this in mind, great care is taken in the selection and culling of meeting attendees. After all, without the right people, how can it have the right outcome? This is where the concept of the meeting breaks down, as &#8220;the right outcome&#8221; is rarely understood much less articulated to attendees.</p>
<p><span id="more-475"></span>&#8220;The meeting outcome&#8221; is almost a dirty phrase. Clearly, those who wish to know the desired outcome of a meeting before the meeting simply wish to avoid the meeting. Try this experiment: The next time you receive a meeting invite, reply with a polite email inquiring as to the desired outcome of the meeting. Take your time, and phrase it carefully so as not to offend. Try as you might, you can&#8217;t avoid the insinuation that the person calling the meeting did not give enough thought to the outcome. If the reply contains an agenda, consider yourself lucky, but avoid the temptation to remind the meeting organizer that an agenda does not outline a desired outcome.</p>
<p>If one were to focus on the desired outcome of a meeting, many meetings would be radically altered and/or canceled altogether. &#8220;What do you want to happen as a result of this meeting?&#8221; is not a complicated question steeped with emotion, but it is often greeted as such. When I meet with my accountant, I want to know how much I owe in taxes. For that he doesn&#8217;t even need a full email &#8211; a text message will do. When I meet with my auto mechanic, I want to know what is wrong with my car, and how much it will cost to fix it. This can be related over the phone in less than 10 minutes. When I hold a &#8220;design review&#8221; what do I want as a result? When I call a &#8220;team meeting&#8221; what is my objective? Perhaps if we start with what we want, and then afterwards consider if a meeting is necessary, we can save companies hundreds of wasted hours of productivity a week.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/god-please-no-more-meetings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop Waiting For Green Fields</title>
		<link>http://feyn.com/stop-waiting-for-green-fields/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=stop-waiting-for-green-fields</link>
		<comments>http://feyn.com/stop-waiting-for-green-fields/#comments</comments>
		<pubDate>Thu, 05 Jul 2012 13:46:36 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1149</guid>
		<description><![CDATA[There&#8217;s a skill that I&#8217;ve rarely seen among recent college grads walking into enterprise codebases, and that&#8217;s maintaining legacy code. It must be shocking to expect to walk off campus and on to a green field project, only to be met with a &#8220;where the hell did these 1.5 million lines of code come from?&#8221; [...]]]></description>
				<content:encoded><![CDATA[<p>There&#8217;s a skill that I&#8217;ve rarely seen among recent <a href="http://feyn.com/the-art-of-apprenticeship/">college grads</a> walking into enterprise codebases, and that&#8217;s maintaining legacy code. It must be shocking to expect to walk off campus and on to a green field project, only to be met with a &#8220;where the hell did these 1.5 million lines of code come from?&#8221; sentiment. I&#8217;ve observed three particularly difficult challenges that less-experienced engineers face when working with legacy codebases: rapid understanding, adapting design, and finally, implementing bug-free modifications.</p>
<p><span id="more-1149"></span></p>
<p>Rapid understanding seems intuitive, but is actually quite difficult. Even with a masterful understanding of whatever language(s) the codebase happens to be written in &#8212; and not to downplay this, that helps tremendously &#8212; it can still be extremely difficult to actually understand what some lines of code are accomplishing in an unfamiliar domain. Almost always what ends up being most difficult to understand were the <em>intentions</em> behind the code. Of course, you had an initial requirement to make a change that lead you to explore this part of the code to begin with, and you likely came up with an idea of how you thought existing functionality would work, and what type of change you needed to make. After rapidly understanding the code that&#8217;s <strong>actually</strong> there, you&#8217;ll likely find that you made some incorrect assumptions. Now it&#8217;s time to adapt your design to fit within the constraints of the code that&#8217;s actually there. Alternatively, you could try to adapt the existing code to facilitate your optimal design, but this can be difficult in codebases that aren&#8217;t <a title="The Cooperative Code Base" href="http://feyn.com/the-cooperative-code-base/">cooperative</a>.</p>
<p>Finally, the actual implementation can seem easy, until it&#8217;s caveated with &#8220;bug-free&#8221;. An all-too-common post-mortem of code changes in legacy systems is counting the ways it broke pre-existing functionality, sometimes in the most obscure, non-obvious ways. Unfortunately, I&#8217;m not aware of an awesome, immediate fix to this problem. It usually requires invasive testing of legacy components, and potentially risky refactors &#8212; reducing the risk of which can be exceedingly difficult. However, as for the code <strong>you&#8217;ll</strong> be writing, test-driven development and pair programming are essential to bug-free modifications. We&#8217;ll talk more about reducing the risk of legacy refactors next.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/stop-waiting-for-green-fields/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rollback From A Beach</title>
		<link>http://feyn.com/rollback-from-a-beach/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rollback-from-a-beach</link>
		<comments>http://feyn.com/rollback-from-a-beach/#comments</comments>
		<pubDate>Tue, 03 Jul 2012 16:24:33 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=585</guid>
		<description><![CDATA[I never get why people panic at any point during a deployment. When you&#8217;re doing a deployment you&#8217;re in only one of two situations: 1) You&#8217;ve never deployed the app before 2) You have. If you never deployed the app, there&#8217;s no audience to complain if things go wrong, so take your time and figure [...]]]></description>
				<content:encoded><![CDATA[<p>I never get why people panic at any point during a deployment. When you&#8217;re doing a deployment you&#8217;re in only one of two situations: 1) You&#8217;ve never deployed the app before 2) You have. If you never deployed the app, there&#8217;s no audience to complain if things go wrong, so take your time and figure them out &#8211; no need to panic. If you have deployed the app before, you damn sure better have a rollback rip chord in place. Fact is, the vast majority of deployments are done without even the semblance of a rollback plan. The best they have is to restore the database from dump files and build an earlier source control tag. That&#8217;s not a plan, that&#8217;s inviting disaster.</p>
<p><span id="more-585"></span></p>
<p>The stupidest thing I&#8217;ve ever heard as it related to rollbacks was from &#8211; off all people &#8211; a chief architect. The statement was, &#8220;We never rollback, only forward&#8221;. Said by a military general in the face of overwhelming odds this may still not be prudent, but at least it&#8217;s inspiring. In this particular situation, customers were going berserk, data was being lost, and it was during prime business hours. Why in gods name wouldn&#8217;t you roll back? Comes to find out, there wasn&#8217;t a rollback plan.</p>
<p>I want you to listen to me when I say this: Whether you are deploying the simplest application in the world, or the world&#8217;s largest website, you must have a rollback plan. Murphy&#8217;s law works overtime during a deployment, and sh*t will happen that you cannot anticipate. Rather than put the business at risk, you need to pull the plug, call off the deployment, and restore the app to a working state. This is a strategic retreat, not an admittance of defeat. There was a flaw in the deployment plan, and you made a wise choice. Now you can figure out what went wrong without customers losing their minds and the database purging terabytes of data. With the ability to rollback from anything, you&#8217;ll never panic during a deployment again. When things go screwy, you just hit the big red rollback button and go back to sipping Mai-Tais, thinking of how they&#8217;re just handing out chief architect titles nowadays.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/rollback-from-a-beach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protogenesis</title>
		<link>http://feyn.com/protogenesis/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=protogenesis</link>
		<comments>http://feyn.com/protogenesis/#comments</comments>
		<pubDate>Tue, 03 Jul 2012 15:23:29 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=1064</guid>
		<description><![CDATA[I have a few a stories I&#8217;ve told over the years to explain my origins in software engineering. One of the more humorous ones is that I wrote down on a piece of paper &#8220;Doctor, Lawyer, Software Engineer&#8221;, and chose the one that didn&#8217;t legally require a college degree. While that story is actually true, [...]]]></description>
				<content:encoded><![CDATA[<p>I have a few a stories I&#8217;ve told over the years to explain my origins in software engineering. One of the more humorous ones is that I wrote down on a piece of paper &#8220;Doctor, Lawyer, Software Engineer&#8221;, and chose the one that didn&#8217;t legally require a college degree. While that story is actually true, the reason Software Engineer ended up on the paper to begin with was that I had an instant, lasting attraction to the notion of being able to model real world interactions for the cost of electricity. Potentially even more than that was the allure of creating something out of nothing.</p>
<p><span id="more-1064"></span>The first time I wrote a BASIC program, it occurred to me that I had just created something from nothing. Where previously there was no logic and no design, I had been able to manifest my ideas through code. All I needed was a low-fidelity text editor (and GW-Basic), and I could create hundreds of different little procedures and subroutines to play tic-tac-toe, or keep track of to-do lists &#8212; my imagination was my limit. This was <em>huge</em>. That feeling of inspiration and encouragement, knowing I was in a realm of pure creativity, is something I&#8217;ve never forgotten, and still attracts me to my craft today. Only now, it&#8217;s being influenced by different programming paradigms and techniques.</p>
<p>Rediscovering and remembering why you love your craft is something software engineers should do as often as possible, if for no other reason than that our jobs can become excruciatingly mundane if we allow them. Learn a functional language, or design a DSL for customizing your dream car. Work to recapture what attracted you to your craft to begin with, so the next time you think &#8220;if I have to refactor one more service&#8230;&#8221;, you&#8217;ll consider how amazing it was to be able to create a digital service that aggregates millions of users based on their first name to begin with. In fact, you might even consider how amazing it is to be able to deal with a <em><strong>million</strong> of anything to begin with</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/protogenesis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You Are The Product</title>
		<link>http://feyn.com/you-are-the-product/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=you-are-the-product</link>
		<comments>http://feyn.com/you-are-the-product/#comments</comments>
		<pubDate>Tue, 03 Jul 2012 13:53:29 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=971</guid>
		<description><![CDATA[The constant and rapid pace of technological innovations creates easy opportunities for advancement.  In this era of fast adoption and, occasionally, fast expiration, it&#8217;s not easy to slow down and examine how the changes have affected our lives.  While I love the utility available to me in this inter-connected world, I am not a fan [...]]]></description>
				<content:encoded><![CDATA[<p>The constant and rapid pace of technological innovations creates easy opportunities for advancement.  In this era of fast adoption and, occasionally, fast expiration, it&#8217;s not easy to slow down and examine how the changes have affected our lives.  While I love the utility available to me in this inter-connected world, I am not a fan of the dichotomy of providing <em>free service</em> and requiring <em>business profitability</em> that has emerged as the default playbook for achieving and measure success as a company.  Consumers have become increasingly naïve in their willingness to give up the power of purchase, and in turn, companies see the individual not as a customer, but simply another addition to the user base collection.  When there is no price to pay, you are not a customer; you are just a product being sold.</p>
<p><span id="more-971"></span>Services are not free.  Features are not give-aways.  Even without explosive growth, companies have to maintain break even to sustain operability.  And when the revenue does not come from the users themselves, then the practice of selling the data based on collected behavior must continue. That information is valuable and the cost of gathering that information pales in comparison.  Billions in revenue.  Millions in cost.  So companies will create addictive and compulsive products only to give them away. The culling and cultivation of the masses will continue &#8212; without awareness and without knowledge, the masses will continue to expect free offerings in exchange for intimate details of their habits, preferences and lives. Worst yet, the success of companies like Facebook, Twitter and Zynga inspire new generations of businesses with this exploitative concept as the driving force, especially when the leadership themselves <a href="http://goo.gl/7TWYx" target="_blank">espouse this ideal</a> &#8211; &#8220;<strong><em>just to get revenue</em></strong>.&#8221;  I don&#8217;t mind the business model, except now that has become the only game in town.  People are no longer seen as customers, but simply remote sensors to provide endless data stream to feed into the machine.</p>
<p>Some may disagree, believing that the free services are worth the trade-off in privacy.  Arguably, the original dotcom rush of mass adoption may not have occurred as readily, without companies like Juno or Rocketmail along the way.  Except, then, there was the option to pay.  We do not have that now.  It&#8217;s become impractical to compete with the 800lb gorillas of social platforms with a pay-to-play offering.  Imagine the viability of a service without the momentum of people, and a pay wall before entry.  So not-paying is the only choice, and the vicious cycle continue, and empires continue to lock in the masses.  Users will continue to be trampled, their information traded, and their concerns largely ignored.  You have become the commodity.  You, are what&#8217;s selling off the shelves.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/you-are-the-product/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Penetrate Yourself</title>
		<link>http://feyn.com/penetrate-yourself/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=penetrate-yourself</link>
		<comments>http://feyn.com/penetrate-yourself/#comments</comments>
		<pubDate>Thu, 28 Jun 2012 18:36:23 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=408</guid>
		<description><![CDATA[If, as a developer, you care about security, you need to be constantly running pentests against your own code. Constantly &#8211; and I&#8217;m not talking about buying an off the shelf tool that will do the scanning for you. Those are important, but they&#8217;re something that QA or Operations can use to cross-check your work. [...]]]></description>
				<content:encoded><![CDATA[<p>If, as a developer, you care about security, you need to be constantly running <a target="_blank" href="http://en.wikipedia.org/wiki/Penetration_test">pentests</a> against your own code. Constantly &#8211; and I&#8217;m not talking about buying an <a href="http://en.wikipedia.org/wiki/Web_application_security_scanner">off the shelf tool</a> that will do the scanning for you. Those are important, but they&#8217;re something that QA or Operations can use to <a title="QA As A Crutch" href="http://feyn.com/qa-as-a-crutch/">cross-check</a> your work. What I mean is good, old fashioned, trying to break into the software you just wrote. This shouldn&#8217;t be too hard, you wrote it! You know where you usually slack off, so you&#8217;re in the best position to find vulnerabilities in your own code.</p>
<p><span id="more-408"></span>The reason this doesn&#8217;t happen &#8211; at all, really &#8211; is that engineers don&#8217;t know how to do penetration tests. I don&#8217;t know why, it&#8217;s a load of fun! Sure, those are the same skills that could get you <a target="_blank" href="http://en.wikipedia.org/wiki/Kevin_Mitnick">landed in prison</a>, but if you&#8217;re going to defend against hackers, you better learn to think like one. <strong>It takes a thief to catch a thief</strong>. Most engineers write software as if they&#8217;re living in a log cabin on the top of a mountain in a desolate region of the planet. Who would ever want to break into my stuff? It&#8217;s such a good neighborhood! The reality is that your software will be running on the Internet, and the Internet is the seediest part of town with crackheads looking in through your windows, looking for stuff to steal.</p>
<p>When it comes to security, it&#8217;s all defense. They say you can&#8217;t win a war playing defense, but you can tire out and demoralize the enemy. Every time they make a coordinated attack and get nothing, you&#8217;ve wasted their time and (if you were paying attention) learned about their methods, which then allows you to shore up your defense for the next time. Security isn&#8217;t about a one-time process that happens a few days before a release,<strong> it&#8217;s constant vigilance</strong>. They can hit and miss; you <a target="_blank" href="http://en.wikipedia.org/wiki/PlayStation_Network#2011_security_breach_and_outage">only need to miss once</a>. If that stresses you out, then you&#8217;re starting to get into the right mindset. At least at the end of the day, by running constant pentests against your own work, you&#8217;ve done the best you can to bar the doors and windows. It may not be enough if an army comes knocking at your door, but it will at least keep the crackheads out. </p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/penetrate-yourself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Negotiating With Terrorists</title>
		<link>http://feyn.com/negotiating-with-terrorists/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=negotiating-with-terrorists</link>
		<comments>http://feyn.com/negotiating-with-terrorists/#comments</comments>
		<pubDate>Thu, 28 Jun 2012 17:03:57 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=984</guid>
		<description><![CDATA[Terrorism comes in many forms. It&#8217;s commonly typified by leveraging hostage situations to undermine national policy and to facilitate foreign influence, or personal ulterior motives. An increasingly common incarnation of what I consider to be corporate terrorism manifests itself as so-called &#8220;knowledge anchors&#8221;: employees who have been with a company long enough to have acquired intimate knowledge [...]]]></description>
				<content:encoded><![CDATA[<p>Terrorism comes in many forms. It&#8217;s commonly typified by leveraging hostage situations to undermine national policy and to facilitate foreign influence, or personal ulterior motives. An increasingly common incarnation of what I consider to be corporate terrorism manifests itself as so-called &#8220;knowledge anchors&#8221;: employees who have been with a company long enough to have acquired intimate knowledge about the business&#8217; problem domain, and have subsequently outlasted any one else who might also have acquired the knowledge.</p>
<p><span id="more-984"></span>And so far, no problem. Certainly there&#8217;s nothing sinister about lasting at a company through many iterations and evolutions, gaining more and more insight as time goes by. Except that this information can be invaluable to a corporation &#8211; so much so, that they&#8217;ll actually keep on an employee who&#8217;s dead weight in order to prevent the knowledge loss. This is especially prevalent in software organizations, where some legacy component or module that no one understands is at the root of the company&#8217;s revenue &#8211; maybe it&#8217;s a transaction processing class, or a driver to connect to a proprietary data source. It might not even be that complex at heart, but has rotted over time to the point that the risk involved in refactoring &#8211; or God forbid, rewriting entirely &#8211; is too much to warrant anything new. Then there&#8217;s Mort, an abrasive and irritable curmudgeon who was the primary developer on the component 10 years ago, and who has been doing everything within his power to keep the company in the dark ages, which is where he comes from, and where he&#8217;s convinced he&#8217;ll retire.</p>
<p>Mort is a real pain in the ass to everyone who has the unfortunate task of interacting with him, really at any level. When asked even the most direct questions about his software, his explanations are cryptic and lazily formed, and are typically so myopic they lack context, and ultimately, usefulness. Mort knows what he&#8217;s doing too, and he&#8217;s become exceedingly capable of keeping his paycheck and remaining an island. So how do you ever get any information? You can try to approach truth by writing unit tests for the legacy system that Mort wrote, but typically the code is so poor that it does not really lend itself to testability. And you can&#8217;t really ask Mort for help testing his component, because, well, it&#8217;s worked for 10 years, it couldn&#8217;t be broken! He probably doesn&#8217;t believe in the value of unit tests anyway &#8211; that&#8217;s not true by necessity, it just tends to be the case. I&#8217;ve only ever really found one consistently successful approach in diminishing Mort&#8217;s clamp on the organization&#8217;s progress: negotiating away information, little by little, and immediately socializing it. If you want to extract age-old domain knowledge necessary to retire problematic software components or archaic processes, you&#8217;ve got to learn how to negotiate with terrorists.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/negotiating-with-terrorists/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are You Making History</title>
		<link>http://feyn.com/are-you-making-history/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=are-you-making-history</link>
		<comments>http://feyn.com/are-you-making-history/#comments</comments>
		<pubDate>Thu, 28 Jun 2012 13:45:08 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=760</guid>
		<description><![CDATA[A lot has been written about execution. Yet it clearly remains a challenge and an elusive goal to both individuals and teams. I could start espousing my own theories of execution, but I have no desire to add to the stream of management mumbo-jumbo regarding roles, responsibilities, metrics and results. Make no mistake, it is precisely the desire for results &#8212; the point [...]]]></description>
				<content:encoded><![CDATA[<p>A lot has been written about execution. Yet it clearly remains a challenge and an elusive goal to both individuals and teams. I could start espousing my own theories of execution, but I have no desire to add to the stream of management mumbo-jumbo regarding roles, responsibilities, metrics and results. Make no mistake, it is precisely the desire for results &#8212; the point B, in going from point A to point B &#8212; that leads us to examine and question execution. Too often, even capable people [and teams] focus on making history, when the focus should be on making impact.</p>
<p><span id="more-760"></span>It&#8217;s trivial to make history. With each ticking second, with or without effort [ and to some degree, any specifically applied will ] history is being made. It&#8217;s also easy to make terrible history &#8212; cause some downtime, write some vulnerable or insecure code, and reply-all to the wrong Email, and voila, you&#8217;ve made history. Fight a fire in production, stay up all night to salvage some deployment gone-awry, or cram all the extra feature request into an iteration or release &#8212; be the [super] hero and that&#8217;s a guarantee for making history too. One historical moment followed by another, some more notable than others, but that&#8217;s not really the kind of result we&#8217;re looking for. What&#8217;s tougher is making <strong>impact</strong>, because that means having <em>direct effect</em> on the situation, and quite often, requires the &#8220;<em>doing of right things</em>.&#8221; What does that mean? It means the slow and painful, and often without recognition or glory. It is <a title="Attracting Talent" href="http://feyn.com/attracting-talent/">people</a>, <a title="Don’t Just Buy More Hardware" href="http://feyn.com/dont-just-buy-more-hardware/">performance</a> and <a title="Mostly Agile" href="http://feyn.com/mostly-agile/">process</a>. It is <a title="Paying Your Dues On Maintenance" href="http://feyn.com/paying-your-dues-on-maintenance/">engineering</a>,  <a title="Idiot Proof Deployments" href="http://feyn.com/idiot-proof-deployments/">deployment</a>, and <a title="Password Is Not Protection" href="http://feyn.com/password-is-not-protection/">security</a>. It is all about the <a title="You’re Arrogant If They Say You Are" href="http://feyn.com/youre-arrogant-if-they-say-you-are/">one</a>, and all about the <a title="Train Novices Before Hiring New People" href="http://feyn.com/train-novices-before-hiring-new-people/">team </a>too.</p>
<p>There is no short cut here. No miracle drug or Midas touch or ten-step fortune cookie wisdom. It will be slow and time consuming. More than likely, it will demand persistence and commitment, and the bad/ugly that often come with small improvements. No one will throw a ticker tape parade for continuous integration. No pats on the back for steady velocity. There won&#8217;t be recognition, because the day won&#8217;t require saving. However, that will be enough. Because more than history, impact is being made. And that&#8217;s the real difference for getting results.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/are-you-making-history/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostly Agile</title>
		<link>http://feyn.com/mostly-agile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mostly-agile</link>
		<comments>http://feyn.com/mostly-agile/#comments</comments>
		<pubDate>Tue, 26 Jun 2012 15:03:03 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=937</guid>
		<description><![CDATA[Here&#8217;s a scenario: two women are at Starbucks, talking about how their respective weeks have been. One woman pauses, then exclaims, &#8220;I&#8217;m just so excited about parenthood! I can&#8217;t stop thinking about whether it&#8217;s going to be a girl or a boy!&#8221; &#8220;Oh my gosh! Are you pregnant?!&#8221;, the other woman responds, understandably shocked, given [...]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a scenario: two women are at Starbucks, talking about how their respective weeks have been. One woman pauses, then exclaims, &#8220;I&#8217;m just so excited about parenthood! I can&#8217;t stop thinking about whether it&#8217;s going to be a girl or a boy!&#8221; &#8220;Oh my gosh! Are you pregnant?!&#8221;, the other woman responds, understandably shocked, given that her friend has yet to show any signs of a pregnancy. &#8220;Well, not completely. I&#8217;ve never really been sold on the whole pregnancy process &#8211; you know, the mood swings, the cravings, the added weight. It&#8217;s not really right for me; I&#8217;m just interested in the &#8216;having a child&#8217; part. I guess you could say I&#8217;m <em>mostly</em> pregnant.&#8221;</p>
<p><span id="more-937"></span></p>
<p>As you may have already guessed, this is a metaphor. It&#8217;s also exactly what I think of whenever I hear a client describe themselves as being &#8220;mostly agile&#8221;, because maybe they like the results that Agile methodologies afford, but aren&#8217;t &#8220;sold on the process&#8221;. Maybe they do 6 week iterations, or they have a product team that can&#8217;t find any value in incremental demos if they can&#8217;t have everything all at once. Maybe they write 3 paragraphs in their Jira tickets, having completely forgotten the original point of using note cards to begin with: to provide a brief teaser of a feature that results in a real verbal conversation between two people.</p>
<p>Agile practitioners favor people over process; in fact, it&#8217;s the first list item in the Agile Manifesto. It doesn&#8217;t mean that they think process is useless; they merely value human interaction <em>more</em>, and thusly give it priority. This can be scary for a CYA-oriented product development organization &#8211; one that&#8217;s used to retaining months of Word Document revisions, emails, and chat histories, so that at the drop of a hat they can provide digital artifacts of their own due diligence, just in case everything goes side-ways. Agile can be a difficult switch, and I&#8217;m sympathetic to skeptical organizations who have only ever experienced varying gradations of success in waterfall projects. But if you&#8217;re interested in quick, iterative feedback, and if you highly value the flexibility to successively refine requirements that Agile methodologies afford, don&#8217;t try to be &#8220;mostly agile&#8221;. It doesn&#8217;t work. You&#8217;ve got to experience the process. You can&#8217;t skip the pregnancy.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/mostly-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Ain&#8217;t A Weekend Seminar</title>
		<link>http://feyn.com/agile-aint-a-weekend-seminar/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=agile-aint-a-weekend-seminar</link>
		<comments>http://feyn.com/agile-aint-a-weekend-seminar/#comments</comments>
		<pubDate>Tue, 26 Jun 2012 14:07:39 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=396</guid>
		<description><![CDATA[Agile. Don&#8217;t roll your eyes. Yeah yeah yeah you say, and I appreciate that &#8211; at least you&#8217;re being honest. Agile ain&#8217;t panning out. All of these good things were supposed to come out of it, but it all just seems like a disorganized mess. People are complaining, work isn&#8217;t getting done, and all the [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Agile_software_development" target="_blank">Agile</a>. Don&#8217;t roll your eyes. Yeah yeah yeah you say, and I appreciate that &#8211; at least you&#8217;re being honest. Agile ain&#8217;t panning out. All of these good things were supposed to come out of it, but it all just seems like a disorganized mess. People are complaining, work isn&#8217;t getting done, and all the while you&#8217;re reading about how good it is. You don&#8217;t get it. I understand. You wouldn&#8217;t get it, would you? You&#8217;re doing it all wrong. You made the common mistake of thinking that somehow Agile was a relief from the rigors of Waterfall methodologies, and that you could be on a perpetual process vacation.</p>
<p><span id="more-396"></span>The reality is that Agile is orders of magnitude more difficult that <a href="http://en.wikipedia.org/wiki/Waterfall_method" target="_blank">Waterfall</a>. Waterfall is so easy, it&#8217;s the same method you use to get your kids to do chores. You tell them what to do, and they do it within the allotted time or they get punished. Honestly, if your team is made up of children, you&#8217;d do well to <strong>stay away from Agile</strong> and get good at doing Waterfall. There&#8217;s no shame in that. Some teams have the professional maturity and expertise to do Agile successfully, but most teams do not. Take a hard, honest look at the type of team you&#8217;re working with, and choose your methodology appropriately.</p>
<p>If you do have a team capable of doing Agile, you better at least know what that means. Ask yourself, do you even have a clue what Agile means? What books have you read? Who&#8217;s been your <a href="http://en.wikipedia.org/wiki/Kent_Beck" target="_blank">Agile coach</a>? How many years have you been doing it? How many projects have you taken to successful completion using Agile methodologies? If you&#8217;re lacking in your knowledge of Agile, don&#8217;t impose your lack of knowledge on others. If you do, you can end up doing more harm that good. If you want to learn Agile, be ready to put in the work, cause it&#8217;s a lot harder than picking up your clothes and making your bed.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/agile-aint-a-weekend-seminar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Used To Code</title>
		<link>http://feyn.com/i-used-to-code/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=i-used-to-code</link>
		<comments>http://feyn.com/i-used-to-code/#comments</comments>
		<pubDate>Tue, 26 Jun 2012 12:58:37 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=898</guid>
		<description><![CDATA[Work in software development long enough, and one day, you too will hear this phrase uttered by someone, &#8220;I used to code.&#8221;  While the intention may be one of empathy or solicitation, as the identification of the supposed, shared, past is meant to build bonds. Inevitably, this utterance almost always forms a divisive line between those who write software and those [...]]]></description>
				<content:encoded><![CDATA[<p>Work in software development long enough, and one day, you too will hear this phrase uttered by someone, &#8220;I used to code.&#8221;  While the intention may be one of empathy or solicitation, as the identification of the supposed, shared, past is meant to build bonds. Inevitably, this utterance almost always forms a divisive line between those who <em>write software</em> and those who&#8217;ve <em>stopped writing software</em> to perform another role. The simple observation is this: developers seem to not respect careers paths past the immediate creation of code, while management &#8212; be it project, or product, or even executive &#8212; usually resort to this declaration, as some form of critique on effort, resourcefulness and most likely, timeliness of delivery.</p>
<p><span id="more-898"></span>Imagine the same conversation occurring in a slightly different setting, between say Joël Robuchon [culinary extraordinaire] and a guy who&#8217;ve made excellent French toast for weekend brunches at home &#8212; pointing out flaws to a celebrated chef and restaurateur, because our guy cracked an egg here and there. It&#8217;s comical, and it&#8217;s ludicrous. Actually, that conversation would <em>never</em> take place.  Because in real life, people recognize those specialized skills and respect strength of performance, and would hesitate to disagree with an artisan on their craft. Yet this conversation of ex-developer vs. current-developer routinely occurs in our industry, within many companies and many meetings, reviews and other contentious gatherings.  I&#8217;ve observed this, and so have you.</p>
<p>It&#8217;s a cynical view.  The implication trivializes code creation, as the task must be simple.  It also suggests a lack of trust, of the effort and commitment required for designing/implementing a quality solution to solve the problem at hand.  It may even be an avoidance of accountability, as the responsibility is shifted away from everything else, except those actions associated with software development &#8212; surely, the project plan is immaculate, the business requirements a state of perfection and all other components paragon of flawless execution.  The wrench is thrown in the <a title="When The Train Is Wrecking" href="http://feyn.com/coordinating-consequences/">general direction of the software team</a> because that&#8217;s the source of all things evil.  Please, think twice before this escape from your throat.  Trust me on this&#8230; I used to code.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/i-used-to-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Idiot Proof Deployments</title>
		<link>http://feyn.com/idiot-proof-deployments/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=idiot-proof-deployments</link>
		<comments>http://feyn.com/idiot-proof-deployments/#comments</comments>
		<pubDate>Thu, 21 Jun 2012 16:47:00 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=424</guid>
		<description><![CDATA[Deploying sophisticated software onto the internet is not easy. It involves lots of fine, intricate steps being executed in exactly the right sequence, and if any one of a thousand steps is not done in precisely the right order, the whole thing will fail. Knowing this, what do we do? We put a bunch of [...]]]></description>
				<content:encoded><![CDATA[<p>Deploying sophisticated software onto the internet is not easy. It involves lots of fine, intricate steps being executed in exactly the right sequence, and if any one of a thousand steps is not done in precisely the right order, the <a href="http://en.wikipedia.org/wiki/Twitter#Outages" target="_blank">whole thing will fail</a>. Knowing this, what do we do? We put a bunch of people on standby just in case anything goes wrong, and make sure that everyone is on a conference call and in a too-massive-to-communicate-effectively chat room at 2:00 am so that they can be Johnny-on-the-spot if something goes to wrong. Here&#8217;s a tip: If you are so nervous that something will go wrong that you need to have dozens of sleep-drunk people around ready to fix something they might have broken (or harass someone else who may have broken it) then you have too many damn humans involved in a process that needs to be fully automated.</p>
<p><span id="more-424"></span>Back to basics, so that we can convince yourselves that it&#8217;s really this easy. Back in the day, when you &#8220;deployed&#8221; a website, it was by FTP&#8217;ing static files. You connected to your server, and when you were ready, you dragged the files from the left side (your machine) to the right side (the remote machine). Presto! Your changes are live and you can go home! Total time of execution, around 5 minutes &#8217;cause you were on dial-up and decided to use MASSIVE 25kb GIFs in your black-background-with-pink text ultra cool cyber web space site. You grew up, got a job at a large enterprise running a J2EE/Oracle stack, and for the first time learned of something called a &#8220;<a href="http://en.wikipedia.org/wiki/Build_automation" target="_blank">build process</a>&#8220;. This build process &#8211; all by itself &#8211; took 15 minutes, and once you&#8217;ve built you are <strong>nowhere close to getting deployed</strong>. What&#8217;s even more depressing is that that&#8217;s usually the only thing that ever gets fully automated, mainly because we have to build all the time (hint).</p>
<p>From there on out it&#8217;s copy and pasting configurations no one else knows about, logging into administration consoles that you&#8217;ve only used a few times before, and hacking away at a command line like you were in a <a href="http://en.wikipedia.org/wiki/Swordfish_(film)" target="_blank">movie with Halle Berry</a>. This is going to lead to a bad time, and it doesn&#8217;t have to be this way. If a computer is good at anything, it&#8217;s good at performing a thousand intricate steps flawlessly every time it&#8217;s asked to. All it needs is to be told what to do. If you&#8217;re not sure what to tell it to do, then you&#8217;ve got a another problem entirely, and having a dozen people on the phone at O-dark-hundred ain&#8217;t the way to figure it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/idiot-proof-deployments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ripe Like An Apple</title>
		<link>http://feyn.com/ripe-like-an-apple/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ripe-like-an-apple</link>
		<comments>http://feyn.com/ripe-like-an-apple/#comments</comments>
		<pubDate>Thu, 21 Jun 2012 15:14:57 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=846</guid>
		<description><![CDATA[Sleek UI design and smooth user experience have become the norm, and a whole generation of users have grown up without knowing and understanding the risks of being online. Who could blame them? Being conscious and aware takes effort, and the marketing machines routinely churn out the chorus of &#8220;let us take care of it [...]]]></description>
				<content:encoded><![CDATA[<p>Sleek UI design and smooth user experience have become the norm, and a whole generation of users have grown up without knowing and understanding the risks of being online. Who could blame them? Being conscious and aware takes effort, and the marketing machines routinely churn out the chorus of &#8220;let us take care of it for you.&#8221; I mean, who would want to be concerned with virus/malware, that&#8217;s so&#8230; &#8220;PC&#8221; in this post-Apple world. A sea of [Mac] users have been groomed for the easy, <em>hands-off</em>, existence. Their complacency is to be expected. And ripe for <strong>exploitation</strong>.</p>
<p><span id="more-846"></span></p>
<p>It&#8217;s like the Nigerian scam. The reason why the bait Email discloses the telltale details of a Nigerian prisoner, is because that serves as a mechanism to screen out smart savvy people who would not fall for the scam. By <a href="http://goo.gl/A3QuP" target="_blank">systematically eliminating</a> the &#8220;false positives,&#8221; what remains are the willing, and susceptible, victims. The schemers are not stupid. They are lazy and always looking for the short cut. The fact a Flash-trojan specifically targeting Macs, infected almost 600,000 computers, including some 300 from Cupertino, Apple&#8217;s own backyard, tells me that it&#8217;s not about popularity and it&#8217;s not even a numbers game. People who do not exert the effort for basic safeguard will get taken. The combination of ill-informed and lack of consciousness paints a bright glowing target. Adding an AV solution after the machine has already been compromised is a painful first-hand lesson.</p>
<p>Just because your user base isn&#8217;t on the scale of billions doesn&#8217;t mean your code/application won&#8217;t garner the attention of the criminals. Obscurity is never assurance of safety, and nothing appeals to hackers more than&#8230; well, identified apathy toward security. Even Apple has had to change their message, removing the &#8220;<a href="http://goo.gl/BMB8W" target="_blank">no effort</a>&#8221; language itself. Relying on analysis after development has already engaged, or worse&#8230; reacting after the breach, should not be the primary means of eliminating vulnerabilities. Security is requirement one, when the Web is at your doorstep. It&#8217;s going to warrant involvement. It&#8217;s going to demand awareness. It needs consideration, from inception. Education is critical, and as the old GI Joe battle cry rallied, &#8220;Knowing is Half the Battle.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/ripe-like-an-apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Cooperative Code Base</title>
		<link>http://feyn.com/the-cooperative-code-base/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-cooperative-code-base</link>
		<comments>http://feyn.com/the-cooperative-code-base/#comments</comments>
		<pubDate>Tue, 19 Jun 2012 16:11:45 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=782</guid>
		<description><![CDATA[I&#8217;ve never received a compliment for making something simple seem complex. I&#8217;ve never had a conversation that began &#8220;Hey John, I think you&#8217;re great, as evidenced by the fact that I never know how the $@%# to begin attempting to use your code!&#8221; That would, of course, be absurd. Yet, for the longest time, I [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve never received a compliment for making something simple seem complex. I&#8217;ve never had a conversation that began &#8220;Hey John, I think you&#8217;re great, as evidenced by the fact that I never know how the $@%# to begin attempting to use your code!&#8221; That would, of course, be absurd. Yet, for the longest time, I rarely thought about my fellow engineers when designing my solutions that they would, inevitably, one day maintain &#8212; or refactor.</p>
<p><span id="more-782"></span>The reason wasn&#8217;t because the answer was especially intuitive to me; indeed, if it had been at the time, I&#8217;d have likely written something intentionally unintuitive in order to exercise my &#8220;programming chops&#8221; in what I perceived to be a &#8220;healthy creative process.&#8221; The real reason was because building a cooperative code base was <em>not</em> something I cared about.</p>
<p>An appropriately configurable code base is a cooperative code base: one in which engineers stop asking themselves &#8220;what should I build?&#8221;, and start asking themselves &#8220;what should I configure?&#8221; It&#8217;s a code base with a rich domain model that intuitively speaks about the company&#8217;s business plan. It provides obvious, reproducible interactions between objects as compositions of smaller, valuable features that might one day be used to compose other objects. Simply put, a cooperative code base empowers it&#8217;s engineers, rather than restraining them. So the question is, are you empowered by your code base? Or are you its hostage?</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-cooperative-code-base/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Up, In The Clouds</title>
		<link>http://feyn.com/up-in-the-clouds/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=up-in-the-clouds</link>
		<comments>http://feyn.com/up-in-the-clouds/#comments</comments>
		<pubDate>Tue, 19 Jun 2012 15:43:58 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=793</guid>
		<description><![CDATA[True operation mavens know that downtime is inevitable. It&#8217;s going to happen, despite your best efforts. A blip, a stumble, some cable will get cut. Increasing the &#8220;nines&#8221; carries quite the price tag, and may not be the best way to maximize ROI. The plans for disaster recovery needs to be balanced, so that focus [...]]]></description>
				<content:encoded><![CDATA[<p>True operation mavens know that downtime is inevitable. It&#8217;s going to happen, despite your best efforts. A blip, a stumble, some cable will get cut. Increasing the &#8220;nines&#8221; carries quite the price tag, and may not be the best way to maximize ROI. The plans for disaster recovery needs to be balanced, so that focus isn&#8217;t solely on the prevention of catastrophes. Equally important, is the <strong>rapid</strong> recovery for business continuance. Because that is the <em>true goal</em> of uptime &#8212; to serve pages, apps and data, to provide for the customers, and continue the revenue stream. This is no longer an insurmountable task, given the resources and knowledge at hand.</p>
<p><span id="more-793"></span></p>
<p>Utility computing is out of the proving grounds. This is the era of clouds. An instance is like a physical server, except it&#8217;s not. Elastic or other cloud-based storage is like a disk, except it&#8217;s not. Virtual server is like hardware, except it&#8217;s not. Instances are ephemeral. Storage is now a network. Virtualization implies multi-tenancy. Understand what the technology represents and assemble the building blocks accordingly. Amazon is not the only game in town. And if it&#8217;s too late and you&#8217;ve already gone all-in with EC2, have a firm grasp what Availability Zones really mean, and integrate that into the design. No one would rely on a single pipe for bandwidth, or a single power/UPS grid for electricity, so don&#8217;t place all the eggs in one US-East-Virginia basket. It&#8217;s time to look past yester-year&#8217;s data centers. These are the new tools to create some fantastic, resilient and modern infrastructure.</p>
<p>Combine that foundation with <a title="Idiot Proof Deployments" href="http://feyn.com/idiot-proof-deployments/">automated deployments</a>, it is now rather trivial to stand up another stack at a moment&#8217;s notice, anywhere. Grab the latest stable code, push out the approved content for delivery, restore from the current database backups, apply the verified configuration files, and start turning up some [fresh] servers. Execute the smoke tests, re-point DNS and just like snapping your fingers, the sites are all back up and running. Suddenly, the unplanned downtime is about as long as a scheduled maintenance window. There is no need to blame the tripped cords. This is not a dream. Make it the reality already.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/up-in-the-clouds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What Crappy Looks Like</title>
		<link>http://feyn.com/what-crappy-looks-like/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-crappy-looks-like</link>
		<comments>http://feyn.com/what-crappy-looks-like/#comments</comments>
		<pubDate>Tue, 19 Jun 2012 12:46:30 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=392</guid>
		<description><![CDATA[When we see a crappy user interface we know it.  We can&#8217;t articulate it, but we know it. We look at it, have that sinking feeling in our gut, and try to figure out a way to say something about it. But we can&#8217;t. We&#8217;re afraid that we&#8217;ll offend someone, or worse yet have the [...]]]></description>
				<content:encoded><![CDATA[<p>When we see a crappy user interface we know it.  We can&#8217;t articulate it, but we know it. We look at it, have that sinking feeling in our gut, and try to figure out a way to say something about it. But we can&#8217;t. We&#8217;re afraid that we&#8217;ll offend someone, or worse yet have the wrong opinion. And really, that&#8217;s all it is &#8211; your opinion. That&#8217;s really the problem. If your assessment of a user interface is only your opinion, how can it be valid? It&#8217;s valid because you *know* it&#8217;s crappy. You don&#8217;t need a degree in human-computer interaction, industrial design, or usability engineering to know it&#8217;s crappy &#8211; it just is.</p>
<p><span id="more-392"></span>We often miss the opportunity to just blurt out, &#8220;That sucks&#8221;. Look, if it sucks, it sucks. If you created it, try to make it not suck. If someone else did, tell them it sucks. Don&#8217;t try to sugarcoat it &#8211; that&#8217;s like slowly peeling off duct tape. Just say, &#8220;that sucks&#8221; and get working on the next, highly productive question: Why does it suck? It probably sucks because it&#8217;s ugly, clunky, or hard to use. Pick one and start there. If it&#8217;s ugly, hire a graphic designer with a portfolio you like, or hold an online design competition. If it&#8217;s clunky, dump features until you&#8217;re back to the core features everyone wants. If it&#8217;s hard to use, ask people to use it with you looking at them, and when they can&#8217;t figure something out change it so that they *can* figure it out.</p>
<p>Decades ago, there weren&#8217;t that many user interfaces around, and they were really expensive to create. As a result we needed a lot of PhD&#8217;s huddled around a chalkboard to figure out the best user interface before investing millions of dollars in creating one. Today, we can whiteboard 3 user interfaces in an afternoon, and build a working prototype the next day. We don&#8217;t need to read textbooks just to understand where to put a button or a check-box. All we need to do is look at the sites and applications that millions of people use every day. Even if you don&#8217;t particularly like a user interface, you at least know millions of people know how to use it. Remember, if you&#8217;re going to tell someone their works sucks, you better be ready with an alternative, and there&#8217;s no better alternative than pointing to the user interfaces of highly successful products.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/what-crappy-looks-like/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Privacy Fiction</title>
		<link>http://feyn.com/the-privacy-fiction/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-privacy-fiction</link>
		<comments>http://feyn.com/the-privacy-fiction/#comments</comments>
		<pubDate>Thu, 14 Jun 2012 16:05:30 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=716</guid>
		<description><![CDATA[As much as I value and protect my own privacy, when the roles are reversed, I like to be Big Brother at every step of the way.  Perhaps, that is why I go to some extremes when it comes to protecting my personal information, because I&#8217;m very aware the kind of &#8220;Big Data&#8221; collection and [...]]]></description>
				<content:encoded><![CDATA[<p>As much as I value and protect my own privacy, when the roles are reversed, I like to be Big Brother at every step of the way.  Perhaps, that is why I go to some extremes when it comes to protecting my personal information, because I&#8217;m very aware the kind of &#8220;Big Data&#8221; collection and what will yield from data mining the habits of people on every aspect of their lives.  As it turns out, defending the one is not sufficient, because you cannot police the entire [social] network.<br />
<span id="more-716"></span></p>
<p>Researchers from University of Heidelberg in Germany, have published their latest studies and findings, which fundamentally state that the intimate details not disclosed by an individual, &#8220;<a href="http://goo.gl/Eoe1W" target="_blank">can nonetheless be inferred with high probability [of accuracy]</a>,&#8221; if the person&#8217;s network is sufficiently revealing.  I suspected this was always the case, as people tend to be drawn to those with similar interests, alignments and preferences.  Except now a group of scientists have confirmed this with good science, and demonstrated the math for extraction&#8230; and my fear, written a howto guide for potential exploitation.  What&#8217;s <del>even better</del> worse is to have the largest sample to draw from, in the form of Facebook.  Or like CarrierIQ.  Or dozens of other examples where this massive collection is taking place.</p>
<p>In this modern era of GPS-enabled, self-publishing and continously monitored life, it will be a struggle to find the balance between leveraging that derived information for good &#8212; such as urban planning and traffic management &#8212; vs. the bad, and become a revenue profile for marketeers. Please, no more ads.  My daily life shouldn&#8217;t be simply another remote beacon for measurement.   Despite my own efforts, my friends have sold me out unwittingly.  The old adage is true:  no man is an island.  I am no exception.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/the-privacy-fiction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Attracting Talent</title>
		<link>http://feyn.com/attracting-talent/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=attracting-talent</link>
		<comments>http://feyn.com/attracting-talent/#comments</comments>
		<pubDate>Thu, 14 Jun 2012 15:04:02 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=712</guid>
		<description><![CDATA[It&#8217;s extremely difficult to find talented software engineers &#8212; especially in today&#8217;s market. I have my own theories as to why that is, ranging from the fact that software engineering is still a relatively young profession, all the way to deeper philosophies about how competent people are at their jobs, in general. What&#8217;s more, companies [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s extremely difficult to find talented software engineers &#8212; especially in today&#8217;s market. I have my own theories as to why that is, ranging from the fact that software engineering is still a relatively young profession, all the way to deeper philosophies about how competent people are at their jobs, in general. What&#8217;s more, companies that lack talented engineers typically have a very difficult time finding talented engineers, and this is not coincidental.</p>
<p><span id="more-712"></span>The problem is that you don&#8217;t find talented engineers &#8212; they find you, which means your effort should be primarily spent on creating a culture that attracts them. Am I really suggesting there might be a better approach than farming your hiring out to recruiting firms who cold-call and spam their way to profitability, who themselves haven&#8217;t the first clue as to how to find talented engineers? Probably not, if you&#8217;re looking to impress your CTO, who&#8217;s asked you to add 15 more engineers before next quarter. However, if you&#8217;re looking to hire top-tier engineers, don&#8217;t call up your local account managers and hiring executives who will just scour your area for the Usual Suspects.</p>
<p>Work on changing your culture, introducing them to things like Test Driven Development, Domain Driven Design, Pair Programming, S.O.L.I.D. Principles of Object Oriented Programming, the list goes on. Work on finding someone who wants to bring those things to your organization, and convince them that you&#8217;re committed to doing it. Finally &#8212; and this is key &#8212; hire a team to help. You&#8217;ll find talent is attracted to talent.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/attracting-talent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s Called &#8220;Service&#8221; For A Reason</title>
		<link>http://feyn.com/its-called-service-for-a-reason/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=its-called-service-for-a-reason</link>
		<comments>http://feyn.com/its-called-service-for-a-reason/#comments</comments>
		<pubDate>Thu, 14 Jun 2012 13:58:59 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=400</guid>
		<description><![CDATA[Well, we&#8217;re all writing services now.  This is a service, that is a service.  We need a persistence service, a web service, service generating service, and services that service other services. Please stop. Put the word, &#8220;service&#8221; down and think about what you&#8217;re doing and saying. Everything you&#8217;re writing ain&#8217;t a service. &#8220;Service&#8221; ain&#8217;t the [...]]]></description>
				<content:encoded><![CDATA[<p>Well, we&#8217;re all writing services now.  This is a service, that is a service.  We need a persistence service, a web service, service generating service, and services that service other services. Please stop. Put the word, &#8220;service&#8221; down and think about what you&#8217;re doing and saying. Everything you&#8217;re writing ain&#8217;t a service. &#8220;Service&#8221; ain&#8217;t the new term we&#8217;re using for &#8220;code&#8221;. You&#8217;re not always writing a &#8220;service&#8221;, sometimes you&#8217;re just writing a class. When you&#8217;re writing a service, it&#8217;s got a higher purpose and meaning that your average piece of software. It&#8217;s got to service something, or someone.</p>
<p><span id="more-400"></span>The key to the word &#8220;service&#8221; is that is provides something to someone else. If you&#8217;re the only consumer of your service, it ain&#8217;t a service, it&#8217;s probably just a transport protocol or a marshalling strategy. A &#8220;service&#8221; is just like a real life service you would get from restaurant or a clothing store. It&#8217;s something that you need, and if it&#8217;s good something that you&#8217;ll want to use again. Services should be friendly to the people who are using them, so that they want to keep using them. They should be designed with the consumer in mind, and provide a pleasant experience. If you service does the equivalent of spilling coffee on your lap or ignoring you while you have a handful of clothes and can&#8217;t find the dressing room, then it&#8217;s not a very good service.</p>
<p>The problem here is that the design of services is really a usability concern. The designer is a developer, and the consumer is a developer. It&#8217;s the first bit that&#8217;s a problem. Developers often could give a damn about usability, and are usually only myopically focused on the task directly in front of them. We figured out years ago that we shouldn&#8217;t let developers design user interfaces, but now we&#8217;re giving them free reign to design services for other people. If you want to design a good service, do the same thing you would if you were designing a good user interface: Figure out what the customer wants, give them what they need, and then watch how they use it to make sure you did your job well. Anything else is just you coding in a vacuum writing a service no one wants to use, or hates using.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/its-called-service-for-a-reason/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Password Is Not Protection</title>
		<link>http://feyn.com/password-is-not-protection/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=password-is-not-protection</link>
		<comments>http://feyn.com/password-is-not-protection/#comments</comments>
		<pubDate>Tue, 12 Jun 2012 16:27:52 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=664</guid>
		<description><![CDATA[The security wires are still buzzing about the LinkedIn compromise. Again, as I&#8217;ve stated recently, a good post-mortem takes time and it&#8217;s best to ignore all the hype and speculation until most &#8212; if not all &#8212; of the facts can be established. What is surprising, is how much coverage there is about LinkedIn&#8217;s problem, as compared [...]]]></description>
				<content:encoded><![CDATA[<p>The security wires are still buzzing about the <a href="http://goo.gl/kGbXk" target="_blank">LinkedIn compromise</a>. Again, as I&#8217;ve stated recently, a good post-mortem takes time and it&#8217;s best to ignore all the hype and speculation until most &#8212; if not all &#8212; of the facts can be established. What is surprising, is how much coverage there is about LinkedIn&#8217;s problem, as compared to the near-complete silence on Verisign&#8217;s management not being made aware of breaches dating back to 2010 that only came to light in 2012. That news is scary. This story is just irritating because of the number of opportunities for LinkedIn to have performed this upgrade without the hand being forced.</p>
<p><span id="more-664"></span></p>
<p>All this fuss over passwords, because people have this misconception that passwords equate to security. For the record, NIST acknowledged in 2004 that SHA-1 is deprecated for various <em>insecure</em> reasons and will be retired as a standard by 2010. Two years after the fact, a leading technology company with over 150-million users is using this encryption algorithm to store passwords. Quite the mind boggling and mind numbing technology sin. Password is not security; it&#8217;s not even a security blanket. It&#8217;s authentication and hardly adequate in the modern, hostile web. LinkedIn should&#8217;ve known better.</p>
<p>Besides, the focus should not be on the fact that 6-million hashes are in the open &#8212; a meager 4% of the user base (although I believe the breach is likely much worse) &#8212; but what is happening with this very large set of information. Regardless of the objectives of the the initial breach, the [hacking] business intelligence that may now be derived from heuristic analysis is highly productive, in driving refinements for future brute force attacks and/or gauging patterns and frequencies, and in general, increasing future success against the general public. Not to mention, combined with the saltless SHA-1 decision blunder, the chance to create rainbow books and exercise massively-distributed computations. Good day for the Black Hats; bad day for the rest of us. Anyone who thinks it&#8217;s not a big deal because logins weren&#8217;t included is missing the big picture.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/password-is-not-protection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Just Buy More Hardware</title>
		<link>http://feyn.com/dont-just-buy-more-hardware/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dont-just-buy-more-hardware</link>
		<comments>http://feyn.com/dont-just-buy-more-hardware/#comments</comments>
		<pubDate>Tue, 12 Jun 2012 13:14:42 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=413</guid>
		<description><![CDATA[Hand me your credit card, you idiot. No, when things start running slowly don&#8217;t just blame the hardware. Yes, hardware can affect performance, but if you just did a release, and at the same time you started to see a spike in system resources without a spike in load, the problem is in your software. [...]]]></description>
				<content:encoded><![CDATA[<p>Hand me your credit card, you idiot. No, when things start running slowly don&#8217;t just blame the hardware. Yes, hardware can affect performance, but if you just did a release, and at the same time you started to see a spike in system resources without a spike in load, the problem is in your software. &#8220;But hardware is cheap! We can just buy more hardware!&#8221; or the more contemporary, &#8220;Cloud instances are cheap! We can just spin up more instances!&#8221;  You twit.</p>
<p><span id="more-413"></span></p>
<p>Let&#8217;s go back to the basic fundamentals of business: For a business to succeed, it needs to make more money that it spends. The difference between how much you spend and how much you make is called &#8220;profit&#8221;. Businesses want to maximize profit. When your idiot little brain decided that a 3 deep nested loop that results in hundreds of SQL queries being issues per HTTP request was a good thing, and then you decided the solution was to spend more money to keep it running, you ate into profits. Why? Because you&#8217;re too lazy to learn how to use a RDBMS properly. There&#8217;s a manual, read it. There are ways to avoid making hundreds of SQL queries &#8212; you wouldn&#8217;t believe how many ways! It&#8217;s almost like database manufacturers wanted to make sure you didn&#8217;t *have* to make hundreds of queries to build up the data set you were trying to get.</p>
<p>Any old fool can write software that works. It&#8217;s a deterministic system &#8212; give it the proper inputs and it will give you the proper outputs &#8212; every time. However, it takes skill to write software that uses the hardware efficiently. Bear in mind that if you decide to stop designing your software so that it&#8217;s maintainable and extensible, you&#8217;re being a different type of idiot; but if you disregard any and all performance consequences and brutally molest system resources, you&#8217;re not just an idiot, but you&#8217;re also costing the business money. The good news is that now with cloud deployed applications we can directly correlate how much more money your bone-headed implementation is costing us. Personally, I think we should take it directly out of you paycheck, &#8217;cause after all, &#8220;Hardware is cheap&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/dont-just-buy-more-hardware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security Achilles&#8217; Heel</title>
		<link>http://feyn.com/security-achilles-heel/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=security-achilles-heel</link>
		<comments>http://feyn.com/security-achilles-heel/#comments</comments>
		<pubDate>Wed, 06 Jun 2012 16:05:02 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=601</guid>
		<description><![CDATA[All the software and audit and compliance in the world is useless, when a single person opens the door for the Big Bad Wolf to waltz in. Yes, code review is important. Absolutely, audit is essential. And without a question, process can save lives. None of that matters if the person entrusted with the key [...]]]></description>
				<content:encoded><![CDATA[<p>All the software and audit and compliance in the world is useless, when a single person opens the door for the Big Bad Wolf to waltz in. Yes, code review is important. Absolutely, audit is essential. And without a question, process can save lives. None of that matters if the person entrusted with the key is readily duped by conversation. Social Engineering, it&#8217;s a grand-daddy when it comes to security risks. Sadly, technology has yet to come up with the panacea for stupidity. Just look at what happened to <a href="http://goo.gl/hSNga" target="_blank">CloudFlare</a>.</p>
<p><span id="more-601"></span>Someone convinced an AT&amp;T technician to re-route the subscriber&#8217;s cell phone to a fraudulent voicemail box. No code hacking, no PBX re-programming. No physical breach of wires. The heavy lifting in this breach involved conversation. The first of four dominoes fell, as seen on this <a href="http://goo.gl/viD6o" target="_blank">timeline</a>, when un-authorized access was granted, by an employee, to some untrusted outsider. Sure, there are clearly flaws in Google&#8217;s 2FA, they&#8217;ve admitted that. And CloudFlare&#8217;s auto-cc of administrative Email containing sensitive information, that&#8217;s just bad practice all around. However, those attack vectors weren&#8217;t so handily exploited, without the initial ability to redirect the trusted channel of communication.</p>
<p>There are plenty of technical discussions else where, about code and process and race conditions <em>ad nauseam</em>&#8230; but the bottom line is this, the weakest link is &#8220;people&#8221; and exploiting people&#8217;s behavior has been security&#8217;s greatest foe since walls were made of stones. More technical solutions won&#8217;t fix this. In fact, increased complexity and the ensuing decrease in usefulness, will only create additional opportunities for human error. Awareness, instinctive or trained comprehension, is likely the only way to counter being talked into unlocking the door.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/security-achilles-heel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paying Your Dues On Maintenance</title>
		<link>http://feyn.com/paying-your-dues-on-maintenance/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=paying-your-dues-on-maintenance</link>
		<comments>http://feyn.com/paying-your-dues-on-maintenance/#comments</comments>
		<pubDate>Wed, 06 Jun 2012 03:14:46 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=569</guid>
		<description><![CDATA[Maintenance sucks. I don&#8217;t care who you are, or what you&#8217;re into, maintaining legacy code sucks. You spend your days getting asked to fix other people&#8217;s bugs in a labyrinth of crappy code that was clearly written by angry monkeys who could inexplicably hurl feces at a keyboard in a manner that would yield compiling [...]]]></description>
				<content:encoded><![CDATA[<p>Maintenance sucks.  I don&#8217;t care who you are, or what you&#8217;re into, maintaining legacy code sucks.  You spend your days getting asked to fix other people&#8217;s bugs in a labyrinth of crappy code that was clearly written by angry monkeys who could inexplicably hurl feces at a keyboard in a manner that would yield compiling code.  In fact, it&#8217;s not called &#8220;maintenance&#8221; if the code is good &#8212; that&#8217;s just normal development.  If you&#8217;re on maintenance, then you have done something very wrong at some point in your life &#8212; or you&#8217;re just starting out.  Much like anyone new to anything, you&#8217;ve got to pay your dues.  In software development, that&#8217;s working maintenance.</p>
<p><span id="more-569"></span></p>
<p>In many ways it&#8217;s a form of hazing: First, you are met with constant negativity in that everything you are asked to do is in terms of something that is broken, which you are now responsible for.  Second, when you are asked to fix something, you are expected to immediately come up with a time frame for when it will be fixed, which is completely unknowable.  Third, you will encounter every type of obstacle software development can throw at you, to fix even the simplest things (a text change could require learning how to build and deploy a 10 year old application!)  And finally, upon the successful fixing of the bug, you are not greeted warmly with praise for doing the impossible, but instead are nonchalantly handed the next set of bugs to fix.</p>
<p>Maintenance is a rite of passage all engineers must pass through at some point in their careers.  In many ways, it&#8217;s a very good thing.  You will suffer through the agony of wading through gobs of poorly factored poop, which will help you appreciate clean code.  You will learn what it&#8217;s like to have absof*ckingly no clue how to go about solving a problem but have to solve it anyway &#8212; on a schedule.  Appreciating clean code, and learning to persevere, regardless of the obstacles and time pressures, are hallmarks of excellent engineers.  I know from at least one personal experience that <a href="http://feyn.com/author/john" title="john">great engineers can be born from the hell-fires of maintenance</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/paying-your-dues-on-maintenance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Train, Wrecking</title>
		<link>http://feyn.com/a-train-wrecking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-train-wrecking</link>
		<comments>http://feyn.com/a-train-wrecking/#comments</comments>
		<pubDate>Wed, 06 Jun 2012 00:22:07 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=586</guid>
		<description><![CDATA[You need a plan. You&#8217;ve just been told by your boss that the highly visible, habitually failing flagship project &#8211; yep, the one that&#8217;s a year behind schedule &#8211; just became your problem. &#8220;Don&#8217;t worry, you can only come out of this looking good,&#8221; you hear, among other things, like &#8220;hand-picked&#8221; and &#8220;Swat Team&#8221; &#8211; [...]]]></description>
				<content:encoded><![CDATA[<p>You need a plan. You&#8217;ve just been told by your boss that the highly visible, habitually failing flagship project &#8211; yep, the one that&#8217;s a <em>year</em> behind schedule &#8211; just became your problem. &#8220;Don&#8217;t worry, you can only come out of this looking good,&#8221; you hear, among other things, like &#8220;hand-picked&#8221; and &#8220;Swat Team&#8221; &#8211; each one making you cringe more than the last. You&#8217;ve been here before, and while the stakes may be different, one thing is certain &#8211; You. Are. Fucked.</p>
<p><span id="more-586"></span>You look around the room at engineers you&#8217;ve never worked with before. You wonder if you&#8217;re the only one who realizes what&#8217;s really happening, and if you are, how you&#8217;ll tell them that they&#8217;ve just been suckered into long, stressful nights and weekends as far as the eye can see &#8211; slaves to an immature product team that has yet to produce cogent requirements or decent story descriptions, and who have completely lost faith in engineers as a whole, if they ever had any to begin with. Don&#8217;t try to save the day &#8211; it won&#8217;t work. This is about survival, not foolish heroics that will ultimately lead to a credibility bankruptcy.</p>
<p>Still not convinced? Try this: you are 3, <em>maybe 4</em>, iterations away from hearing the same people who got you into this mess tell you that &#8220;they could build this product in 2 weeks&#8221; and that the team &#8220;isn&#8217;t moving fast enough&#8221;! By then, it won&#8217;t matter that for the first time in the history of the organization  a team is actually meeting their timelines and delivering on requirements, establishing a lasting relationship of credibility and respect with product, and demoing real functionality every Friday. All that will matter is that the unified, self-sustaining team you will have grown so fond of will be on the brink of becoming line workers. The control has already started shifting, and your team has a crucial decision to make: <a title="When You Stand" href="http://feyn.com/when-you-stand/">will you stand</a>, or will you fold?</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/a-train-wrecking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Three Ps [In A Pod]</title>
		<link>http://feyn.com/three-ps-in-a-pod/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=three-ps-in-a-pod</link>
		<comments>http://feyn.com/three-ps-in-a-pod/#comments</comments>
		<pubDate>Tue, 05 Jun 2012 13:06:56 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=510</guid>
		<description><![CDATA[Successful organizations thrive by their talents [people], and it&#8217;s mostly a losing battle because so many hiring decisions are simply&#8230; bad. Over the years, pundits and experts offer up many theories and philosophies on how to recruit, and then retain, superior personnel. It really comes down to just three things &#8212; Proficiency, Passion and Personality. [...]]]></description>
				<content:encoded><![CDATA[<p>Successful organizations thrive by their talents [people], and it&#8217;s mostly a losing battle because so many hiring decisions are simply&#8230; bad. Over the years, pundits and experts offer up many theories and philosophies on how to recruit, and then retain, superior personnel. It really comes down to just three things &#8212; Proficiency, Passion and Personality. That&#8217;s the secret. No more. No less. Interviews, tests and profiles are but the tools to establish how a candidate measure up under each areas.</p>
<p><span id="more-510"></span>Proficiency isn&#8217;t just technical know-how. It&#8217;s also about abilities to lead, the capacity to manage and the resourcefulness when solving problems. It&#8217;s all of that, and surprisingly, being proficient is not necessarily being successful in the past or having performed the [same] task already. It&#8217;s about the &#8220;Can Do.&#8221;</p>
<p>Passion comes after Proficiency, because despite the best of intentions, without the accompanying skill set, all the drive and desire won&#8217;t translate to accomplishment. However, without passion, it is impossible to work hard and more importantly, work smart. There must be a fire burning for the engines to run, to excel and to achieve. It is passion that will directly translate to enjoyment of the job.</p>
<p>Finally, Personality. This isn&#8217;t cubicle decorations or dress code or taste in music. It&#8217;s all of it and more. Individuals who are smart and passionate, but are toxic to the team helps no one. It doesn&#8217;t matter if it&#8217;s a superior, a peer or an underlining, ill-fiting pieces lead to incohesive team and worse, assured inefficiency. The last requirement for candidacy comes down to the very simple &#8212; playing well with others. And that, is all about the different personalities.</p>
<p>I&#8217;ve been formulating the 3 P&#8217;s for a while now. And with my current endeavors, I&#8217;ve the opportunity to see some regular occurences across different companies and interviewers. The right fit, across both side of the desk, will come down to a company and I matching our Ps.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/three-ps-in-a-pod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dream Job</title>
		<link>http://feyn.com/dream-job/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dream-job</link>
		<comments>http://feyn.com/dream-job/#comments</comments>
		<pubDate>Mon, 04 Jun 2012 16:58:53 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=460</guid>
		<description><![CDATA[The people who know me best are rarely shocked when I take a new job. After all, I work in a highly volatile industry, and it&#8217;s never long before something potentially more enticing than my current situation shows itself. I like to think this is true for everyone, with the possible difference being that I [...]]]></description>
				<content:encoded><![CDATA[<p>The people who know me best are rarely shocked when I take a new job. After all, I work in a highly volatile industry, and it&#8217;s never long before something potentially more enticing than my current situation shows itself. I like to think this is true for everyone, with the possible difference being that I tend to react to these new opportunities, whereas many people do not.</p>
<p><span id="more-460"></span></p>
<p>And why should they? Changing jobs sucks, almost as a rule. People get attached &#8211; it&#8217;s what we do. Whether it&#8217;s to another person, a pet, or a job &#8211; we get comfortable, and time passes. Before we know it, what was new is familiar, and what was current has become nostalgic. The seemingly simple act of leaving a company is a challenge unto itself. I&#8217;ve felt relieved after leaving bad companies. I&#8217;ve felt neutral when I left better companies that were sorry to see me go. I have never before felt bittersweet to leave a company I enjoyed working at.</p>
<p>I&#8217;m feeling that for the first time right now, and it&#8217;s teaching me two things: first, figure out your dream job, and second, find a good <em>reality</em> job. If dream jobs are the jobs you want, reality jobs are the jobs you get, and I got hired for a really great reality job 8 months ago. I&#8217;ve honestly had a blast, and it&#8217;s been very rewarding. It also helped position me to be able to accept my dream position as a software craftsman with ThoughtWorks. I&#8217;m grateful to be in such a privileged situation, and I&#8217;m very grateful to have had a reality job that helped make my dream job, itself, a reality.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/dream-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You&#8217;re Arrogant If They Say You Are</title>
		<link>http://feyn.com/youre-arrogant-if-they-say-you-are/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=youre-arrogant-if-they-say-you-are</link>
		<comments>http://feyn.com/youre-arrogant-if-they-say-you-are/#comments</comments>
		<pubDate>Mon, 04 Jun 2012 13:04:30 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=462</guid>
		<description><![CDATA[Shockingly, the word &#8220;arrogant&#8221; has haunted me my whole career &#8211; and really my whole life. I&#8217;ve looked up the definition of &#8220;arrogant&#8221; more times than I care to admit, trying to contrast it with &#8220;confidence&#8221; and &#8220;humility&#8221;. I&#8217;ve been told more than once that I needed to work on being &#8220;humble&#8221;, and have genuinely [...]]]></description>
				<content:encoded><![CDATA[<p>Shockingly, the word &#8220;arrogant&#8221; has haunted me my whole career &#8211; and really my whole life. I&#8217;ve looked up the definition of &#8220;arrogant&#8221; more times than I care to admit, trying to contrast it with &#8220;confidence&#8221; and &#8220;humility&#8221;. I&#8217;ve been told more than once that I needed to work on being &#8220;humble&#8221;, and have genuinely tried to be so. Tried and failed. In terms of personal soul searching, &#8220;arrogance&#8221; has occupied a disproportionate amount of my staring-at-the-ceiling-trying-to-fall-asleep time. I don&#8217;t want to be arrogant &#8211; I don&#8217;t like the very idea of it, and am ashamed and confused that I seem to attract the description with alarming frequency. Ironically, an aspect of arrogance is an abundance of unwarranted confidence, yet I have no confidence that I can conquer the label of arrogance.</p>
<p><span id="more-462"></span></p>
<p>In helping me plumb the depths of what could potentially be the character flaws that may have lead to my arrogance, my close friends are no help. They are made up of doctors, lawyers, successful business owners, wealth managers, physicists, architects, programmers, hackers, executives, ex-military personnel and athletes; and either they don&#8217;t find me arrogant, or are labeled as arrogant themselves. &#8220;You&#8217;re just extremely confident,&#8221; they say. If extreme confidence can be labeled as arrogance, then I don&#8217;t want the characteristic. But then how does one &#8220;tone down&#8221; confidence? The strategy that has worked best for me is to avoid conversation with people who don&#8217;t already know me, which has lead me to being perceived as socially awkward at best, and anti-social at worst. I often worry that this strategy of avoidance leads to the label of being too arrogant to talk to regular people. It seems I can&#8217;t win.</p>
<p>Faced with the empirical evidence of arrogant people finding me not to be arrogant, yet everyone else (forgive the hyperbolic paranoia) finding me to be so, I am forced into the conclusion that I fear is nothing more than a cop-out: Maybe being perceived as arrogant is entirely dependent on your audience? Perhaps in certain circles, you are considered having the appropriate level of confidence, while in others as having so much as to be labeled conceited or condescending. I would like for this to be true, as everything I have tried to be broadly accepted as non-arrogant has failed for so long on so many levels that it would alleviate the persistent guilt and self imposed shyness that has come to define my adulthood. I can only hope that my worst fear is not realized: that the contemplation of one&#8217;s own arrogance is the epitome of arrogance in and of itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/youre-arrogant-if-they-say-you-are/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>There Is No Spoon</title>
		<link>http://feyn.com/there-is-no-spoon/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=there-is-no-spoon</link>
		<comments>http://feyn.com/there-is-no-spoon/#comments</comments>
		<pubDate>Sat, 02 Jun 2012 19:17:17 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=506</guid>
		<description><![CDATA[The question is simple &#8212; do I trust the entity behind a particular website? The answer is less so, unfortunately. Misguided efforts at [micro]managing cookies, User Agent IDs and IP proxies betray the simple fact that I cannot hide from being myself. This was a slightly painful realization, once I had a glimpse behind the [...]]]></description>
				<content:encoded><![CDATA[<p>The question is simple &#8212; do I trust the entity behind a particular website? The answer is less so, unfortunately. Misguided efforts at [micro]managing cookies, User Agent IDs and IP proxies betray the simple fact that I cannot hide from being myself. This was a slightly painful realization, once I had a glimpse behind the curtains and saw that the Wizard is not only great and powerful, He is everywhere, and rightly so. In a world of constant vigilance, even the ones casting no shadows are as visible as the endless tweeting of teeth brushers.<br />
<span id="more-506"></span><br />
Common myths:</p>
<ol>
<li>Legislation will <del datetime="2012-06-02T17:25:02+00:00">solve</del> help the situation</li>
<li>Only the end points [user/web] has access to this information</li>
<li>Technology will remedy human behavior</li>
<li>There is a grand unifying umbrella for everything, for anything.</li>
</ol>
<p>People identify with specific &#8220;trust gaps&#8221;. By focusing attention on remedying just one/a few, the bigger picture is that the machinations of the web have always demanded the disclosure of information, in the name of sharing. The explosive growth has demonstrated the power in sharing, and I do not expect it to reverse.</p>
<p>It is still a good practice to be mindful, and to mitigate risks. However, resistance is futile, and welcome to my thoughts.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/there-is-no-spoon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QA As A Crutch</title>
		<link>http://feyn.com/qa-as-a-crutch/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qa-as-a-crutch</link>
		<comments>http://feyn.com/qa-as-a-crutch/#comments</comments>
		<pubDate>Thu, 31 May 2012 18:06:11 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Quality Assurance]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=406</guid>
		<description><![CDATA[Would quality be better if there were no Quality Assurance people? Let&#8217;s face it, most engineers abuse QA. They write a bunch of crap they&#8217;ve never tested, declare it&#8217;s done to much fanfare, and throw it over the wall to QA while they sit back knowing it&#8217;s going to take QA at least a day [...]]]></description>
				<content:encoded><![CDATA[<p>Would quality be better if there were no Quality Assurance people? Let&#8217;s face it, most engineers abuse QA. They write a bunch of crap they&#8217;ve never tested, declare it&#8217;s done to much fanfare, and throw it over the wall to QA while they sit back knowing it&#8217;s going to take QA at least a day or two to start writing up bugs &#8211; more than enough time to get in some solid games of foosball. Furthermore, once they have *said* they are done, the pressure is off of them, and on QA to find them, at which point the engineer can sit back and pick and choose what they feel like fixing under the guise of &#8220;triage&#8221;.</p>
<p><span id="more-406"></span>Whether this occurs or not is dependent entirely on how much the engineer cares about there being bugs in the system. Fact is, most engineers don&#8217;t really care, using the rationale that bugs are simply by-products of developing software, and that having a certain number of bugs should be acceptable. Furthermore, some bugs are minor, and should be de-prioritized in favor of higher priority bugs, so really there are some bugs that will never be fixed by virtue of responsible prioritization. This all sounds reasonable and defensible, doesn&#8217;t it? Heck, most people reading this would say, &#8220;Hey! That&#8217;s the process we use!&#8221; Yeah, it is &#8211; and your engineers are gaming the system.</p>
<p>The truth of the matter is that these types of engineers are typically lazy bastards and are unaffected by the presence of QA &#8212; they will do whatever they feel like, largely because they are allowed to get away with it. If you work with these types of engineers just figure out what they did to get such a sweet deal, and get career tips from them. They&#8217;re probably on a fast track to management. The engineers who benefit most from not having QA are those who are not lazy bastards. These are engineers who take pride in their work, and don&#8217;t want any bugs in their system, but who make honest mistakes. Without QA, these engineers get better as they develop the self discipline required to thoroughly test their work before declaring it done to anyone. In terms of bang for buck, you&#8217;re best off <a title="Train novices before hiring new people" href="http://feyn.com/train-novices-before-hiring-new-people/">keeping your novices away from QA</a> so that they learn how to produce quality code on their own.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/qa-as-a-crutch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Train Novices Before Hiring New People</title>
		<link>http://feyn.com/train-novices-before-hiring-new-people/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=train-novices-before-hiring-new-people</link>
		<comments>http://feyn.com/train-novices-before-hiring-new-people/#comments</comments>
		<pubDate>Tue, 29 May 2012 16:44:08 +0000</pubDate>
		<dc:creator>neil</dc:creator>
				<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://feyn.com/?p=389</guid>
		<description><![CDATA[When your boss comes demanding you scale your team, don&#8217;t immediately fire up all the recruiters you know and start sifting through resumes looking for the perfect hire. First, give some thought as to what you were just asked to do. You weren&#8217;t really asked to hire more people (that&#8217;s expensive and risky), you were [...]]]></description>
				<content:encoded><![CDATA[<p>When your boss comes demanding you scale your team, don&#8217;t immediately fire up all the recruiters you know and start sifting through resumes looking for the perfect hire. First, give some thought as to what you were just asked to do. You weren&#8217;t really asked to hire more people (that&#8217;s expensive and <a href="http://feyn.com/risky-employees">risky</a>), you were asked to boost productivity. The first place to look for more productivity is at your current team &#8211; especially at the novices. Most teams have some novice to average players who could use improvement, but we tend to ignore them assuming they can&#8217;t get better at what they do.</p>
<p><span id="more-389"></span></p>
<p>Novices fall into two categories: Those who can get better with training and those who can&#8217;t. Separate your novices into those 2 groups, and focus on training the ones who will get better by investing in them. We like to believe that everyone can get better at their job if given the opportunity, but that&#8217;s not true. Some people are novices not because they don&#8217;t yet have enough experience or knowledge, but because they&#8217;re lazy and/or not very smart. Don&#8217;t waste your time with them. You&#8217;ve got a business to run, and you need to separate the wheat from the chaff.</p>
<p>Once you&#8217;ve dealt with the politics involved in only investing in training some of your team, it&#8217;s up to you to personally oversee their training. Don&#8217;t just ship them off to some training center and hope the come back more productive. They&#8217;ll probably just take the week off as a pseudo vacation. Instead, roll up your sleeves, clear your calendar, sit next to them, and really train them. See how they do their job every day, and coach them on exactly and precisely what they need and where they need it. Taking a novice to proficiency may not alleviate the need to hire more staff entirely, but it may delay the necessity of it &#8211; not to mention saving you a bunch of money and headaches.</p>
]]></content:encoded>
			<wfw:commentRss>http://feyn.com/train-novices-before-hiring-new-people/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
