<?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>Jason W. Cox, Software Engineer</title>
	<atom:link href="http://jasonwcox.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jasonwcox.com</link>
	<description>C/C++, Objective-C, Java, UNIX Shell Scripting, PHP, CSS, HTML, Python, UML</description>
	<lastBuildDate>Mon, 19 Jul 2010 17:16:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.2.2</generator>
	<item>
		<title>Why Pair Programming?</title>
		<link>http://jasonwcox.com/why-pair-programming/</link>
				<comments>http://jasonwcox.com/why-pair-programming/#comments</comments>
				<pubDate>Mon, 19 Jul 2010 17:16:04 +0000</pubDate>
		<dc:creator><![CDATA[Jason Cox]]></dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://jasonwcox.com/?p=41</guid>
				<description><![CDATA[Pair programming is the process of two people working on one development task on one computer at the same time. How could two people coding on only one thing help make more progress? You would assume that you would accomplish more work by having each developer work on independent sections of the code. However, there [&#8230;]]]></description>
								<content:encoded><![CDATA[<p></p><p><a href="http://en.wikipedia.org/wiki/Pair_programming">Pair  programming</a> is the process of two people working on one development  task on one computer at the same time.</p>
<p>How could two people coding on only one thing help make more  progress? You would assume that you would accomplish more work by having each developer work on independent sections of the code. However, <a href="http://software-quality.blogspot.com/2006/08/pair-programming-benefits-and-rules.html" target="_blank">there is a reason</a> pair programming is used by rapid development processes such as <a href="http://www.extremeprogramming.org/" target="_blank">Extreme Programming</a>. The goal of pair programming is to <a href="http://www.extremeprogramming.org/rules/pair.html" target="_blank">improve code quality</a> without slowing down the project.</p>
<h2>Focus</h2>
<p>Pair programming keeps developers focused on the task at hand and adds a level of accountability. For example, the navigator would be upset if the driver keeps checking their email  and vice versa.</p>
<p>When two people are sitting at a computer ready to work, nothing else  really distracts you. You will find that you don&#8217;t really want to do  anything but work hard.</p>
<p>This has a dramatic effect on the amount of hours you  can continuously work. With out all the context switching and  distractions, coding is much less exhausting.</p>
<h2>Flow</h2>
<p>In a <a href="http://zenhabits.net/creative-flow/" target="_blank">blog post</a> on <a href="http://zenhabits.net/" target="_blank">zenhabits.net</a>, <a href="http://www.farbeyondthestars.com/" target="_blank">Everett Bogue</a> discusses how to create a state of flow by separating the processes of researching and planning from implementing.</p>
<p>Flow is a state of being able to work effortlessly on something challenging. By doing all research before starting on something, you can increase the amount you get done in a short amount of time. Continuously switching contexts back and forth only inhibits code implementation.</p>
<p>When it comes to pair programming, the navigator handles all the research for the driver. This allows the driver to effortlessly write code. Since researching and coding happen at the same time, the time it takes for completing one task is decreased. As long as the tasks are chosen strategically, progress on the project will be significantly impacted.</p>
<h2>Fun</h2>
<p>Finally, my favorite feature of pair programming is that it&#8217;s just fun.</p>
<p>There is no getting lost in a cubicle farm. There is no isolation or banging your head on a keyboard alone. You are working with someone right next to you. You will likely have a lot in common with this person, as they are a colleague on your team that you may be working with for many years.</p>
<p>Even when you get stuck it isn&#8217;t an issue, because you have two minds working together. When it is break time, you can sit and chat without having to go and find someone else taking a break. Spending hours coding becomes easy when you are enjoying yourself and don&#8217;t feel lost or overwhelmed.</p>
]]></content:encoded>
							<wfw:commentRss>http://jasonwcox.com/why-pair-programming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Getting Into Open Source</title>
		<link>http://jasonwcox.com/getting-into-open-source/</link>
				<comments>http://jasonwcox.com/getting-into-open-source/#comments</comments>
				<pubDate>Fri, 11 Jun 2010 18:28:54 +0000</pubDate>
		<dc:creator><![CDATA[Jason Cox]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://jasonwcox.com/?p=30</guid>
				<description><![CDATA[Joining open source projects can be great for your career. By contributing to publicly visible projects, you are automatically creating an online portfolio. If you only work on traditional projects, it&#8217;s likely that all your contributions will be locked away in a vault. College professors do not want class project solutions posted online since other [&#8230;]]]></description>
								<content:encoded><![CDATA[<p></p><p>Joining open source projects can be great for your career.</p>
<p>By contributing to publicly visible projects, you are automatically creating an online portfolio. If you only work on traditional projects, it&#8217;s likely that all your contributions will be locked away in a vault. College professors do not want class project solutions posted online since other students could use your solution to cheat. Work done for a company is often proprietary, and posting is simply not an option. Sure, it&#8217;s possible that your product could be featured on a company website or other visible location, but it&#8217;s difficult to point to your exact contributions.<br />
<span id="more-30"></span></p>
<h2>How to Pick a Project</h2>
<p>Picking an open source project can be more difficult than it seems, and it isn&#8217;t just about finding something you really want to work on.</p>
<p>You will be joining a team of many people (called an Open Source Community), and some communities can be quite uninviting. Even <a title="Linus Torvalds" href="http://en.wikipedia.org/wiki/Linus_Torvalds" target="_blank">Linus Torvalds</a> recognizes that developers can be &#8220;unfriendly&#8221; in a <a title="ZDNet" href="http://www.zdnet.com.au/kernel-developers-are-unfriendly-torvalds-339273101.htm?omnRef=NULL" target="_blank">ZDNet interview</a>. To make sure you really want to join a project, join the community first. Get on their mailing list, IRC, or whatever tool the team uses for communication. If you find out that you don&#8217;t like how they respond to people&#8217;s emails, code, or documents, chances are you won&#8217;t like how they respond to you.</p>
<p>Another thing to check out before joining a project is the code, tools, and processes. If you get annoyed by ugly code and the whole project has ugly code, you may want to find something else to work on. Or, maybe joining a team in need and helping guide them to better practices is what you really care about.</p>
<p>There are many interesting options out there, so don&#8217;t settle for something that isn&#8217;t exactly what you want.</p>
<h2>How to Start Contributing</h2>
<p>Although you may want to jump in and start coding right away, there are many ways to contribute.</p>
<p>One of the most important parts of open source is becoming a part of the community. You want to be seen as an important member of the team quickly. Each team has their own processes and specific coding formats, which can be difficult to learn at first. When a newcomer submits a patch that doesn&#8217;t follow suit, project leaders may think you did not take the time to do your research. By contributing in other ways first, you will learn the ropes, be recognized by the people in charge, and not be seen as an uninformed newbie, even if you get something wrong.</p>
<p>Other ways to contribute to open source projects to quickly get yourself up to speed include testing, bug updates/comments, and writing documentation. These often overlooked tasks don&#8217;t require you to know a whole lot about the project, but fill a much needed niche for the team.</p>
<p>Simply installing the tool (or whatever the project is developing), trying it out, and reporting what you find gives the team much needed data, while you learn more details at the same time. When it comes to bugs, helping to find, verify, reproduce, discuss, or categorize them helps any team tremendously. Besides, if the project has been around a while, there should be a team of developers waiting to fix a bug, once enough information is in place.</p>
<p>And, last but not least, is documentation. Many open source projects lack adequate source and user documentation. If you help update old documents or write new ones, you will likely be seen as a lifesaver. In the open source world many people want to code, but not so many want to write documentation. Helping a team in this area will get your reputation moving forward quickly.</p>
<h2>Building an Online Portfolio</h2>
<p>Building an online portfolio can be great for your career, whether you are a freelancer or a full time employee. Getting your work out there for the world to see will show what you are capable of. Companies with great opportunities don&#8217;t just wait for job applicants, but instead search for who they want to hire.</p>
<p>Open source projects track the entire software process cycle publicly. Showing your contributions online, from documentation to code, is how communities work together. Some open source hosting sites even give your contributions a value or score, like <a href="http://launchpad.net" target="_blank">launchpad.net</a> that gives you karma points for contributions.</p>
<p>Finally, the traditional career path has changed from working at the same company for 40 years to switching companies quite often. Keeping your resume up to date can help a lot, but if you have a large online presence, you are much more likely to find a new position.</p>
]]></content:encoded>
							<wfw:commentRss>http://jasonwcox.com/getting-into-open-source/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
	</channel>
</rss>
