<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: Software Engineering</title>
	<atom:link href="http://illusoryfollies.com/software-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>http://illusoryfollies.com/software-engineering/</link>
	<description>Code, Technology, and Ramblings</description>
	<pubDate>Tue, 06 Jan 2009 06:07:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Bill</title>
		<link>http://illusoryfollies.com/software-engineering/comment-page-1/#comment-797</link>
		<dc:creator>Bill</dc:creator>
		<pubDate>Tue, 06 Mar 2007 02:46:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.illusoryfollies.com/2007/01/28/software-engineering/#comment-797</guid>
		<description>This is a nice looking blog Andrew!

Your compare/contrast with building a bridge is a productive one.  Designing software seems one of the toughest engineering problems, yet the science is so new (the most experienced are practically self trained), and there is so much we are still figuring out.

In the past we thought of software as I/O (inputs and outputs); essentially software engineering was considered "finding the best way to go from point A (input) to point B (output)" - i.e. the simple act of coding that Peter mentions.

Yet changing business requirements (shifting the I's and O's daily in respond to user requests, environmental changes) bring such systems to their knees; the underlying design is not robust enough to sustain those continual changes in an organized way.

For example I have a SQL programmer who makes 5 changes a week to our software and we have to go back-and-forth a half dozen times on every little tiny change he makes.  The whole thing is just a growing rat's nest of knarly scripting code with raw SQL statements embedded everywhere.  Each change is taking progressively longer as his code becomes more complicated, and as things get worse, each change is more of a disaster that takes literally weeks and months to  debug for production.

Enterprise business process software like SAP use gigantic frameworks to apply some method to the madness, but the method IS madness.  These huge systems are not so useful to mid-size companies and agencies (say less than 200M revenue) which rapidly changing environments but cannot justify armies of consultants deploying huge systems which they will underutilize dramatically.

One issue here is that designers seem to forget that needs will change. Software systems delivery is an ongoing partnership. These days there are few packaged products that do anything nontrivial without the need for constant updating and modification.

