<?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>while coding &#187; software industry</title>
	<atom:link href="http://www.youell.com/matt/writing/?cat=12&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.youell.com/matt/writing</link>
	<description>simplify</description>
	<lastBuildDate>Wed, 31 Oct 2018 04:08:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A Fork in the Road</title>
		<link>http://www.youell.com/matt/writing/?p=763</link>
		<comments>http://www.youell.com/matt/writing/?p=763#comments</comments>
		<pubDate>Mon, 16 Aug 2010 03:50:44 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[problem solving]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=763</guid>
		<description><![CDATA[I got into an interesting conversation the other day with my pairing partner about the approach he and I wanted to take while trying to fix a bug. What followed was something of an existential conversation about software, complexity, and the role of the programmer in managing complexity.
We work with a small but quite tangled [...]]]></description>
			<content:encoded><![CDATA[<p>I got into an interesting conversation the other day with my pairing partner about the approach he and I wanted to take while trying to fix a bug. What followed was something of an existential conversation about software, complexity, and the role of the programmer in managing complexity.</p>
<p>We work with a small but quite tangled system. The system itself is only a few years old but contains many technologies and bears the scars of several smart but inexperienced people learning how to design as they went. I won&#8217;t articulate the details of the bug we were experiencing but I will say that it is something that recently appeared and was troublesome but non-critical.</p>
<p>The difference in our two points of view became apparently very quickly. My desired approach was to try to pin down the bug, deconstruct it to the point of understanding, and then apply a fix. My coworker&#8217;s approach was to make a well-educated guess about the cause of the bug and apply a refactoring to our codebase that would address the anticipated problem.</p>
<p>His reasoning was that our codebase was too complex to spend time trying to understand it in detail, and in the worst-case scenario we would still have completed a useful refactoring that improved the quality of our codebase. I found this a bit hopeless. Is software really so complex that we as programmers now have to act like doctors &#8211; diagnosticians &#8211; making reasoned guesses about the world around us? Is there no more engineering?</p>
<p>10 or 15 years ago I would have considered his approach ridiculous. Now I&#8217;m honestly not sure. Modern software systems contain so much abstraction and layering that it is really hard to judge the level of effort that will be involved in addressing any one problem.</p>
<p>So what option did we choose? We guessed and did the refactoring. I don&#8217;t think I would have agreed to that with just any pair partner, but this particular coworker is a very productive programmer. He had a clear path forward and a clear rationale.  And one thing you don&#8217;t do with a productive programmer is get in their way.</p>
<p>Did it work? No. I almost want to say &#8220;OF COURSE NOT!&#8221; but that would be unfair. It could very easily have worked. What did eventually work? A pair sitting down and tracing through the application stack with <a href="http://www.gnu.org/software/gdb/">gdb</a>. And even that has only located the approximate location of the error. We still haven&#8217;t solved the problem yet. But we&#8217;re much closer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=763</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Corollary to the Joel Test</title>
		<link>http://www.youell.com/matt/writing/?p=535</link>
		<comments>http://www.youell.com/matt/writing/?p=535#comments</comments>
		<pubDate>Thu, 10 Sep 2009 20:57:03 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=535</guid>
		<description><![CDATA[Everyone knows the Joel Test. I think it gets used mostly for whining about how one&#8217;s organization isn&#8217;t &#8220;doing it right&#8221;, but ostensibly it is a way to measure your software development capability. You could think of it as the CMM writ small. 
I&#8217;ve worked in quite a few shops over the years and I [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone knows the <a href="http://www.joelonsoftware.com/articles/fog0000000043.html">Joel Test</a>. I think it gets used mostly for whining about how one&#8217;s organization isn&#8217;t &#8220;doing it right&#8221;, but ostensibly it is a way to measure your software development capability. You could think of it as the <a href="http://en.wikipedia.org/wiki/Capability_Maturity_Model">CMM</a> writ small. </p>
<p>I&#8217;ve worked in quite a few shops over the years and I doubt any of them &#8211; including the mega corps &#8211; have scored higher than a 7. This leads me to suspect that damned few organizations actually score 11 or better, which Joel considers the minimum acceptable score. </p>
<p>Joel&#8217;s high standards aside, the strength of the Joel Test isn&#8217;t in the questions, it&#8217;s in the areas the questions cover. With 12 quick questions you can get a rough idea of how an outsider would view your competence in many areas of software development. Very handy.</p>
<p>The downside of the Joel Test &#8211; and any metric of anything, ever &#8211; is that over time people align themselves to the metric, instead of the <em>spirit of the metric</em>. To put it another way, the Joel Test has some leaks.</p>
<p>Here&#8217;s my corollary to the Joel Test. Just like the original, each is a simple yes/no question. The difference is that for each &#8220;yes&#8221; on my list, you subtract one from your Joel Score. </p>
<blockquote>
<ol>
<li>Do you use more than one kind of version control system?</li>
<li>Is there anyone on your team who can&#8217;t build in one step?</li>
<li>Are specs developed without programmer input?</li>
<li>Do you write new code the day before a deadline?</li>
<li>Does your team regularly work more than 40 hour weeks?</li>
</ol>
</blockquote>
<p>How did you do? Did you go negative? I hope not, but I bet a lot of shops would.</p>
<p>Here&#8217;s my explanation for each item:</p>
<h4>1. Do you use more than one kind of version control system?</h4>
<p>Do you have several older projects in cvs but everything new is in Git? Why? Don&#8217;t get me wrong &#8211; there could be a damned good reason that is tied directly to your company&#8217;s bottom line. But I kind of doubt it. </p>
<p>Certainly your team is full of smart people that can manage more than one vcs. That isn&#8217;t the point. The point is that it is hard to have a unified approach to problems that <strong>everyone</strong> on the team uses when you&#8217;re all using different tools. This also creates a <a href="http://en.wikipedia.org/wiki/Bus_factor">bus factor</a> problem when Bob &#8211; the main dev on your legacy Zapruder project &#8211; goes on vacation. After all, he&#8217;s the last one on the team that uses VSS regularly and no one can figure out what the hell brand of crack he was smoking before he left. And those Zapruder people are getting pissed!</p>
<h4>2. Is there anyone on your team who can&#8217;t build in one step?</h4>
<p>This goes along with the idea of everyone using the same tools. Can everyone deploy the latest rev of the Zapruder project to the dev server with one click? Including off-site developers? Your team in India? That one guy in Fresno who works remotely? Your graphic designer who wants to update some templates and see the results?</p>
<h4>3. Are specs developed without programmer input?</h4>
<p>When you leave a programmer out of the specification process, you get airbags on guard rails.</p>
<h4>4. Do you write new code the day before a deadline?</h4>
<p>I maintain that at least 80% of deadlines are macho bullshit, usually generated upstream from the software development process. Even so, deadlines happen. What you don&#8217;t want to find yourself doing is writing code for new features the day before a deadline. That&#8217;s just not responsible development. Notice how I emphasize the word &#8220;<strong>new</strong>&#8220;. Certainly if you find a bug during your final testing, you&#8217;re going to fix it. Duh. But if you&#8217;re still cranking out features the day before a deadline, how in the hell are you going to test what you&#8217;ve written? The honest answer is that you&#8217;re not. Not in any meaningful way. You&#8217;re going to cross your fingers and hope. </p>
<h4>5. Does your team regularly work more than 40 hour weeks?</h4>
<p>This one is straight out of the Agile playbook and revolves around <a href="http://blog.hasmanythrough.com/2009/9/3/circle-of-death">technical debt</a>. It&#8217;s also a responsibility thing. People can only do so much work in a given amount of time. That&#8217;s just a fact of life, despite what the stereotypical programmer &#8220;caffeine == code&#8221; culture says. (More macho bullshit.) There will always be special times when more work is required, but those should be exceedingly rare.</p>
<p>These questions only scratch the surface, but hopefully they plug a few leaks. (How&#8217;s that for a mixed metaphor?)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=535</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What I Did</title>
		<link>http://www.youell.com/matt/writing/?p=476</link>
		<comments>http://www.youell.com/matt/writing/?p=476#comments</comments>
		<pubDate>Fri, 31 Jul 2009 18:46:42 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[reading]]></category>
		<category><![CDATA[software industry]]></category>
		<category><![CDATA[success]]></category>
		<category><![CDATA[weird]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=476</guid>
		<description><![CDATA[Note: This post is the conclusion of What Would You Do?
So there I was, riding the crest of the bubble, with dreams of startups dancing in my head, when a private list of angel investors fell into my lap. What did I do?
I didn&#8217;t have a lot of ethical options. The biggest quasi-ethical play I [...]]]></description>
			<content:encoded><![CDATA[<p>Note: This post is the conclusion of <a href="http://www.youell.com/matt/writing/?p=467">What Would You Do</a>?</p>
<p>So there I was, riding the crest of the bubble, with dreams of startups dancing in my head, when a private list of angel investors fell into my lap. What did I do?</p>
<p>I didn&#8217;t have a lot of ethical options. The biggest quasi-ethical play I could have made would have been to cold-call these people and solicit them for investments. Investments in what, I didn&#8217;t know. I had nothing concrete to invest in. I wasn&#8217;t sure what I wanted to do and had no partners. In short, I had nothing to offer and was months if not years away from even thinking about funding of any kind. </p>
<p>There are other people in this world who can just fire up the bullshit machine and start spewing until dollars start flowing. They work out the details later. I get the sense that many dotcoms were started that way, in fact. For better or worse, that just isn&#8217;t my style. Even if that was my style, that list wasn&#8217;t mine to use. What felt very exhilarating at first just seemed depressing after a few moments of thought. Yes, I had found a valuable hidden gem, but it wasn&#8217;t mine to keep.</p>
<p>So what did I do? I did exactly what <a href="http://twitter.com/AdamD">@AdamD</a> said in his comment on my previous post: I sent the author an email telling him about the problem. I explained how I found it and what he should do to fix it. I almost didn&#8217;t send that email though&#8230; I was worried that the author might claim that I had hacked his site or trespassed in some way. That isn&#8217;t as far fetched as you might think: I hear that eBay will claim <a href="http://ilt.eff.org/index.php/Trespass_to_Chattels#Scraping_Websites">a form of trespass</a> if you scrape their website for data instead of using their API. And while legal matters are pretty murky on the Internet today, they were far murkier 9 years ago. So I waited for a response, unsure of what &#8211; if anything &#8211; would come back.</p>
<p>A few days later I got a reply from the author, who was happy I told him about the problem, but he wasn&#8217;t nearly as worried about it as I thought he might be. After all, having an angel list isn&#8217;t nearly as valuable as having <em>actual relationships</em> with those angels.</p>
<p>As a thank-you he sent me a t-shirt from his company which I wore often while playing hockey for many years after that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=476</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What Would You Do?</title>
		<link>http://www.youell.com/matt/writing/?p=467</link>
		<comments>http://www.youell.com/matt/writing/?p=467#comments</comments>
		<pubDate>Wed, 29 Jul 2009 18:26:56 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[reading]]></category>
		<category><![CDATA[software industry]]></category>
		<category><![CDATA[success]]></category>
		<category><![CDATA[weird]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=467</guid>
		<description><![CDATA[Back in 2000, about the time the dotcom bubble was cresting, I was working for a web development shop in Sacramento. I had a stressful and confusing job, but I had a decent paycheck and a fancy title on my business cards so I was happy for a while. Eventually the stress got to me [...]]]></description>
			<content:encoded><![CDATA[<p>Back in 2000, about the time the dotcom bubble was cresting, I was working for a web development shop in Sacramento. I had a stressful and confusing job, but I had a decent paycheck and a fancy title on my business cards so I was happy for a while. Eventually the stress got to me and I quit. Unsure of what to do, I looked at my bank balance and decided I could take a month off to decompress before looking for another job.</p>
<p>That was one of the best decisions I&#8217;ve ever made. I spent a month playing roller hockey and shooting hoops in the breezy Northern California fall. When I wasn&#8217;t doing that I was plotting my next move, which I thought might be a startup. </p>
<p>During one of my frequent visits to the bookstore I found a book by a well known Silicon Valley marketing guru slash venture capitalist. This was one of those business books that is light on details but somehow manages to inspire and stimulate through anecdote and analogy. I enjoyed it quite a bit and read it quickly. </p>
<p>At the end of each chapter the book had exercises for the reader. One of the exercises was to do research on people by using the internet. The author suggested starting off by researching him. So that&#8217;s exactly what I did. </p>
<p>After a few minutes of &#8220;googling my yahoo&#8221; I discovered an oddball, partially completed area of the author&#8217;s website. The full url was kind of strange, as if the page was buried in an app, but the page I was seeing clearly wasn&#8217;t part of an app. If you build web apps long enough this kind of goofiness starts to catch your eye. Feeling a little nosy, I altered the url a bit to try to figure out what kind of app was supposed to be there. That&#8217;s when I found an ugly little page with only a few links. This was clearly not part of the main site. It looked to be part of an oddball personal organizer app which had been shoehorned into the website. The kind of thing that you don&#8217;t expect to see because you&#8217;re not supposed to see it without a password. Except there was no password! This was wide open to the world, but only if you knew exactly where to look. I am not a hacker. I just played with the URL a bit. (Also: I&#8217;m not a player. I just crush a lot.)</p>
<p>One of the links on this page said &#8220;Angels list&#8221;. </p>
<p>I believe &#8220;HOLY SHIT!&#8221; was the precise phrase that came out of my mouth. You know I clicked that link, right? And sure enough, there was a big old list of names and phone numbers. I had stumbled onto the Rolodex of a well-connected VC during the Bubble. That does not happen every day.</p>
<p>So what did I do? Well, I&#8217;ll tell you in my next post. In the meantime, let me ask you: What would you have done?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=467</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Even The Awesome Clients Suck</title>
		<link>http://www.youell.com/matt/writing/?p=396</link>
		<comments>http://www.youell.com/matt/writing/?p=396#comments</comments>
		<pubDate>Thu, 28 May 2009 10:21:24 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[rants]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=396</guid>
		<description><![CDATA[I know a few developers who want to go out on their own and start their own business. Once or twice I&#8217;ve been asked for advice. My first piece of advice would be to ask someone who is actually good at business!
Seriously, other than &#8220;don&#8217;t do it!&#8221;, I have very little advice. I&#8217;m still knee-deep [...]]]></description>
			<content:encoded><![CDATA[<p>I know a few developers who want to go out on their own and start their own business. Once or twice I&#8217;ve been asked for advice. My first piece of advice would be to ask someone who is actually good at business!</p>
<p>Seriously, other than &#8220;don&#8217;t do it!&#8221;, I have very little advice. I&#8217;m still knee-deep in painful lessons. Talk to me in a few years. Maybe.</p>
<p>I <strong>do</strong> have something to share with you today though. This video describes behavior that EVERY SINGLE CLIENT will pull at some point in your relationship. I&#8217;ve personally had every conversation in this video. If you&#8217;ve never had to negotiate with clients before, this video is practically psychic training. Hell, you might even want to share this video with clients just to clue them in. Or weed them out. Enjoy!</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/R2a8TRSgzZY&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/R2a8TRSgzZY&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=396</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Speaking at OS Bridge</title>
		<link>http://www.youell.com/matt/writing/?p=390</link>
		<comments>http://www.youell.com/matt/writing/?p=390#comments</comments>
		<pubDate>Tue, 26 May 2009 10:57:19 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=390</guid>
		<description><![CDATA[Because I don&#8217;t have enough distractions or sources of stress in my life, I&#8217;ve signed up to help a colleague give a talk at OS Bridge in about a month, on June 17th. If you happen to be going to OS Bridge please swing by and say hi.
For a preview of my speaking style, check [...]]]></description>
			<content:encoded><![CDATA[<p>Because I don&#8217;t have enough distractions or sources of stress in my life, I&#8217;ve signed up to help a colleague <a href="http://opensourcebridge.org/sessions/25">give a talk</a> at OS Bridge in about a month, on June 17th. If you happen to be going to <a href="http://opensourcebridge.org">OS Bridge</a> please swing by and say hi.</p>
<p>For a preview of my speaking style, check out this clip of Tim Calhoun:</p>
<p><object width="512" height="296"><param name="movie" value="http://www.hulu.com/embed/aRE02BaOgGv33E9AWuPF1w"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.hulu.com/embed/aRE02BaOgGv33E9AWuPF1w" type="application/x-shockwave-flash" allowFullScreen="true"  width="512" height="296"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=390</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Secret</title>
		<link>http://www.youell.com/matt/writing/?p=314</link>
		<comments>http://www.youell.com/matt/writing/?p=314#comments</comments>
		<pubDate>Sat, 25 Apr 2009 04:05:38 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[essays]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software industry]]></category>
		<category><![CDATA[success]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=314</guid>
		<description><![CDATA[I have an amazing, incredible, mind-altering secret of incalculable value to share with you. This is a little tidbit they didn&#8217;t teach you in your CS, SE, or PM classes in college. Once you are clear about this one thing your software &#8211; and your life &#8211; will change FOREVER. I promise.
So. Would you like [...]]]></description>
			<content:encoded><![CDATA[<p>I have an amazing, incredible, mind-altering secret of incalculable value to share with you. This is a little tidbit they didn&#8217;t teach you in your CS, SE, or PM classes in college. Once you are clear about this one thing your software &#8211; and your life &#8211; will change FOREVER. I promise.</p>
<p>So. Would you like to know the single most important thing there is to know about developing software? </p>
<p>Are you ready? </p>
<p>Can you handle it??? Here it is, BAM!!!: </p>
<blockquote><p>Manage Expectations</p></blockquote>
<p>[Matt drops mic and walks off the stage.]</p>
<p>Um&#8230; that&#8217;s it. That is the whole thing, right there.</p>
<p>If you&#8217;re disappointed right now it is probably because I didn&#8217;t manage your expectations very well.</p>
<p>It&#8217;s true though. Managing expectations is more important in software than gathering requirements, analyzing problems, writing gleaming code, or shipping a high quality piece of software out the door. Those are all very important things. They just aren&#8217;t THE most important thing. </p>
<p>For years I&#8217;ve said that given the right circumstances I could succeed as a programmer without ever writing a single line of code, just by managing expectations. A couple of years ago I saw a programmer prove this, albeit in a rather unfortunate way. This guy was on the job for three months and hadn&#8217;t written a single line of code. And then he got fired. But he wasn&#8217;t fired for his code. He was fired due to office politics and teamwork problems. In fact, it was only discovered that he hadn&#8217;t written any code the day after he left! The best part is that before he was fired, <strong>he was being considered for a promotion to team lead!!!</strong></p>
<p>Did you see the video making the rounds last week about Susan Boyle, the frumpy 47 year old lady that blew away Simon Cowell with her singing? If you haven&#8217;t seen the video, <a href="http://www.youtube.com/watch?v=9lp0IWv8QZY">Go take a look</a>.  (Ordinarily I would embed the video but the fine folks at Youtube and/or BBC have disabled embedding on this one.) </p>
<p>Yes, Susan sings well. Hardly the point though. The real point is that the producers are smart! They have totally and completely <em>managed expectations</em>. Think about the entire set up: The first thing you see is a middle aged frump shoving a snack into her mouth. Then she talks and every word is in a charming but distracting brrrrrogue. And then mix in some well-timed editing: Simon&#8217;s unamused reaction when she walks up. The extreme-eye-rolling girl in the audience. Raised eyebrows everywhere. Finally, toss on some ham from the lady herself and you have a perfect recipe for a managed expectation. No one is going to watch all of those social cues and genuinely expect the lady to be able to sing a note. So when she can sing and <em>sing well</em>, POW, they got you. TV producers FTW.</p>
<p>You may think all I am describing is manipulation. That is not the case. Managing expectations is about empathy as much as it is about control. If you promise a feature in a new release of software and it isn&#8217;t there, that is going to be very disappointing for your stakeholders. And if you promise to ship a new version in a month and it takes you six months, that might put your stakeholders out of business if the project is critical enough. On the other hand, if you promise something in six months and it takes you four, you&#8217;ve got a couple of months to catch any problems you may have missed and you can ship early.</p>
<p>It is far, far better to manage expectations &#8211; including your own &#8211; and produce average results, than it is to try to produce outstanding results without managing anyone&#8217;s expectations. And many times &#8211; when you manage expectations well &#8211; your &#8220;average results&#8221; turn out to be quite above average.<br />
<center><br />
<div id="attachment_348" class="wp-caption center" style="width: 410px"><a href="http://www.flickr.com/photos/sea-turtle/2861575686/"><img src="http://www.youell.com/matt/writing/wp-content/uploads/2009/04/expectations.jpg" alt="Photo courtesy of Sea Turtle" title="expectations" width="400" height="320" class="size-full wp-image-348" /></a><p class="wp-caption-text">Photo courtesy of Sea Turtle</p></div></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=314</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Kung Fu is the Best</title>
		<link>http://www.youell.com/matt/writing/?p=166</link>
		<comments>http://www.youell.com/matt/writing/?p=166#comments</comments>
		<pubDate>Wed, 04 Feb 2009 22:52:38 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[essays]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=166</guid>
		<description><![CDATA[I don&#8217;t know if it is a phase I&#8217;m going through or if I&#8217;m just starting to show my age, but I&#8217;m growing tired of meta. I spend so much time learning new things about programming that the amount of code I&#8217;m actually generating has deteriorated down to just what I&#8217;m doing for work. 
I [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know if it is a phase I&#8217;m going through or if I&#8217;m just starting to show my age, but I&#8217;m growing tired of meta. I spend so much time learning new things about programming that the amount of code I&#8217;m actually generating has deteriorated down to just what I&#8217;m doing for work. </p>
<p>I didn&#8217;t come to programming from Computer Science. I was an Electrical Engineering major who switched over to Physics and then fell into programming as a hobby which turned into a career. When I first started programming I had a very low opinion of it. I see a lot of EE types with this attitude: software is easy, and what <em>they</em> do is the hard stuff. Even back then I could see that the field of programming was a huge mental quagmire and I swore that I would not get caught up in it. Software is just there to make the hardware do stuff. My attitude was that the &#8220;how&#8221; doesn&#8217;t matter so much as long as it works.</p>
<p>Naturally that&#8217;s not what happened. I got swept up in the industry trends. I became addicted to learning what was new and cool. I was an object zealot and fanboy. Then STL. Scripting languages. ORM. Patterns. TDD. Refactoring. The past few years it&#8217;s been functional and logic programming. And that&#8217;s all great. I&#8217;ve learned a lot and had a lot of fun. But sometimes I wonder if I had just kept my head down and coded more instead of trending more, where I would be. I&#8217;m not talking about ignorance here, just pragmatism. There is a balance between the two and I wonder how far off the mark I am, or if I&#8217;m off the mark at all.</p>
<p>What I&#8217;m growing increasingly intolerant of is zealotry and opinionism. Both of which are almost inseparable from computer programmers. The worst is when I feel it from within. When someone shit-talks the tools I use to do my job, I get a little tight in the chest. And why? Why the hell should I? If I&#8217;m getting my work done the best way I know how and the people who use my software are happy, then what is the problem? The truth is, there isn&#8217;t a problem.</p>
<p>Michelangelo is said to have seen sculpting not as chiseling out an image from stone, but as releasing the sculpture that was already in the stone. That is such a powerful idea because it means that there are an unlimited number of sculptures in that stone. No two sculptors would set the same sculpture free. Programming is like that. Software is so very abstract, and the limitations on what we do are relatively few compared to other disciplines. Anything that works and makes sense to the programmer is probably not wrong in a fundamental sense. Certainly issues of specific application, maintenance and communication can be discussed, but what I&#8217;m getting at is that my methodology or toolset is not dumb just because it isn&#8217;t the one you use.</p>
<p>&#8220;The Tao that can be told is not the eternal Tao.&#8221; </p>
<p>That&#8217;s a nice way of saying that you do <strong>not</strong> have all of the answers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=166</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Finally, someone says it</title>
		<link>http://www.youell.com/matt/writing/?p=131</link>
		<comments>http://www.youell.com/matt/writing/?p=131#comments</comments>
		<pubDate>Thu, 22 Jan 2009 13:44:29 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[How I Code]]></category>
		<category><![CDATA[humane]]></category>
		<category><![CDATA[not good enough]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=131</guid>
		<description><![CDATA[Null references are a bad idea. When I try to say things like this, people blow me off. I suppose that is understandable. I&#8217;m just another opinionated programmer, never mind the bruises and scars. 
I think it&#8217;s a little harder to blow off C.A.R. Hoare. Thanks Tony!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://qconlondon.com/london-2009/presentation/Null+References:+The+Billion+Dollar+Mistake">Null references are a bad idea</a>. When I try to say things like this, people blow me off. I suppose that is understandable. I&#8217;m just another opinionated programmer, never mind the bruises and scars. </p>
<p>I think it&#8217;s a little harder to blow off <a href="http://en.wikipedia.org/wiki/C._A._R._Hoare">C.A.R. Hoare</a>. Thanks Tony!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=131</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hey Twitter, Please charge me $5 a month.</title>
		<link>http://www.youell.com/matt/writing/?p=61</link>
		<comments>http://www.youell.com/matt/writing/?p=61#comments</comments>
		<pubDate>Wed, 17 Dec 2008 11:24:15 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[culture]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=61</guid>
		<description><![CDATA[Dear Twitter,
Please charge me $5 a month.
At a local tech discussion here in Portland a couple of weeks ago, one of the attendees said that if Twitter started charging money, he&#8217;d move to identi.ca. His rationale was this: software is easy to change but hardware is hard to change.
That thought has stayed in my brain [...]]]></description>
			<content:encoded><![CDATA[<p>Dear Twitter,</p>
<p>Please charge me $5 a month.</p>
<p>At a <a href="http://siliconflorist.com/2008/12/04/portland-web-innovators-portland-tech-2008-in-a-word-community/">local tech discussion</a> here in Portland a couple of weeks ago, one of the attendees said that if Twitter started charging money, he&#8217;d move to <a href="http://identi.ca/">identi.ca</a>. His rationale was this: software is easy to change but hardware is hard to change.</p>
<p>That thought has stayed in my brain for two weeks now. Is software easy to change? No. Absolutely not. That is a flawed premise. If software were easier to change than hardware, Microsoft would have crapped out a long time ago. Software being hard to change is practically the backbone of the software industry. There are entire vertical markets whose existence is predicated upon the near-impossibility of changing software.</p>
<p>As a recent example of how hard it can be to change software, just look at <a href="http://getsatisfaction.com/iwantsandy/topics/a_fork_in_the_road_an_important_announcement_about_i_want_sandy">the people who got screwed</a> by the sudden closure of <a href="http://www.iwantsandy.com/">I Want Sandy</a> and <a href="http://www.stikkit.com/">Stikkit</a>.  And that was just a pair of websites that were free and hadn&#8217;t been around forever.</p>
<p>Certainly I can point to the series of social networking sites that I&#8217;ve used and abandoned with great ease over the years: Friendster, MySpace, Ryze, LinkedIn, and Facebook. I&#8217;m sure I&#8217;m forgetting one or two. But none of those were sites that I actually relied on. I probably invested the most time in MySpace (many years ago), but even after many, many years on that site there is nothing there that I can&#8217;t do without. If MySpace burned down tonight it wouldn&#8217;t phase me at all.</p>
<p>If Twitter burned down tonight, I&#8217;d go <em>nuts</em>.</p>
<p>Twitter has this network of people that I&#8217;m plugged into. Unlike other social networks, I get genuine value every day from Twitter. Sure, I could try to replicate that network on indenti.ca. But you know what I&#8217;d end up with? A network of only the alpha-geeks who bothered to switch over to identi.ca! Well that&#8217;s fine, but only to a point. I like alpha-geeks as much as the next alpha-geek. But those aren&#8217;t the only people I want to be connected to. And I sure as hell don&#8217;t want to have to straddle services like I already do with IM.</p>
<p>I&#8217;m afraid that if Twitter doesn&#8217;t figure out a <em>good</em> (read: non-evil) way to make money, that they&#8217;ll either experience the ultimate Fail Whale (run out of cash and close) or turn to the Dark Side (and ruin Twitter). Either way, I&#8217;d be stuck without this cool network of people.</p>
<p>So, <a href="http://twitter.com/">Twitter</a>, if you&#8217;re listening (and hopefully you&#8217;re too busy improving your service to be reading crap like this), please charge me $5 a month. Trust me on this. You don&#8217;t need to do any market research here. I am a user asking you to charge me. That is a sales person&#8217;s wet dream!</p>
<p>$5 is the limit though &#8211; you can&#8217;t get away with $10 a month. That would piss off too many people and then they really would leave for indenti.ca and parts unknown. And no, you can&#8217;t charge micropayments per tweet. If you charge me 2-cents per tweet, I&#8217;ll probably leave too. Pay-per-tweet is a stupid idea and I wish people would quit suggesting it. You don&#8217;t want to punish the people who create value on Twitter. A flat-fee is simple and fair.</p>
<p>Certainly let people have a free account if they want to receive Tweets. And let them DM their friends from their free account. Why not? That would be great. But please charge those of us who want to talk. Get some cash in your door before you run out of whatever fickle VC steam you&#8217;ve got and we lose you entirely. In exchange, as a paid subscriber I will receive no ads in my Twitter stream. (Or anywhere else!) And you&#8217;ll make twit-spam nearly impossible, since other users won&#8217;t be able to talk to me without my permission. You&#8217;ll effectively cut off the MLM and Get-Rich-Quick idiots who want to put me in their downline or have me put water in my gas tank.</p>
<p>Then you can start adding some more features to the cool system you&#8217;ve created.</p>
<p>Thanks for listening,</p>
<p><a href="http://twitter.com/built">@built</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=61</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
