<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://commons.oreilly.com/wiki/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Reinvent the Wheel Often - Revision history</title>
		<link>http://commons.oreilly.com/wiki/index.php?title=Reinvent_the_Wheel_Often&amp;action=history</link>
		<description>Revision history for this page on the wiki</description>
		<language>en</language>
		<generator>MediaWiki 1.11.0</generator>
		<lastBuildDate>Sun, 19 May 2013 14:49:12 GMT</lastBuildDate>
		<item>
			<title>Jasonpsage at 06:42, 31 May 2012</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Reinvent_the_Wheel_Often&amp;diff=26508&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 06:42, 31 May 2012&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Perhaps you have seen publications about patterns in software development, or books on software design. These books can be sleepers regardless of how wonderful the information contained in them is. The same way taking notes during a lecture helps you learn and retain the subject matter, so too does designing software from the ground up, testing it, breaking it, repairing it, and improving it along the way.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Perhaps you have seen publications about patterns in software development, or books on software design. These books can be sleepers regardless of how wonderful the information contained in them is. The same way taking notes during a lecture helps you learn and retain the subject matter, so too does designing software from the ground up, testing it, breaking it, repairing it, and improving it along the way.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Reinventing the wheel is not just an exercise in where to place code constructs: It is how to get an intimate knowledge of the inner workings of various components that already exist. Do you know how memory managers work? Virtual paging? Could you implement it? &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Doubly &lt;/del&gt;linked lists? Dynamic array classes? ODBC clients? Could you write a graphical user interface that works like a popular one you know and like? Can you create your own web-browser widgets? Do you know when to write a multiplexed system versus a multi-threaded one? How to decide between a file- or memory-based database? These questions are ''not'' intended to make one feel like they still have lots to learn, but to point out the types of software most developers rarely create themselves. The consequence is all these kinds of software are not tangible and are viewed as mysterious black boxes that just work. Understanding only the surface of the water is not enough to reveal the hidden dangers beneath. Not knowing the deeper things in software development will limit your ability to create stellar work.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Reinventing the wheel is not just an exercise in where to place code constructs: It is how to get an intimate knowledge of the inner workings of various components that already exist. Do you know how memory managers work? Virtual paging? Could you implement it? &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Double-&lt;/ins&gt;linked lists? Dynamic array classes? ODBC clients? Could you write a graphical user interface that works like a popular one you know and like? Can you create your own web-browser widgets? Do you know when to write a multiplexed system versus a multi-threaded one? How to decide between a file- or memory-based database? These questions are ''not'' intended to make one feel like they still have lots to learn, but to point out the types of software most developers rarely create themselves. The consequence is all these kinds of software are not tangible and are viewed as mysterious black boxes that just work. Understanding only the surface of the water is not enough to reveal the hidden dangers beneath. Not knowing the deeper things in software development will limit your ability to create stellar work.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Reinventing the wheel and getting it wrong is more valuable than nailing it first time. There are lessons learned from trial and error that have an emotional component to them that reading a technical book alone just cannot deliver!&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Reinventing the wheel and getting it wrong is more valuable than nailing it first time. There are lessons learned from trial and error that have an emotional component to them that reading a technical book alone just cannot deliver!&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25154:newid:26508 --&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 31 May 2012 06:42:12 GMT</pubDate>			<dc:creator>Jasonpsage</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Reinvent_the_Wheel_Often</comments>		</item>
		<item>
			<title>Kevlin at 14:36, 6 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Reinvent_the_Wheel_Often&amp;diff=25154&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 14:36, 6 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;“Just &lt;/del&gt;use something that exists&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, its &lt;/del&gt;silly to reinvent the wheel...&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;”&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;Just &lt;/ins&gt;use something that exists &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;mdash; it's &lt;/ins&gt;silly to reinvent the wheel...&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Have you ever heard this or some variation thereof? Sure you have! Every developer and student probably hears comments like this frequently. Why though? Why is &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;rewriting &lt;/del&gt;the wheel so frowned upon? Because more often than not, existing &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;running &lt;/del&gt;code has already gone through some sort of quality control and rigorous testing. Additionally, the time and &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;resources spent reinventing the wheel is &lt;/del&gt;unlikely to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;payoff &lt;/del&gt;as well as using an existing product or code base. Should you bother rewriting the wheel? Why? When?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Have you ever heard this or some variation thereof? Sure you have! Every developer and student probably hears comments like this frequently. Why though? Why is &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;reinventing &lt;/ins&gt;the wheel so frowned upon? Because&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;more often than not, existing code &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;is working code. It &lt;/ins&gt;has already gone through some sort of quality control and rigorous testing &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and is being used&lt;/ins&gt;. Additionally, the time and &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;effort invested in reinvention are &lt;/ins&gt;unlikely to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;pay-off &lt;/ins&gt;as well as using an existing product or code base. Should you bother rewriting the wheel? Why? When?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Perhaps you have seen publications about patterns in software development, or books on software design. These books can be sleepers regardless how wonderful the information contained in them is. The same way taking notes during a lecture helps you learn and retain the subject matter, so too does designing software from the ground up, testing it, breaking it, repairing it and improving &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;it along the way. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Perhaps you have seen publications about patterns in software development, or books on software design. These books can be sleepers regardless &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;of &lt;/ins&gt;how wonderful the information contained in them is. The same way taking notes during a lecture helps you learn and retain the subject matter, so too does designing software from the ground up, testing it, breaking it, repairing it&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;and improving it along the way.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Reinventing the wheel is not just an exercise in where to place code constructs&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, but &lt;/del&gt;to get an intimate knowledge of the inner workings of various components that already exist. Do you know how memory managers work? Virtual &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Paging&lt;/del&gt;? &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Can &lt;/del&gt;you &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;write one&lt;/del&gt;? &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Dynamic double &lt;/del&gt;linked &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;list&lt;/del&gt;? Dynamic &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Array Classes&lt;/del&gt;? ODBC clients? Could you write a graphical user interface that works like a popular one you know and like? Can you create your own web browser widgets? Do you know when to write a multiplexed system versus a multi-threaded one? &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;A &lt;/del&gt;file or memory based database? These questions are &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;NOT &lt;/del&gt;intended to make one feel like they still have lots to learn, but to point out the types of software most developers rarely create themselves. The consequence is all these kinds of software are not tangible and are viewed as mysterious black boxes that just work. Understanding only the surface of the water is not enough to reveal the hidden dangers beneath. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Likewise, not &lt;/del&gt;knowing the deeper things in software development&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;will limit your ability to create stellar work. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Reinventing the wheel is not just an exercise in where to place code constructs&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;: It is how &lt;/ins&gt;to get an intimate knowledge of the inner workings of various components that already exist. Do you know how memory managers work? Virtual &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;paging&lt;/ins&gt;? &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Could &lt;/ins&gt;you &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;implement it&lt;/ins&gt;? &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Doubly &lt;/ins&gt;linked &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;lists&lt;/ins&gt;? Dynamic &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;array classes&lt;/ins&gt;? ODBC clients? Could you write a graphical user interface that works like a popular one you know and like? Can you create your own web&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/ins&gt;browser widgets? Do you know when to write a multiplexed system versus a multi-threaded one? &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;How to decide between a &lt;/ins&gt;file&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;- &lt;/ins&gt;or memory&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/ins&gt;based database? These questions are &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''not'' &lt;/ins&gt;intended to make one feel like they still have lots to learn, but to point out the types of software most developers rarely create themselves. The consequence is all these kinds of software are not tangible and are viewed as mysterious black boxes that just work. Understanding only the surface of the water is not enough to reveal the hidden dangers beneath. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Not &lt;/ins&gt;knowing the deeper things in software development will limit your ability to create stellar work.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Rewriting &lt;/del&gt;the wheel and getting it wrong is more valuable than nailing it &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/del&gt;first time&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;! &lt;/del&gt;There are lessons learned from trial and error that &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;has &lt;/del&gt;an emotional component to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;it &lt;/del&gt;that reading a technical book alone just &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;can not &lt;/del&gt;deliver! &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Reinventing &lt;/ins&gt;the wheel and getting it wrong is more valuable than nailing it first time&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. &lt;/ins&gt;There are lessons learned from trial and error that &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;have &lt;/ins&gt;an emotional component to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;them &lt;/ins&gt;that reading a technical book alone just &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;cannot &lt;/ins&gt;deliver!&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Facts and book smarts are crucial&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, but &lt;/del&gt;programming is not only a science&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;it's an art form. Reinventing the wheel is as important to a developer's education and skill as &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;is &lt;/del&gt;an artist practicing with their brushes and paints before attempting to put their masterpiece on canvas.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Facts and book smarts are crucial&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. But &lt;/ins&gt;programming is not only a science&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;; &lt;/ins&gt;it's an art form. Reinventing the wheel is as important to a developer's education and skill as an artist practicing with their brushes and paints before attempting to put their masterpiece on canvas.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;By [[Jason P Sage]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;This work is licensed under a [http://creativecommons.org/licenses/by/3.0/us/ Creative Commons Attribution 3] &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Back to [[97 Things Every Programmer Should Know]] home page&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:23601:newid:25154 --&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 06 Aug 2009 14:36:18 GMT</pubDate>			<dc:creator>Kevlin</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Reinvent_the_Wheel_Often</comments>		</item>
		<item>
			<title>Jasonpsage at 21:44, 5 March 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Reinvent_the_Wheel_Often&amp;diff=23601&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:44, 5 March 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Rewriting the wheel and getting it wrong is more valuable than nailing it the first time! There are lessons learned from trial and error that has an emotional component to it that reading a technical book alone just can not deliver!  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Rewriting the wheel and getting it wrong is more valuable than nailing it the first time! There are lessons learned from trial and error that has an emotional component to it that reading a technical book alone just can not deliver!  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Facts and book smarts are crucial, but programming is not only a science, it's an art form. Reinventing the wheel is as &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;import &lt;/del&gt;to a developer's education and skill as is an artist practicing with their brushes and paints before attempting to put their masterpiece on canvas.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Facts and book smarts are crucial, but programming is not only a science, it's an art form. Reinventing the wheel is as &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;important &lt;/ins&gt;to a developer's education and skill as is an artist practicing with their brushes and paints before attempting to put their masterpiece on canvas.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:23582:newid:23601 --&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 05 Mar 2009 21:44:02 GMT</pubDate>			<dc:creator>Jasonpsage</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Reinvent_the_Wheel_Often</comments>		</item>
		<item>
			<title>Jasonpsage at 02:08, 4 March 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Reinvent_the_Wheel_Often&amp;diff=23582&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 02:08, 4 March 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Rewriting the wheel and getting it wrong is more valuable than nailing it the first time! There are lessons learned from trial and error that has an emotional component to it that reading a technical book alone just can not deliver!  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Rewriting the wheel and getting it wrong is more valuable than nailing it the first time! There are lessons learned from trial and error that has an emotional component to it that reading a technical book alone just can not deliver!  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Facts and book smarts are crucial, but programming is not a science, it's an art. Reinventing the wheel is as import to a developer's education and skill as is an artist practicing with their brushes and paints before attempting to put their masterpiece on canvas.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Facts and book smarts are crucial, but programming is not &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;only &lt;/ins&gt;a science, it's an art &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;form&lt;/ins&gt;. Reinventing the wheel is as import to a developer's education and skill as is an artist practicing with their brushes and paints before attempting to put their masterpiece on canvas.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:23571:newid:23582 --&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 04 Mar 2009 02:08:40 GMT</pubDate>			<dc:creator>Jasonpsage</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Reinvent_the_Wheel_Often</comments>		</item>
		<item>
			<title>Jasonpsage: New page: “Just use something that exists, its silly to reinvent the wheel...”  Have you ever heard this or some variation thereof? Sure you have! Every developer and student probably hears comm...</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Reinvent_the_Wheel_Often&amp;diff=23571&amp;oldid=prev</link>
			<description>&lt;p&gt;New page: “Just use something that exists, its silly to reinvent the wheel...”  Have you ever heard this or some variation thereof? Sure you have! Every developer and student probably hears comm...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;“Just use something that exists, its silly to reinvent the wheel...”&lt;br /&gt;
