<?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>Enjoy Chaos &#187; technology</title>
	<atom:link href="http://blog.thiagoarrais.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thiagoarrais.com</link>
	<description>Thoughts, ideas and useless ranting about software development and technology</description>
	<lastBuildDate>Sat, 29 Aug 2009 16:38:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Hiding suckyness</title>
		<link>http://blog.thiagoarrais.com/2009/02/17/hiding-suckyness/</link>
		<comments>http://blog.thiagoarrais.com/2009/02/17/hiding-suckyness/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 16:25:25 +0000</pubDate>
		<dc:creator>thiago.arrais</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://blog.thiagoarrais.com/?p=6</guid>
		<description><![CDATA[Eric Sink says that Git is the C of version control tools in the sense that it &#8220;is fast, hard-to-learn and it allows the developer to do things that are probably a bad idea.&#8221; Simply put, it is not a tool you should give to an idiot. That doesn&#8217;t mean that you shouldn&#8217;t use it, [...]]]></description>
			<content:encoded><![CDATA[<p>Eric Sink says that <a href="http://www.ericsink.com/entries/git_index.html">Git is the C of version control tools</a> in the sense that it &#8220;is fast, hard-to-learn and it allows the developer to do things that are probably a bad idea.&#8221; Simply put, it is not a tool you should give to an idiot.</p>
<p>That doesn&#8217;t mean that <em>you</em> shouldn&#8217;t use it, it just means that you must be aware of the danger. Chainsaws are dangerous too, but there are times you do need one. You don&#8217;t handle it without the proper security measures. You may not even want to consider getting near a chainsaw, but instead resort to calling a professional when you need one.</p>
<p>But when it comes to version control tools we programmers <em>are</em> the professionals. There is no one else to call.</p>
<p>We shouldn&#8217;t be afraid to use the right tools for the job. This is analogous to the fear that people feel about dynamic languages. People think they are just too powerful and can be dangerous in the wrong hands. But it turns out that this isn&#8217;t really a valid point: almost <em>anything</em> can be dangerous in the wrong hands. The point is that you shouldn&#8217;t have idiots working with you. If you don&#8217;t trust your team to use a powerful tool because it would be too dangerous for them, you <em>shouldn&#8217;t</em> design a safer, more limited tool. You should get rid of the team itself. If your team is already able to shoot themselves in the foot with a handgun, you shouldn&#8217;t buy them a shotgun. You should find yourself another team.</p>
<p>Idiots always find a way to be idiots, even if you design all the safeguards that you can think of into their tools. This is just what they are. Our tools should be designed to make the awesomeness of awesome developers shine, not to hide the suckyness of the mediocre ones.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thiagoarrais.com/2009/02/17/hiding-suckyness/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BTUF</title>
		<link>http://blog.thiagoarrais.com/2007/03/09/btuf/</link>
		<comments>http://blog.thiagoarrais.com/2007/03/09/btuf/#comments</comments>
		<pubDate>Fri, 09 Mar 2007 20:41:37 +0000</pubDate>
		<dc:creator>thiago.arrais</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blog.thiagoarrais.com/?p=3</guid>
		<description><![CDATA[No, you don&#8217;t need to read the title again, you are not mistaken. It really is a T instead of a D (or R, depending on where you come from). BTUF is the acronym for Big Testing Up Front. BTUF is basically what happens when people try to write all conceivable tests before starting to [...]]]></description>
			<content:encoded><![CDATA[<p>No, you don&#8217;t need to read the title again, you are not mistaken. It really is  a T instead of a D (or R, depending on where you come from). BTUF is the acronym for Big <em>Testing</em> Up Front. BTUF is basically what happens when people try to write all conceivable tests before starting to code. With the rise of Test-Driven Development this is an obviously ascending waterfall practice.</p>
<p>Testing is also designing. When you write the tests before the production code in good TDD style, what you essentially do is to design how the code will look from the outside. Sometimes it may be hard to resist the temptation to design everything before writing a single line of code, specially for those used to waterfall thinking. For those who can&#8217;t help doing it, here is some news from yesterday&#8217;s paper: it doesn&#8217;t work. Even though everybody minimally informed has already heard it, this message never gets said enough.</p>
<p>It doesn&#8217;t work because designing is infinitely better and easier when we can have fast feedback. Software development can easily be a high feedback activity. Architects need to wait for the construction team to finish the piece and film writers sometimes need to wait years for the shooting to finish, but programmers can just compile their programs. Giving up this feedback on purpose is not the smartest thing to do. Writing all tests for a piece of code before starting the code itself is no different than drawing rectangles and arrows describing it in full detail before trying to make the whole think work. The risk of over-engineering is the same because the code isn&#8217;t there to scream in agony.</p>
<p>The key to avoid BTUF is writing the tests that you can come up with before writing the code to make them green, but making sure <em>not</em> to think too much. You can wait to start writing the code after all tests are in place, but you don&#8217;t <em>need</em> and neither <em>want</em> to.</p>
<p>TDD has shown us that design isn&#8217;t made only of diagrams. In fact, we are designing all the time we are developing software. TDD is only one of many design techniques: one that uses tests. It may be a better tool than arrows and rectangles in some situations, but is still just an approach for design. BTUF is, therefore, just an special case of <a href="http://c2.com/xp/BigDesignUpFront.html"><acronym title="Big Design Up Front">BDUF</acronym></a> where tests are used to determine the design completely before writing a single line of code.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thiagoarrais.com/2007/03/09/btuf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
