<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://commons.oreilly.com/wiki/skins/common/feed.css?97"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;action=history&amp;feed=atom</id>
		<title>Know Your IDE - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;action=history&amp;feed=atom"/>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;action=history"/>
		<updated>2013-05-19T04:37:38Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.11.0</generator>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=25333&amp;oldid=prev</id>
		<title>Kevlin at 21:52, 17 August 2009</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=25333&amp;oldid=prev"/>
				<updated>2009-08-17T21:52:52Z</updated>
		
		<summary type="html">&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:52, 17 August 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;Unfortunately modern IDEs do not require us to invest effort in order to learn how to use them. When I first programmed C on Unix, I had to spend quite a bit of time learning how the ''vi'' editor worked, due to its steep learning curve. This time spent up-front paid off handsomely over the years. I am even typing the draft of this article with ''vi''. Modern IDEs have a very gradual learning curve, which can have the effect that we never progress beyond the most basic usage of the tool.&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;Unfortunately modern IDEs do not require us to invest effort in order to learn how to use them. When I first programmed C on Unix, I had to spend quite a bit of time learning how the ''vi'' editor worked, due to its steep learning curve. This time spent up-front paid off handsomely over the years. I am even typing the draft of this article with ''vi''. Modern IDEs have a very gradual learning curve, which can have the effect that we never progress beyond the most basic usage of the tool.&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;My first step in learning an IDE is to memorize the keyboard shortcuts. Since my fingers are on the keyboard when I'm typing my code, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;it will save me precious seconds to press &lt;/del&gt;''Ctrl+Shift+I'' to inline a variable, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;rather than having &lt;/del&gt;to navigate a menu with my mouse. These &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;seconds add up over time&lt;/del&gt;, making me much &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;more &lt;/del&gt;productive &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;than when &lt;/del&gt;I try to do everything the lazy way. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;The same rule also applies to keyboard skills: Learn to touch type, you won't regret the time invested up-front.&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;My first step in learning an IDE is to memorize the keyboard shortcuts. Since my fingers are on the keyboard when I'm typing my code, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;pressing &lt;/ins&gt;''Ctrl+Shift+I'' to inline a variable &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;saves breaking the flow&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;whereas switching &lt;/ins&gt;to navigate a menu with my mouse &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;interrupts the flow&lt;/ins&gt;. These &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;interruptions lead to unnecessary context switches&lt;/ins&gt;, making me much &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;less &lt;/ins&gt;productive &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;if &lt;/ins&gt;I try to do everything the lazy way. The same rule also applies to keyboard skills: Learn to touch type, you won't regret the time invested up-front.&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;Lastly, as programmers we have time proven Unix streaming tools that can help us manipulate our code. For example, if during a code review, I noticed that the programmers had named lots of classes the same, I could find these very easily using the tools ''find'', ''sed'', ''sort'', ''uniq'', and ''grep'', like this:&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;Lastly, as programmers we have time proven Unix streaming tools that can help us manipulate our code. For example, if during a code review, I noticed that the programmers had named lots of classes the same, I could find these very easily using the tools ''find'', ''sed'', ''sort'', ''uniq'', and ''grep'', like this:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25308:newid:25333 --&gt;