&lt;br /&gt;
Have you ever heard this or some variation thereof? Sure you have! Every developer and student probably hears comments like this frequently. Why though? Why is rewriting the wheel so frowned upon? Because more often than not, existing running code has already gone through some sort of quality control and rigorous testing. Additionally, the time and resources spent reinventing the wheel is unlikely to payoff as well as using an existing product or code base. Should you bother rewriting the wheel? Why? When?&lt;br /&gt;
&lt;br /&gt;
Perhaps you have seen publications about patterns in software development, or books on software design. These books can be sleepers regardless how wonderful the information contained in them is. The same way taking notes during a lecture helps you learn and retain the subject matter, so too does designing software from the ground up, testing it, breaking it, repairing it and improving  it along the way. &lt;br /&gt;
&lt;br /&gt;
Reinventing the wheel is not just an exercise in where to place code constructs, but to get an intimate knowledge of the inner workings of various components that already exist. Do you know how memory managers work? Virtual Paging? Can you write one? Dynamic double linked list? Dynamic Array Classes? ODBC clients? Could you write a graphical user interface that works like a popular one you know and like? Can you create your own web browser widgets? Do you know when to write a multiplexed system versus a multi-threaded one? A file or memory based database? These questions are NOT intended to make one feel like they still have lots to learn, but to point out the types of software most developers rarely create themselves. The consequence is all these kinds of software are not tangible and are viewed as mysterious black boxes that just work. Understanding only the surface of the water is not enough to reveal the hidden dangers beneath. Likewise, not knowing the deeper things in software development, will limit your ability to create stellar work. &lt;br /&gt;
&lt;br /&gt;
Rewriting the wheel and getting it wrong is more valuable than nailing it the first time! There are lessons learned from trial and error that has an emotional component to it that reading a technical book alone just can not deliver!  &lt;br /&gt;
&lt;br /&gt;
Facts and book smarts are crucial, but programming is not a science, it's an art. Reinventing the wheel is as import to a developer's education and skill as is an artist practicing with their brushes and paints before attempting to put their masterpiece on canvas.&lt;/div&gt;</description>
			<pubDate>Tue, 03 Mar 2009 04:50:50 GMT</pubDate>			<dc:creator>Jasonpsage</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Reinvent_the_Wheel_Often</comments>		</item>
	</channel>
</rss>