The focus needs to be on building a system that can sustain a queue of changes without exponentially growing the complexity (i.e. complexity is ke^n where n is the number of features at any given time). Maybe some of this may be done through a component model, which to day is still fraught with problems. The thing is, automobile designers are getting it more or less right. Cars seem to break down less than computers, and the same ideas apply (cars these days are filled with embedded that work together in a network).</description>
		<content:encoded><![CDATA[<p>This is a nice looking blog Andrew!</p>
<p>Your compare/contrast with building a bridge is a productive one.  Designing software seems one of the toughest engineering problems, yet the science is so new (the most experienced are practically self trained), and there is so much we are still figuring out.</p>
<p>In the past we thought of software as I/O (inputs and outputs); essentially software engineering was considered &#8220;finding the best way to go from point A (input) to point B (output)&#8221; - i.e. the simple act of coding that Peter mentions.</p>
<p>Yet changing business requirements (shifting the I&#8217;s and O&#8217;s daily in respond to user requests, environmental changes) bring such systems to their knees; the underlying design is not robust enough to sustain those continual changes in an organized way.</p>
<p>For example I have a SQL programmer who makes 5 changes a week to our software and we have to go back-and-forth a half dozen times on every little tiny change he makes.  The whole thing is just a growing rat&#8217;s nest of knarly scripting code with raw SQL statements embedded everywhere.  Each change is taking progressively longer as his code becomes more complicated, and as things get worse, each change is more of a disaster that takes literally weeks and months to  debug for production.</p>
<p>Enterprise business process software like SAP use gigantic frameworks to apply some method to the madness, but the method IS madness.  These huge systems are not so useful to mid-size companies and agencies (say less than 200M revenue) which rapidly changing environments but cannot justify armies of consultants deploying huge systems which they will underutilize dramatically.</p>
<p>One issue here is that designers seem to forget that needs will change. Software systems delivery is an ongoing partnership. These days there are few packaged products that do anything nontrivial without the need for constant updating and modification.</p>
<p>The focus needs to be on building a system that can sustain a queue of changes without exponentially growing the complexity (i.e. complexity is ke^n where n is the number of features at any given time). Maybe some of this may be done through a component model, which to day is still fraught with problems. The thing is, automobile designers are getting it more or less right. Cars seem to break down less than computers, and the same ideas apply (cars these days are filled with embedded that work together in a network).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Flanagan</title>
		<link>http://illusoryfollies.com/software-engineering/comment-page-1/#comment-762</link>
		<dc:creator>Andrew Flanagan</dc:creator>
		<pubDate>Thu, 01 Feb 2007 00:51:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.illusoryfollies.com/2007/01/28/software-engineering/#comment-762</guid>
		<description>I understood your problem! Sorry, I don't think there's any solution because they will always find ways to make things smaller and faster or bigger and better. If they weren't able to, you'd probably be out of a job. So keep up the good work, sweetie!
~SARAH~</description>
		<content:encoded><![CDATA[<p>I understood your problem! Sorry, I don&#8217;t think there&#8217;s any solution because they will always find ways to make things smaller and faster or bigger and better. If they weren&#8217;t able to, you&#8217;d probably be out of a job. So keep up the good work, sweetie!<br />
~SARAH~</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter</title>
		<link>http://illusoryfollies.com/software-engineering/comment-page-1/#comment-758</link>
		<dc:creator>Peter</dc:creator>
		<pubDate>Tue, 30 Jan 2007 01:04:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.illusoryfollies.com/2007/01/28/software-engineering/#comment-758</guid>
		<description>"In software, we don’t really have a set of rules."

Very shades-of-The-Matrix ...

It seems to me that people fail to realize that software is function and performance, not structure.

An application is not a bridge.  It is a way, a method, a process, but old school managers treat them like buildings.

The key - it would seem - is to recognize the nature of the beast.

Software engineering is more like exploring than like laying brick and mortar.  It is engineering, not construction.  It is invention, not manufacture.

Most of all, it is creative, not rote.

That is to say, it is those things at its core.

The rest is coding.  That part is essentially building a bridge.  You can plan that part roughly the same way.  Can you hit a snag in the coding? Of course ... same as you can hit a snag driving piles for your bridge.  Can there be defects in the final product?  Of course - people make mistakes.

That's only part of the answer, though.

Software "works" by display - by revelation - by illustration.  If information comes out, software is working.  If the right information comes out, the software is working properly.  In that sense, sofware implementation is more like medicine - only medicine performed on something unintelligently (by comparison) designed.

Ah well - enough ramblings for a reply, eh.

Keep up the good work!</description>
		<content:encoded><![CDATA[<p>&#8220;In software, we don’t really have a set of rules.&#8221;</p>
<p>Very shades-of-The-Matrix &#8230;</p>
<p>It seems to me that people fail to realize that software is function and performance, not structure.</p>
<p>An application is not a bridge.  It is a way, a method, a process, but old school managers treat them like buildings.</p>
<p>The key - it would seem - is to recognize the nature of the beast.</p>
<p>Software engineering is more like exploring than like laying brick and mortar.  It is engineering, not construction.  It is invention, not manufacture.</p>
<p>Most of all, it is creative, not rote.</p>
<p>That is to say, it is those things at its core.</p>
<p>The rest is coding.  That part is essentially building a bridge.  You can plan that part roughly the same way.  Can you hit a snag in the coding? Of course &#8230; same as you can hit a snag driving piles for your bridge.  Can there be defects in the final product?  Of course - people make mistakes.</p>
<p>That&#8217;s only part of the answer, though.</p>
<p>Software &#8220;works&#8221; by display - by revelation - by illustration.  If information comes out, software is working.  If the right information comes out, the software is working properly.  In that sense, sofware implementation is more like medicine - only medicine performed on something unintelligently (by comparison) designed.</p>
<p>Ah well - enough ramblings for a reply, eh.</p>
<p>Keep up the good work!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