&lt;/table&gt;</summary>
		<author><name>Kevlin</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=25308&amp;oldid=prev</id>
		<title>Kevlin: Know your IDE moved to Know Your IDE</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=25308&amp;oldid=prev"/>
				<updated>2009-08-17T11:30:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/index.php/Know_your_IDE&quot; title=&quot;Know your IDE&quot;&gt;Know your IDE&lt;/a&gt; moved to &lt;a href=&quot;/wiki/index.php/Know_Your_IDE&quot; title=&quot;Know Your IDE&quot;&gt;Know Your IDE&lt;/a&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 11:30, 17 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;</summary>
		<author><name>Kevlin</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=25307&amp;oldid=prev</id>
		<title>Kevlin at 11:30, 17 August 2009</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=25307&amp;oldid=prev"/>
				<updated>2009-08-17T11:30:26Z</updated>
		
		<summary type="html">&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 11:30, 17 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;In the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;80s, &lt;/del&gt;our programming environments were typically nothing better than glorified text editors&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;if we were lucky. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Syntax highlighting, which we take for granted nowadays, was a luxury that certainly was not available to everyone. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Pretty printers to format our code nicely were usually external tools that had to be run to correct our spacing. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Debuggers were also separate programs run to step through our code, but with a lot of cryptic keystrokes.&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;In the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;1980s &lt;/ins&gt;our programming environments were typically nothing better than glorified text editors&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;... &lt;/ins&gt;if we were lucky. Syntax highlighting, which we take for granted nowadays, was a luxury that certainly was not available to everyone. Pretty printers to format our code nicely were usually external tools that had to be run to correct our spacing. Debuggers were also separate programs run to step through our code, but with a lot of cryptic keystrokes.&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;During the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;90s, &lt;/del&gt;companies began to recognize the potential income that they could derive from equipping programmers with better and more useful tools. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;The Integrated Development Environment (IDE) combined the previous editing features with a compiler, debugger &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/del&gt;pretty printer. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;During that time, the mouse &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and menus &lt;/del&gt;also became popular, which meant that developers no longer needed to learn cryptic key combinations to use their editors&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, but &lt;/del&gt;could simply select their command from the menu.&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;During the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;1990s &lt;/ins&gt;companies began to recognize the potential income that they could derive from equipping programmers with better and more useful tools. The Integrated Development Environment (IDE) combined the previous editing features with a compiler, debugger&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;pretty printer&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, and other tools&lt;/ins&gt;. During that time, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;menus and &lt;/ins&gt;the mouse also became popular, which meant that developers no longer needed to learn cryptic key combinations to use their editors&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. They &lt;/ins&gt;could simply select their command from the menu.&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;In the 21st century&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;IDEs &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;became &lt;/del&gt;so common place that they &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;were &lt;/del&gt;given away for free by companies wishing to gain market share in other areas. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;The modern &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;IDEs are &lt;/del&gt;equipped with an amazing array of features. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;My &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;favourite are the &lt;/del&gt;refactoring &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;tools&lt;/del&gt;, where I can select a chunk of code &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and convert that &lt;/del&gt;into a method. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;The refactoring tool will pick up all the parameters that need to be passed into the method, which makes it extremely easy to modify code. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;My IDE will even detect other chunks of code that could also be replaced by this method and ask me whether I would like to replace them too.&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;In the 21st century IDEs &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;have become &lt;/ins&gt;so common place that they &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;are &lt;/ins&gt;given away for free by companies wishing to gain market share in other areas. The modern &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;IDE is &lt;/ins&gt;equipped with an amazing array of features. My &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;favorite is automated &lt;/ins&gt;refactoring&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, particularly ''Extract Method''&lt;/ins&gt;, where I can select &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and convert &lt;/ins&gt;a chunk of code into a method. The refactoring tool will pick up all the parameters that need to be passed into the method, which makes it extremely easy to modify code. My IDE will even detect other chunks of code that could also be replaced by this method and ask me whether I would like to replace them too.&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;Another amazing feature of modern IDEs is the ability to enforce style rules within a company. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;For example, in Java, some programmers have started making all parameters final&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;which in my opinion is a waste of time. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;However, since they have such a style rule, all I would need to do is set it up in my IDE &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and every time that a parameter is non-final, &lt;/del&gt;I would get a warning. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; The style &lt;/del&gt;rules can also be used to find probable bugs, such as &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;when we compare &lt;/del&gt;autoboxed objects &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;with &amp;quot;&lt;/del&gt;==&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;&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;Another amazing feature of modern IDEs is the ability to enforce style rules within a company. For example, in Java, some programmers have started making all parameters &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;final&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; (&lt;/ins&gt;which&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;in my opinion&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;is a waste of time&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;. However, since they have such a style rule, all I would need to do &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;to follow it &lt;/ins&gt;is set it up in my IDE&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/ins&gt;I would get a warning &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;for any non-&amp;lt;code&amp;gt;final&amp;lt;/code&amp;gt; parameter&lt;/ins&gt;. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Style &lt;/ins&gt;rules can also be used to find probable bugs, such as &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;comparing &lt;/ins&gt;autoboxed objects &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;for reference equality, e.g., using &amp;lt;code&amp;gt;&lt;/ins&gt;==&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; on primitive values that are autoboxed into reference objects&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;Unfortunately modern IDEs do not require us to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;put in a lot of &lt;/del&gt;effort in order to learn how to use &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;it&lt;/del&gt;. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;When I first programmed C on &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;unix&lt;/del&gt;, I had to spend quite a bit of time learning how the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;VI &lt;/del&gt;editor worked, due to its steep learning curve. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;This time spent up-front paid off &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;hansomly &lt;/del&gt;over the years. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;I am even typing this article with &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;VI&lt;/del&gt;. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Modern IDEs have a very gradual learning curve, which can have the effect that we never progress beyond the most basic usage of the tool.&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;Unfortunately modern IDEs do not require us to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;invest &lt;/ins&gt;effort in order to learn how to use &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;them&lt;/ins&gt;. When I first programmed C on &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Unix&lt;/ins&gt;, I had to spend quite a bit of time learning how the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''vi'' &lt;/ins&gt;editor worked, due to its steep learning curve. This time spent up-front paid off &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;handsomely &lt;/ins&gt;over the years. I am even typing &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;the draft of &lt;/ins&gt;this article with &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''vi''&lt;/ins&gt;. Modern IDEs have a very gradual learning curve, which can have the effect that we never progress beyond the most basic usage of the tool.&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;My first step in learning an IDE is to memorize the keyboard shortcuts. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Since my fingers are on the keyboard when I'm typing my code, it will save me precious seconds to press Ctrl+Shift+I to inline a variable, rather than having to navigate a menu with my mouse. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;These seconds add up over time, making me much more productive than when I try to do everything the lazy way.  The same rule also applies to keyboard skills &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;- learn &lt;/del&gt;to touch type &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;- &lt;/del&gt;you won't regret the time invested up-front.&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;My first step in learning an IDE is to memorize the keyboard shortcuts. Since my fingers are on the keyboard when I'm typing my code, it will save me precious seconds to press &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;Ctrl+Shift+I&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;'' &lt;/ins&gt;to inline a variable, rather than having to navigate a menu with my mouse. These seconds add up over time, making me much more productive than when I try to do everything the lazy way.  The same rule also applies to keyboard skills&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;: Learn &lt;/ins&gt;to touch type&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;you won't regret the time invested up-front.&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;Lastly, as programmers we have time proven &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;unix &lt;/del&gt;streaming tools that can help us manipulate our code. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;For example, if during a code review, I noticed that the programmers had named lots of classes the same, I could find these very easily using the tools find, sed, sort, uniq and grep, like this: &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/del&gt;find . -name &amp;quot;*.java&amp;quot; | sed 's/.*\///' | sort | uniq -c | grep -v &amp;quot;^ *1 &amp;quot; | sort -r&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;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;Lastly, as programmers we have time proven &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Unix &lt;/ins&gt;streaming tools that can help us manipulate our code. For example, if during a code review, I noticed that the programmers had named lots of classes the same, I could find these very easily using the tools &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;find&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;sed&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;sort&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;uniq&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;'', &lt;/ins&gt;and &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;grep&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;''&lt;/ins&gt;, like this:&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; &lt;/ins&gt;find . -name &amp;quot;*.java&amp;quot; | sed 's/.*\///' | sort | uniq -c | grep -v &amp;quot;^ *1 &amp;quot; | sort -r&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;We expect a plumber coming to our house to be able to use his blow torch.  Let's spend a bit of time to study how to become more effective with our IDE.&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;We expect a plumber coming to our house to be able to use his blow torch.  Let's spend a bit of time to study how to become more effective with our IDE.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kevlin</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=25242&amp;oldid=prev</id>
		<title>Kabutz at 09:23, 10 August 2009</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=25242&amp;oldid=prev"/>
				<updated>2009-08-10T09:23:40Z</updated>
		
		<summary type="html">&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 09:23, 10 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;In the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;days of Unix C &lt;/del&gt;programming, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my choice of editor was vi&lt;/del&gt;.  &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;The power of vi was in its simplicity: by learning a few keystrokes and unix tools (grep&lt;/del&gt;, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;sort, find, etc.) &lt;/del&gt;we &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;could manipulate code easily.  My fellow students favored the more &amp;quot;user friendly&amp;quot; editors with mouse control.  Whilst having a shorter learning curve&lt;/del&gt;, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;the power of these editors &lt;/del&gt;was &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;also greatly reduced&lt;/del&gt;.  &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;The same applies &lt;/del&gt;to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;10 finger touch typing&lt;/del&gt;.  &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Investing &lt;/del&gt;a &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;couple &lt;/del&gt;of &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;hours of your life will make you far more productive for many years to come&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;In the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;80s, our &lt;/ins&gt;programming &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;environments were typically nothing better than glorified text editors&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;if we were lucky&lt;/ins&gt;.  &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Syntax highlighting&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;which &lt;/ins&gt;we &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;take for granted nowadays&lt;/ins&gt;, was &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a luxury that certainly was not available to everyone&lt;/ins&gt;.  &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Pretty printers &lt;/ins&gt;to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;format our code nicely were usually external tools that had to be run to correct our spacing&lt;/ins&gt;.  &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Debuggers were also separate programs run to step through our code, but with &lt;/ins&gt;a &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;lot &lt;/ins&gt;of &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;cryptic keystrokes&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Modern IDEs offer many benefits: automatic refactoring, code layout, etc.  Most of these features are available from &lt;/del&gt;the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;menus&lt;/del&gt;, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;but nothing beats &lt;/del&gt;the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;shortcut keystrokes&lt;/del&gt;.  &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Every &lt;/del&gt;IDE &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;is different&lt;/del&gt;, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;which makes it useful to learn one really well&lt;/del&gt;.  &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;After conference talks&lt;/del&gt;, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;I am frequently approached by programmers who enjoyed watching me craft &lt;/del&gt;the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;code so quickly using the key shortcuts.  It does not matter &lt;/del&gt;which &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;IDE you use, as long as you invest a bit of your time &lt;/del&gt;to learn &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;it well.  Memorize one new &lt;/del&gt;key &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;shortcut per week and by &lt;/del&gt;the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;end of the year you will look like a pro&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;During &lt;/ins&gt;the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;90s&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;companies began to recognize &lt;/ins&gt;the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;potential income that they could derive from equipping programmers with better and more useful tools&lt;/ins&gt;.  &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;The Integrated Development Environment (&lt;/ins&gt;IDE&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;) combined the previous editing features with a compiler&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;debugger and pretty printer&lt;/ins&gt;.  &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;During that time&lt;/ins&gt;, the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;mouse and menus also became popular, &lt;/ins&gt;which &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;meant that developers no longer needed &lt;/ins&gt;to learn &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;cryptic &lt;/ins&gt;key &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;combinations to use their editors, but could simply select their command from &lt;/ins&gt;the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;menu&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;During &lt;/del&gt;code &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;reviews &lt;/del&gt;and &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;when I want &lt;/del&gt;to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;make changes &lt;/del&gt;to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;lots &lt;/del&gt;of &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;files&lt;/del&gt;, some &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;basic unix tools are still invaluable&lt;/del&gt;.  &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Besides knowing our &lt;/del&gt;IDE very &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;well&lt;/del&gt;, we &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;should &lt;/del&gt;also &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;know grep&lt;/del&gt;, find, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;uniq&lt;/del&gt;, sort and &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;vi&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;In the 21st century, IDEs became so common place that they were given away for free by companies wishing to gain market share in other areas.  The modern IDEs are equipped with an amazing array of features.  My favourite are the refactoring tools, where I can select a chunk of &lt;/ins&gt;code and &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;convert that into a method.  The refactoring tool will pick up all the parameters that need &lt;/ins&gt;to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;be passed into the method, which makes it extremely easy &lt;/ins&gt;to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;modify code.  My IDE will even detect other chunks &lt;/ins&gt;of &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;code that could also be replaced by this method and ask me whether I would like to replace them too.&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;Another amazing feature of modern IDEs is the ability to enforce style rules within a company.  For example, in Java&lt;/ins&gt;, some &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;programmers have started making all parameters final, which in my opinion is a waste of time&lt;/ins&gt;.  &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;However, since they have such a style rule, all I would need to do is set it up in my &lt;/ins&gt;IDE &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and every time that a parameter is non-final, I would get a warning.  The style rules can also be used to find probable bugs, such as when we compare autoboxed objects with &amp;quot;==&amp;quot;.&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;Unfortunately modern IDEs do not require us to put in a lot of effort in order to learn how to use it.  When I first programmed C on unix, I had to spend quite a bit of time learning how the VI editor worked, due to its steep learning curve.  This time spent up-front paid off hansomly over the years.  I am even typing this article with VI.  Modern IDEs have a &lt;/ins&gt;very &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;gradual learning curve&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;which can have the effect that &lt;/ins&gt;we &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;never progress beyond the most basic usage of the tool.&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;My first step in learning an IDE is to memorize the keyboard shortcuts.  Since my fingers are on the keyboard when I'm typing my code, it will save me precious seconds to press Ctrl+Shift+I to inline a variable, rather than having to navigate a menu with my mouse.  These seconds add up over time, making me much more productive than when I try to do everything the lazy way.  The same rule &lt;/ins&gt;also &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;applies to keyboard skills - learn to touch type - you won't regret the time invested up-front.&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;Lastly&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;as programmers we have time proven unix streaming tools that can help us manipulate our code.  For example, if during a code review, I noticed that the programmers had named lots of classes the same, I could find these very easily using the tools &lt;/ins&gt;find, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;sed&lt;/ins&gt;, sort&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, uniq &lt;/ins&gt;and &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;grep, like this: &amp;lt;code&amp;gt;find . -name &amp;quot;*.java&amp;quot; | sed 's/.*\///' | sort | uniq -c | grep -v &amp;quot;^ *1 &amp;quot; | sort -r&amp;lt;/code&amp;gt;&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;We expect a plumber coming to our house to be able to use his blow torch.  Let's spend a bit of time to study how to become more effective with our IDE&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;by [[Heinz Kabutz]]&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;by [[Heinz Kabutz]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kabutz</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=25241&amp;oldid=prev</id>
		<title>Kabutz at 07:18, 10 August 2009</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=25241&amp;oldid=prev"/>
				<updated>2009-08-10T07:18:52Z</updated>
		
		<summary type="html">&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 07:18, 10 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;In the days of Unix C programming, my choice of editor was vi.  The power of vi was in its simplicity: by learning a few keystrokes and unix tools (grep, sort, find, etc.) we could manipulate code easily.  My fellow students favored the more &amp;quot;user friendly&amp;quot; editors with mouse control.  Whilst having a shorter learning curve, the power of these editors was also greatly reduced.&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;In the days of Unix C programming, my choice of editor was vi.  The power of vi was in its simplicity: by learning a few keystrokes and unix tools (grep, sort, find, etc.) we could manipulate code easily.  My fellow students favored the more &amp;quot;user friendly&amp;quot; editors with mouse control.  Whilst having a shorter learning curve, the power of these editors was also greatly reduced&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;.  The same applies to 10 finger touch typing.  Investing a couple of hours of your life will make you far more productive for many years to come&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;Modern IDEs offer many benefits: automatic refactoring, code layout, etc.&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;Modern IDEs offer many benefits: automatic refactoring, code layout, etc&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;.  Most of these features are available from the menus, but nothing beats the shortcut keystrokes.  Every IDE is different, which makes it useful to learn one really well.  After conference talks, I am frequently approached by programmers who enjoyed watching me craft the code so quickly using the key shortcuts.  It does not matter which IDE you use, as long as you invest a bit of your time to learn it well.  Memorize one new key shortcut per week and by the end of the year you will look like a pro&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Most &lt;/del&gt;of &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;these features are available from the menus&lt;/del&gt;, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;but nothing beats the shortcut keystrokes&lt;/del&gt;.  &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Every &lt;/del&gt;IDE &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;is different, which makes it useful to learn one really &lt;/del&gt;well.&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;During code reviews and when I want to make changes to lots &lt;/ins&gt;of &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;files&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;some basic unix tools are still invaluable&lt;/ins&gt;.  &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Besides knowing our &lt;/ins&gt;IDE &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;very &lt;/ins&gt;well&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, we should also know grep, find, uniq, sort and vi&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;You can tell a lot about a person &lt;/del&gt;by &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;watching them work with their favorite IDE.  Having presented over a hundred Java courses to experienced programmers, it still amazes me how many fellow programmers have spent almost no time getting to know the short cuts to their particular IDE.&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;by &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Heinz Kabutz]]&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 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;This work is licensed under a&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;[http://creativecommons.org/licenses/by/3.0/us/ Creative Commons Attribution 3] &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;*more &lt;/del&gt;to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;follow*&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;&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 &lt;/ins&gt;to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[97 Things Every Programmer Should Know]] home page&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kabutz</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=14134&amp;oldid=prev</id>
		<title>Kabutz: New page: In the days of Unix C programming, my choice of editor was vi.  The power of vi was in its simplicity: by learning a few keystrokes and unix tools (grep, sort, find, etc.) we could manipul...</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=Know_Your_IDE&amp;diff=14134&amp;oldid=prev"/>
				<updated>2008-11-12T15:08:57Z</updated>
		
		<summary type="html">&lt;p&gt;New page: In the days of Unix C programming, my choice of editor was vi.  The power of vi was in its simplicity: by learning a few keystrokes and unix tools (grep, sort, find, etc.) we could manipul...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In the days of Unix C programming, my choice of editor was vi.  The power of vi was in its simplicity: by learning a few keystrokes and unix tools (grep, sort, find, etc.) we could manipulate code easily.  My fellow students favored the more &amp;quot;user friendly&amp;quot; editors with mouse control.  Whilst having a shorter learning curve, the power of these editors was also greatly reduced.&lt;br /&gt;
&lt;br /&gt;
Modern IDEs offer many benefits: automatic refactoring, code layout, etc.&lt;br /&gt;
&lt;br /&gt;
Most of these features are available from the menus, but nothing beats the shortcut keystrokes.  Every IDE is different, which makes it useful to learn one really well.&lt;br /&gt;
&lt;br /&gt;
You can tell a lot about a person by watching them work with their favorite IDE.  Having presented over a hundred Java courses to experienced programmers, it still amazes me how many fellow programmers have spent almost no time getting to know the short cuts to their particular IDE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*more to follow*&lt;/div&gt;</summary>
		<author><name>Kabutz</name></author>	</entry>

	</feed>