<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Confessions of a Dumb Programmer</title>
	<atom:link href="http://mark.santaniello.com/archives/51/feed" rel="self" type="application/rss+xml" />
	<link>http://mark.santaniello.com/archives/51</link>
	<description>the body of a very slow loop</description>
	<pubDate>Fri, 09 Jan 2009 13:13:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Jonathan Gilbert</title>
		<link>http://mark.santaniello.com/archives/51#comment-25411</link>
		<dc:creator>Jonathan Gilbert</dc:creator>
		<pubDate>Tue, 27 Mar 2007 18:30:37 +0000</pubDate>
		<guid isPermaLink="false">http://mark.santaniello.net/?p=51#comment-25411</guid>
		<description>Different people mean different things when they say "Software Engineering", but I'd just like to state my strong opinion that the use of gray matter and tools does not constitute software engineering.

* good design 

..should be obvious (but isn't, in my experience). At least for me, designing things well is mostly a matter of common sense. Does that make me an engineer?

* comments 

..are a necessity even when you're the only person on a project. One also needs to know when not to add comments, of course -- there is an ideal level of commenting, and if it is exceeded, readability goes back down. Again, all that's needed is a brain capable of looking forward and saying, "If I hadn't written this, would I understand it? Will I understand it a year from now when I have only half as many active brain cells?" Perhaps this is a form of engineering, but I'm not convinced.

* automation &#38; unit testing 

This depends on how far you take it. Certainly, if you start following prescribed formulas for doing it, you are committing the crime of software engineering. You will probably also end up with subpar tests. The best tests come from a) identifying boundary cases with your brain, and b) collecting actual problems that occur in the Real World and specifically testing that they do not recur.

* refactoring 
* pair programming

Okay, I'll give you these. Anything beyond renaming of symbols and factoring code into new methods is verging into the territory of patterns and rules, and that most definitely is software engineering.

It's also hard to argue that pair programming isn't part of software engineering. Where I work, we do not use pair programming, but I find I can get a similar effect by allowing changes I make to build up for a few days and then going through the compiled differences from the base copy I started with. I frequently spot small errors and correct them before actually checking in the code. Heck, sometimes I even spot big structural errors. I think this works because the original patterns and assumptions in my brain at the time I wrote the code have had a chance to be displaced by other thoughts, so I'm looking at the changes with fresh eyes. Does self-review count as software engineering?

* source control

..is just a tool. This is like calling a person who can make effective use of a tool shed a mechanical engineer.

* well-named modules, files, classes, functions, variables, etc 

This goes in with "good design" and is mostly a matter of using the brain for a bit before one starts typing. :-)</description>
		<content:encoded><![CDATA[<p>Different people mean different things when they say &#8220;Software Engineering&#8221;, but I&#8217;d just like to state my strong opinion that the use of gray matter and tools does not constitute software engineering.</p>
<p>* good design </p>
<p>..should be obvious (but isn&#8217;t, in my experience). At least for me, designing things well is mostly a matter of common sense. Does that make me an engineer?</p>
<p>* comments </p>
<p>..are a necessity even when you&#8217;re the only person on a project. One also needs to know when not to add comments, of course &#8212; there is an ideal level of commenting, and if it is exceeded, readability goes back down. Again, all that&#8217;s needed is a brain capable of looking forward and saying, &#8220;If I hadn&#8217;t written this, would I understand it? Will I understand it a year from now when I have only half as many active brain cells?&#8221; Perhaps this is a form of engineering, but I&#8217;m not convinced.</p>
<p>* automation &amp; unit testing </p>
<p>This depends on how far you take it. Certainly, if you start following prescribed formulas for doing it, you are committing the crime of software engineering. You will probably also end up with subpar tests. The best tests come from a) identifying boundary cases with your brain, and b) collecting actual problems that occur in the Real World and specifically testing that they do not recur.</p>
<p>* refactoring<br />
* pair programming</p>
<p>Okay, I&#8217;ll give you these. Anything beyond renaming of symbols and factoring code into new methods is verging into the territory of patterns and rules, and that most definitely is software engineering.</p>
<p>It&#8217;s also hard to argue that pair programming isn&#8217;t part of software engineering. Where I work, we do not use pair programming, but I find I can get a similar effect by allowing changes I make to build up for a few days and then going through the compiled differences from the base copy I started with. I frequently spot small errors and correct them before actually checking in the code. Heck, sometimes I even spot big structural errors. I think this works because the original patterns and assumptions in my brain at the time I wrote the code have had a chance to be displaced by other thoughts, so I&#8217;m looking at the changes with fresh eyes. Does self-review count as software engineering?</p>
<p>* source control</p>
<p>..is just a tool. This is like calling a person who can make effective use of a tool shed a mechanical engineer.</p>
<p>* well-named modules, files, classes, functions, variables, etc </p>
<p>This goes in with &#8220;good design&#8221; and is mostly a matter of using the brain for a bit before one starts typing. :-)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
