<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx</link><description>Through the wonders of DZone I came across a blog post called Don't teach like you code . The target audience seems to be professional coders who are teaching beginners. It&amp;rsquo;s always interesting to read articles like this and part of that is to understand</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>re: How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx#10108717</link><pubDate>Thu, 23 Dec 2010 21:52:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108717</guid><dc:creator>Alfred Thompson</dc:creator><description>&lt;p&gt;There are a lot of great refactoring tools these days and I think that using them is a better practice than having the comipler find things. Even find and replace is a better frist step. At some point you will rely on the compiler to find missed things but a good refactoring tool handles things much better. Such as those built into Visual Studio for example.&lt;/p&gt;
&lt;p&gt;I like to have stub methods return a &amp;quot;not implimented&amp;quot; exception BTW. Also the use of the TODO: tag in Visual Studio is a great help for finding work left to be done. &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108717" width="1" height="1"&gt;</description></item><item><title>re: How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx#10108506</link><pubDate>Thu, 23 Dec 2010 09:09:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108506</guid><dc:creator>Spencer</dc:creator><description>&lt;p&gt;On the point of using the compiler to &amp;#39;find things you missed,&amp;#39; &amp;nbsp;I think you missed the original author&amp;#39;s point. &amp;nbsp;He is not saying that the compiler should or can be used in lieu of good programming discipline. &amp;nbsp;He is saying that a programmer can (and commonly does) use the compiler as a reminder tool.&lt;/p&gt;
&lt;p&gt;For example, when I am making minor refactors such as adding an additional parameter to a method I will commonly change the method first. &amp;nbsp;I then perform a compile just to get a nice list of all of the places where the method had been used so I can go through each and update them to use the new method signature. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;One of the examples the author cites is the &amp;#39;non-returned value&amp;#39; error. &amp;nbsp;I do that too. &amp;nbsp;When writing a new class, I will often stub the methods in such a way that they do not compile. &amp;nbsp;I can then go implement them one at a time. &amp;nbsp;The compile error then serves me as a reminder that I forgot to complete one.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108506" width="1" height="1"&gt;</description></item><item><title>re: How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx#10108348</link><pubDate>Wed, 22 Dec 2010 22:10:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108348</guid><dc:creator>Alfred Thompson</dc:creator><description>&lt;p&gt;Whyld, I see your point with large and web based projects where you are dependent on other code/platform to resolve some issues. &lt;/p&gt;
&lt;p&gt;On the other hand the less time you have to finish something the more important it is to plan out the solution before coding a fix. I was writing test code for a while and we had fast turn arounds as a rule. A problem found on an over night run had to have a fix before the next night&amp;#39;s run. Planning time cut the debugging time way down. Understanding before coding.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108348" width="1" height="1"&gt;</description></item><item><title>re: How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx#10108317</link><pubDate>Wed, 22 Dec 2010 20:52:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108317</guid><dc:creator>Whyld</dc:creator><description>&lt;p&gt;Alfred I really have to respectfully disagree with you. &amp;nbsp;1. &amp;quot;You should have thought things through in some detail before you started coding.&amp;quot; &amp;nbsp;If your coming from the prospective of a new project or a large team effort then I agree. But many of us work in companies where your one of a half dozen programmers or less, sometime solo. &amp;nbsp;So most often that new project is some VP’s brainstorm and you have till end of day to bring it to life. &amp;nbsp;Or some email(s) you were handed from a user with minimal / incomplete information and you have to recreate a “bug” and then find a solution quickly before the company loses some substantial business. 2. “If you run the compiler and get errors and warnings you should be surprised. Or at very least disappointed.” Two things here, especially in web development your often blending compiled code with code that is outside of the compiler such as client side or db code. &amp;nbsp;So running the compiler may be a way just to look at the solution run as a whole. &amp;nbsp;Secondly you may have to make additions to very large solutions that contain many projects, and external services. &amp;nbsp;It is totally not uncommon to have to compile before the gui will actually catch up and show you your errors, and it’s often much quicker then navigating back and forth between classes in several projects to figure out all the inputs and outputs. &amp;nbsp;Just take your best guess do a quick compile and make the corrections it denotes and then compile for effect. ;) &amp;nbsp;&lt;/p&gt;
&lt;p&gt;What makes a great programmer? A great programmer can listen to non-technical description of a problem or need, and can create a solid technical solution for that problem that is both maintainable and intuitive to the user base. &amp;nbsp;– Best Regards Whyld&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108317" width="1" height="1"&gt;</description></item><item><title>re: How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx#10108280</link><pubDate>Wed, 22 Dec 2010 19:07:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108280</guid><dc:creator>Alfred Thompson</dc:creator><description>&lt;p&gt;I would never say &amp;quot;Have a well thought out plan and it will always work.&amp;quot; Of course things change. And I have always taught students to write code to be modified and expanded.&lt;/p&gt;
&lt;p&gt;BTW I am not yet convinced that &amp;quot;agile&amp;quot; is not just a fancy work to justify &amp;quot;Ready, Fire, Aim&amp;quot; programming. Or programming without planning.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108280" width="1" height="1"&gt;</description></item><item><title>re: How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx#10108257</link><pubDate>Wed, 22 Dec 2010 18:32:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108257</guid><dc:creator>Ely_Bob</dc:creator><description>&lt;p&gt;I dissagree, even the best laid plans can after slight implementation need to be adjusted. And with the current trend towards test driven development and agile practices this is even more true today then it was 5 years ago.&lt;/p&gt;
&lt;p&gt;90% of my job involves going into other peoples code and fixing their wrong assumptions about how the code should work, and how it actually does work. &lt;/p&gt;
&lt;p&gt;And there are tons of things that are syntacticaly correct but result in errors that you won&amp;#39;t see until youve fired up the debugger... &lt;/p&gt;
&lt;p&gt;I agree fully with the statement which you&amp;#39;ve made light of. One of the worst things you can do as an educater is to imply to &amp;quot;fresh minds&amp;quot; that yours is the right way, or that they will not make mistakes if they plan ahead. I&amp;#39;ve been in acadamia in one way or another for over 20 years and I KNOW that there is nothing you can do as a educator to prepare a pupil for &amp;quot;the real world&amp;quot; if your using such draconian methadology as : Have a well thought out plan and it will always work... &amp;nbsp;fixing mistakes and wrong assumptions is the art...&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108257" width="1" height="1"&gt;</description></item><item><title>re: How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx#10108148</link><pubDate>Wed, 22 Dec 2010 14:36:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108148</guid><dc:creator>Alfred Thompson</dc:creator><description>&lt;p&gt;@Dave Clearly I need to desk check my writing better and not trust the tools as much. :-)&lt;/p&gt;
&lt;p&gt;@Rob Completely agree about Steve McCommell&amp;#39;s writing. I have copies on my book shelf. Just the other day I was thinking about putting together a list of must read books for professionals and teachers alike and Code Complete was first on my mind.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108148" width="1" height="1"&gt;</description></item><item><title>re: How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx#10108043</link><pubDate>Wed, 22 Dec 2010 09:45:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108043</guid><dc:creator>Rob Miles</dc:creator><description>&lt;p&gt;As someone who has written code for money I kind of understand what he is saying. And it is a fact that a good programmer can &amp;quot;code themselves out of trouble&amp;quot; if the requirements or the design are broken and the project is not that big. But this should not be the default position. For people with such a naive approach to development I have three simple words of advice:&lt;/p&gt;
&lt;p&gt;Read. Steve. McConnell.&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://www.stevemcconnell.com/"&gt;http://www.stevemcconnell.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I would not take any developer (or teacher) seriously who has not read Code Complete and Rapid Development. &amp;nbsp; &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108043" width="1" height="1"&gt;</description></item><item><title>re: How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx#10108035</link><pubDate>Wed, 22 Dec 2010 09:33:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108035</guid><dc:creator>Dave</dc:creator><description>&lt;p&gt;Not taking the p!ss, just thought this statement was funny in its irony:&lt;/p&gt;
&lt;p&gt;&amp;quot;And Intellisence goes a long long way toward helping avoid spelling errors.&amp;quot; &lt;/p&gt;
&lt;p&gt;It&amp;#39;s &amp;quot;Intellisense&amp;quot;, no? Possibly &amp;quot;IntelliSense&amp;quot; but you get the point.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108035" width="1" height="1"&gt;</description></item><item><title>re: How not to teach programming</title><link>http://blogs.msdn.com/b/alfredth/archive/2010/12/21/how-not-to-teach-programming.aspx#10107987</link><pubDate>Wed, 22 Dec 2010 07:17:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10107987</guid><dc:creator>jake</dc:creator><description>&lt;p&gt;I still code as if all i have is a notebook to jot down my code then when my turn comes, i will go type it into a jealously gaurded time-shared terminal which gives very useless error messages when it finds a bug.&lt;/p&gt;
&lt;p&gt;I paint works of art that are as error free as possible and pretend that the reviewers are ax-murderers &amp;nbsp;who know where I live. &lt;/p&gt;
&lt;p&gt;I learnt to code using Turbo C for chrisakes. That IDE was klingon and never coddled the weak. Now while I use Visual Studio and Coderush, I have never forgotten my roots and the illustrious shoulders on which I stand. NEITHER SHOULD MY STUDENTS!&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10107987" width="1" height="1"&gt;</description></item></channel></rss>