<?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>scriptNode &#187; quirks</title>
	<atom:link href="http://scriptnode.com/tag/quirks/feed/" rel="self" type="application/rss+xml" />
	<link>http://scriptnode.com</link>
	<description>Tips and tricks for web developers.</description>
	<lastBuildDate>Tue, 01 Sep 2009 18:46:41 +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>5 Ways QA Ruin Developers&#8217; Lives</title>
		<link>http://scriptnode.com/article/5-ways-qa-ruin-developers-lives/</link>
		<comments>http://scriptnode.com/article/5-ways-qa-ruin-developers-lives/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 04:06:23 +0000</pubDate>
		<dc:creator>Matt Hackett</dc:creator>
				<category><![CDATA[Novice]]></category>
		<category><![CDATA[careers]]></category>
		<category><![CDATA[quirks]]></category>

		<guid isPermaLink="false">http://scriptnode.com/?p=106</guid>
		<description><![CDATA[

A Scholastic quality assurance employee


Quality Assurance people are important and valuable, to be sure, but they can also make developers&#8217; lives much more difficult. This is particularly bad because (like many roles in an organization), their end goal is to help the developers make better software, not stress them out.


Here are some of the common [...]]]></description>
			<content:encoded><![CDATA[<div class="after caption">
<a href="http://flickr.com/photos/photomatekitt/84560351/"><img alt="QA" src="/assets/img/qa.jpg"/></a><br />
<span>A Scholastic quality assurance employee</span>
</div>
<p>
<strong>Quality Assurance</strong> people are important and valuable, to be sure, but they can also make developers&#8217; lives <strong>much more difficult</strong>. This is particularly bad because (like many roles in an organization), their end goal is to <strong>help the developers make better software</strong>, not stress them out.
</p>
<p>
Here are some of the common ways <acronym title="Quality Assurance">QA</acronym> workers ruin developer&#8217;s lives and how these behaviors can be avoided:
</p>
<ol class="cls">
<li>
<h3>Misunderstanding the technology</h3>
<p>
I&#8217;m often shocked by what somebody on the team didn&#8217;t know about. <strong>Understanding when software is working properly and when it isn&#8217;t can sometimes require a deep understanding of the technologies involved in making the software</strong>&#8230; And sometimes you just need to know enough.
</p>
<p>
My favorite example of this is a bug I got about a year ago, in which the report was something along the lines of, &#8220;Page is dumping out plain markup, no CSS.&#8221; Sounds kind of like an <acronym title="Really Simple Syndication"><a href="/feed/">RSS</a></acronym> feed right? It was. This person had never heard of <acronym title="Really Simple Syndication">RSS</acronym>.
</p>
<h4>How to avoid this</h4>
<p>
I hate to say it, but sometimes people just need to be qualified for their jobs. A unique perspective on a product is sometimes great, even <strong>sought after</strong> (for example, during usability tests). Other times, people need to do research and read up on the projects they&#8217;re working on. Most projects have awful documentation, but if they have it at all, it will probably mention in there what something like <acronym title="Really Simple Syndication">RSS</acronym> is.
</p>
<p>
On the other hand, nobody can know everything about everything. Technology moves quickly (especially when dealing with the Internet), so it&#8217;s understandable to be behind in a given area. A better way to handle this issue might be to suggest that perhaps <strong>the page could provide more information about what was misunderstood</strong> so that if others come across the same page, they&#8217;d understand too.
</p>
</li>
<li>
<h3>Assuming the software is buggy</h3>
<p>
A friend told me about a bug he received recently. A <acronym title="Quality Assurance">QA</acronym> person had tried three different features in the software that were supposed to display images. None of them worked, so <strong>three different bugs were filed</strong>. Thing is&#8230; those three areas of the software worked fine. It was the image that was broken. This person just assumed the software was buggy.
</p>
<h4>How to avoid this</h4>
<p>
When something is not behaving as expected, <strong>all reasonable checks should be made before branching out and getting others involved.</strong> Sometimes it&#8217;s as low-level as checking the Internet connection, and other times (as in the example above), it&#8217;s seeing if something works in other software. Pulling the image up in a browser or editor would have shown that the image was broken. Instead, everyone&#8217;s time was wasted.
</p>
</li>
<li>
<h3>Omitting necessary information</h3>
<p>
I very recently received this email:
</p>
<blockquote><p>Hi Matt there is Javascript errors on Devtool editor and preview pages. Do you want me to file a bug for them in one bug or are you already fixing (have fixed ) them?</p>
</blockquote>
<p>
This email was next to useless. First off, I don&#8217;t know <strong>what environment</strong> these errors were found in. Typically at work we&#8217;ve got a handful of environments, sometimes up to five or six, and almost always I don&#8217;t know when they were last updated. All <strong>I</strong> know at any given time is about <strong>my</strong> development box, which I doubt people test on.
</p>
<p>
Secondly, <strong>what browser and operating system</strong> were these errors found on? This is <strong>critical</strong> in a world where browsers behave so differently.
</p>
<p>
Lastly, <strong>what were the actual errors</strong> and (probably more importantly) <strong>how did you produce these errors?</strong> Sometimes it&#8217;s very obvious. Load up a program or hit a webpage and the same error pops up for everyone on every operating system or every browser. Sometimes. But not usually.
</p>
<p>
My all-time <strong>least</strong> favorite among the &#8220;not enough info&#8221; issues are the bugs that say something like, &#8220;looks funky&#8221; or &#8220;is broken&#8221;. I know what I think is funny. I don&#8217;t know what <strong>you</strong> think is funny. It&#8217;s ambiguous. If someone says, &#8220;it&#8217;s blue but it&#8217;s supposed to be red,&#8221; then I understand perfectly. Otherwise, there are blanks that need to be filled in, and a failure in communication has occurred.
</p>
<h4>How to avoid this</h4>
<p>
In short: <strong>I&#8217;m the developer. Need the info.</strong>
</p>
<p>
All that really has to be done is to answer each of the questions above. I&#8217;d love to know about errors if there are any, but I <strong>must</strong> have the bare essentials of information about them, and usually the more information the better. Help me help you.
</p>
</li>
<li>
<h3>Not knowing the specifications</h3>
<p>
Long ago, I lost track of how many bugs I&#8217;ve closed with a comment along the lines of, <strong>&#8220;This is by design.&#8221;</strong> Sure, sometimes nobody knows how the hell something is supposed to work, but if you&#8217;re doing it right there is documentation that answers these questions. It&#8217;s especially frustrating because the software is behaving <strong>exactly</strong> as intended and a bug is filed that (unknowingly to the creator) basically is saying, &#8220;Everything&#8217;s good, but I&#8217;m not aware of that.&#8221;
</p>
<h4>How to avoid this</h4>
<p>
Read the documentation. Know how it&#8217;s supposed to work. Don&#8217;t assume it&#8217;s broken. If all else fails, <strong>ask before filing a bug</strong>.
</p>
</li>
<li>
<h3>Over-filing bugs</h3>
<p>
I&#8217;m primarily a front-end guy, so I get a lot of design tweak bugs. Sometimes a character is missing, sometimes a border is too thick, sometimes a font is one point too large… These tiny issues often take mere seconds to fix. What takes longer is managing <strong>each</strong> of the bugs created for these issues.
</p>
<p>
A site I was working on a while back had a list that looked something like this:
</p>
<ul>
<li>Upgrade users</li>
<li>Truncate users</li>
<li>View users</li>
<li>Mass edit users</li>
<li>Import users</li>
</ul>
<p>
For each bullet point in this list, I was assigned a bug whose summary was something like, &#8220;Add a period to the end of &#8216;Upgrade users&#8217;&#8221;. That&#8217;s five bugs for five <strong>really</strong> easy fixes. What a waste of everyone&#8217;s time!
</p>
<h4>How to avoid this</h4>
<p>
Bugs happen. Tickets for these bugs need to be filed. Usually they are unrelated and separate tickets are not just good, but necessary. However, knowing when to create fifteen bugs and when to create just one is very important to know in order to be efficient. Sometimes it&#8217;s best to think about the issues at hand and consider if they&#8217;re similar enough to be filed together.
</p>
<p>
Another cause of over-filed bugs are <strong>duplicate bugs</strong>. This one&#8217;s easy, folks; just search for similar bugs before filing.
</p>
</li>
</ol>
<p>
<em><strong>Note:</strong> I certainly hope this article hasn&#8217;t offended any kind <acronym title="Quality Assurance">QA</acronym> folk. When they&#8217;re good at their job, they make my job <strong>way</strong> easier. Let&#8217;s hear it for <acronym title="Quality Assurance">QA</acronym>!</em>
</p>
<p>
(Special thanks to <a href="http://foohack.com/">Isaac Schlueter</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://scriptnode.com/article/5-ways-qa-ruin-developers-lives/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What to Expect From typeof</title>
		<link>http://scriptnode.com/article/what-to-expect-from-typeof/</link>
		<comments>http://scriptnode.com/article/what-to-expect-from-typeof/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 22:29:18 +0000</pubDate>
		<dc:creator>Matt Hackett</dc:creator>
				<category><![CDATA[Intermediate]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[quirks]]></category>

		<guid isPermaLink="false">http://scriptnode.com/?p=29</guid>
		<description><![CDATA[
As JavaScript is loosely typed, it&#8217;s often necessary to check what type of variable you&#8217;re dealing with. This is easily done with the typeof operator,
but developers be warned, the results are not always accurate, as you can see in the table below:



Type
Expected
Actual


Array
array
object


Boolean
boolean
boolean


Function
function
function


null
null
object


Number
number
number


Object
object
object


String
string
string


undefined
undefined
undefined



Array objects and null variables do not return expected results. You can try this [...]]]></description>
			<content:encoded><![CDATA[<p>
As JavaScript is loosely typed, it&#8217;s often necessary to check what type of variable you&#8217;re dealing with. This is easily done with the <code>typeof</code> operator,<br />
but <strong>developers be warned</strong>, the results are not always accurate, as you can see in the table below:
</p>
<table cellpadding="3" cellspacing="0" class="results">
<tr>
<th>Type</th>
<th>Expected</th>
<th>Actual</th>
</tr>
<tr>
<td><code>Array</code></td>
<td>array</td>
<td class="worst">object</td>
</tr>
<tr class="toggle">
<td><code>Boolean</code></td>
<td>boolean</td>
<td class="best">boolean</td>
</tr>
<tr>
<td><code>Function</code></td>
<td>function</td>
<td class="best">function</td>
</tr>
<tr class="toggle">
<td><code>null</code></td>
<td>null</td>
<td class="worst">object</td>
</tr>
<tr>
<td><code>Number</code></td>
<td>number</td>
<td class="best">number</td>
</tr>
<tr class="toggle">
<td><code>Object</code></td>
<td>object</td>
<td class="best">object</td>
</tr>
<tr>
<td><code>String</code></td>
<td>string</td>
<td class="best">string</td>
</tr>
<tr class="toggle">
<td><code>undefined</code></td>
<td>undefined</td>
<td class="best">undefined</td>
</tr>
</table>
<p>
<code>Array</code> objects and <code>null</code> variables do not return expected results. You can try this out for yourself here:
</p>
<p><textarea class="javascript" cols="50" name="code" rows="10"><br />
// Array<br />
alert(typeof []);</p>
<p>// Boolean<br />
alert(typeof true);</p>
<p>// Function<br />
alert(typeof function(){});</p>
<p>// null<br />
alert(typeof null);</p>
<p>// Number<br />
alert(typeof 1);</p>
<p>// Object<br />
alert(typeof {});</p>
<p>// String<br />
alert(typeof &#8220;&#8221;);</p>
<p>// undefined<br />
alert(typeof undefined);<br />
</textarea></p>
<p>
<button id="example-array">Array</button><br />
<button id="example-boolean">Boolean</button><br />
<button id="example-function">Function</button><br />
<button id="example-null">null</button><br />
<button id="example-number">Number</button><br />
<button id="example-object">Object</button><br />
<button id="example-string">String</button><br />
<button id="example-undefined">undefined</button>
</p>
<p><script type="text/javascript">
YAHOO.util.Event.addListener('example-array', 'click', function() {
	alert(typeof []);
});
YAHOO.util.Event.addListener('example-boolean', 'click', function() {
	alert(typeof true);
});
YAHOO.util.Event.addListener('example-function', 'click', function() {
	alert(typeof function(){});
});
YAHOO.util.Event.addListener('example-null', 'click', function() {
	alert(typeof null);
});
YAHOO.util.Event.addListener('example-number', 'click', function() {
	alert(typeof 1);
});
YAHOO.util.Event.addListener('example-object', 'click', function() {
	alert(typeof {});
});
YAHOO.util.Event.addListener('example-string', 'click', function() {
	alert(typeof "");
});
YAHOO.util.Event.addListener('example-undefined', 'click', function() {
	alert(typeof undefined);
});
</script></p>
<p>
This behavior is shared among all of the regular browsers including<br />
<a href="http://www.mozilla.com/en-US/">Firefox</a>,<br />
<a href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx">Internet Explorer</a>,<br />
<a href="http://www.opera.com/">Opera</a> and <a href="http://www.apple.com/safari/">Safari</a>.
</p>
<p>
<a href="http://javascript.crockford.com/survey.html">[Source: A Survey of the JavaScript Programming Language by Doug Crockford]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://scriptnode.com/article/what-to-expect-from-typeof/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
