<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3105933451546957641</id><updated>2024-08-28T17:58:14.829-07:00</updated><category term="software development"/><category term="programming"/><category term="coding"/><category term="software documentation"/><category term="software engineering"/><category term="Jeff Attwood"/><category term="Joel Spolsky"/><category term="StackOverflow.com"/><category term="best practices"/><category term="bing"/><category term="depression"/><category term="design"/><category term="economics"/><category term="great depression"/><category term="live search"/><category term="microsoft"/><category term="mish blog"/><category term="recession"/><category term="requirements"/><category term="science art emotions software development programming mona lisa"/><category term="search"/><category term="software engineering software documentation"/><category term="software maintenance"/><category term="software start-up"/><title type='text'>Looking at Software</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-8455219168896729433</id><published>2015-02-03T19:26:00.001-08:00</published><updated>2015-02-03T19:26:06.505-08:00</updated><title type='text'>Finding an Accidental Cross Join in an Oracle Query</title><content type='html'>Ever work on a query that joins multiple Oracle tables and one of them is cross joining on multiple rows resulting in multiple identical data rows in your output? &amp;nbsp;Ever sit wondering like me which which table is at fault? Found a neat way to figure that out without having to actually think.&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We start with something like this:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
SELECT&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; list_of_fields&lt;/div&gt;
&lt;div&gt;
FROM&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; table_a &amp;nbsp;a,&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; table_b &amp;nbsp;b,&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; table_c &amp;nbsp;c,&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; table_d &amp;nbsp;d&lt;/div&gt;
&lt;div&gt;
WHERE&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; blah, blah, blah&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Just add this to your list of fields:&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;a.rowid &quot;A&quot;,&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;b.rowid &quot;B&quot;,&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;c.rowid &quot;C&quot;,&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;d.rowid &quot;D&quot; &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
(You don&#39;t have the &quot;A&quot;, &quot;B&quot;, &quot;C&quot; and &quot;D&quot; if you&#39;d rather let all the columns be called &quot;rowid&quot; and count column positions--which is what I actually did.)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The output looks like gibberish, but on at least one of the columns the rowid will have at least one character different from the previous row within the same set of &quot;identical&quot; rows. That&#39;s the table at fault.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Best wishes!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/8455219168896729433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2015/02/finding-accidental-cross-join-in-oracle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/8455219168896729433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/8455219168896729433'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2015/02/finding-accidental-cross-join-in-oracle.html' title='Finding an Accidental Cross Join in an Oracle Query'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-4488752503675637927</id><published>2010-12-26T07:43:00.000-08:00</published><updated>2010-12-26T08:05:02.374-08:00</updated><title type='text'>The Failure of Large Business Applications</title><content type='html'>There was once a day when do-it-yourself software ruled. Companies hired scores of programmers to create COBOL applications that drove the business cycle.  Then along came the software vendor who promised massive savings by splitting development costs across multiple businesses.  The argument made sense so it wasn&#39;t long before in house applications were being replaced by purchased applications.  The teams of in-house programmers were released as companies looked forward to large software savings.&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But the costs continued to rise. . .  and rise. . .  and rise. . .&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Those teams of in-house programmers were replaced by armies of contractors and off-shore developers who customized, tweaked and upgraded  the newly purchased applications.  To put it bluntly business applications have been an IT disaster.  It is not hard to see why.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fact: Software vendors make money on initial sales&lt;/div&gt;&lt;div&gt;Result: Initial sales are driven by the addition of new features.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fact: Software vendors make lots of  money on support&lt;/div&gt;&lt;div&gt;Result: Upgrades justify support&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fact: Supporting multiple versions costs money&lt;/div&gt;&lt;div&gt;Result: Only the most recent versions are supported&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Overall Result:  Businesses are forced into an upgrade cycle that only benefits the software vendor and costs businesses enormous amounts of money.  While initial acquisition costs have dropped the  total cost of ownership has spiraled out of control.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I believe there are solutions--which I will address in an upcoming post.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;to&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/4488752503675637927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2010/12/failure-of-large-business-applications.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/4488752503675637927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/4488752503675637927'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2010/12/failure-of-large-business-applications.html' title='The Failure of Large Business Applications'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-2080766574134647329</id><published>2010-12-02T16:50:00.000-08:00</published><updated>2015-02-08T19:23:19.554-08:00</updated><title type='text'>Is a Software Launch Like a Rocket Launch?</title><content type='html'>&lt;div&gt;
&lt;/div&gt;
The minutes and hours leading up to the launch aren&#39;t very  impressive.  The rocket is slowly put into place.  Equipment is checked and rechecked. Then all at once with a shuddering roar it happens.&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Launching software systems can be very similar.  First, good software requires detailed preparation.  All possible scenarios must be examined , evaluated, implemented and tested.  Secondly, regardless of the preparation when the rockets are ignited you never know exactly what&#39;s going to happen.  Pieces shake loose, sometimes rockets even explode.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the end the success of any kind of launch is based on the stability of the design and the preparation that went into it.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/2080766574134647329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2010/12/is-software-launch-like-rocket-launch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/2080766574134647329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/2080766574134647329'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2010/12/is-software-launch-like-rocket-launch.html' title='Is a Software Launch Like a Rocket Launch?'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-5240941374748967243</id><published>2010-01-04T18:12:00.000-08:00</published><updated>2010-01-04T18:34:49.218-08:00</updated><title type='text'>It&#39;s Not My Documentation</title><content type='html'>Almost every software developer knows it&#39;s good to document their software.&lt;br /&gt;&lt;div&gt;Almost every software developer doesn&#39;t.&lt;/div&gt;&lt;div&gt;Almost every software developer is smart.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Therefore, it is smart not to document software!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I say that partly in jest, but  I really do think software developers are just not ideal at writing documentation. It&#39;s not that we&#39;re bad at writing. Most developers I&#39;ve known are actually pretty good writers. The real reason software developers make such poor documenters is we generally don&#39;t know how to think like our audience.  Writing documentation is like writing code--understanding the needs of the end user is critical. Our technical training simply doesn&#39;t prepare us to do well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I&#39;ve never tried this, but it seems that an ad-hoc team made up of a documentation consumer (at the keyboard) and a programmer (to provide information) would make a powerful combination.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/5240941374748967243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2010/01/its-not-my-documentation.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/5240941374748967243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/5240941374748967243'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2010/01/its-not-my-documentation.html' title='It&#39;s Not My Documentation'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-3642874125322518924</id><published>2009-12-02T16:15:00.000-08:00</published><updated>2009-12-02T16:49:33.555-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="requirements"/><category scheme="http://www.blogger.com/atom/ns#" term="software development"/><title type='text'>The Critical Moment in Software Design</title><content type='html'>Imagine yourself in a meeting with a user (or group of users) discussing requirements for a new software feature.  At some point--usually about 15 minutes into the discussion--the following phrase almost always comes up:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&quot;But that doesn&#39;t happen very often.&quot;  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It&#39;s often said with an awkward expression or laugh.  This is the critical moment. Behind those non-committal words the user is really thinking--&quot;These are details. This is my world. Does this geek care about my world?  No, of course not.&quot;  Of course behind our geeky glasses and awkward social graces we care a great deal about the user&#39;s world.  The detail of the user&#39;s world is critical.  Without detail there can be no accurate design.  If the design is flawed then everything else will be broken too. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; My response is typically like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &quot;Often it&#39;s those things that don&#39;t happen very often that cause the most trouble. If you don&#39;t mind let&#39;s dig into this a bit more?&quot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have never talked to anyone who was&#39;t thrilled to go into great detail once they felt that they had &quot;permission&quot; to get into the details.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/3642874125322518924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/12/critical-moment-in-software-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/3642874125322518924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/3642874125322518924'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/12/critical-moment-in-software-design.html' title='The Critical Moment in Software Design'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-411067623134220138</id><published>2009-11-22T06:51:00.000-08:00</published><updated>2009-11-22T17:57:32.186-08:00</updated><title type='text'>The Missing Peice of Design</title><content type='html'>&lt;div&gt;We&#39;ve know for years that defects are easier (and cheaper) to fix during requirements and design than during coding and test.  Yet that knowledge doesn&#39;t seem to reduce the number of requirements and design defects .&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What&#39;s particularly weird is that all other factors being equal most &quot;lets do it&quot;(1) projects that I&#39;ve observed turn out to have significantly fewer requirement and design defects than projects with heavy investments in design.(2)  Until now I haven&#39;t understood why.  In a Eureka moment late last week I finally realized why.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The key is that design does not come from reality. Design comes from a mental model of the world.  Like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixhXRnwfhNF3WRfRq32Dy-J-f6v3bs2EG03Az1KEwXqvUzAoKquQLfmd18d-IB2EUR6g85FXEMbDHCpZryzpZYfqk0snPdXwIHHeHoH8x7QseQUBa8Piu1cav47lG-PRx4Ox33VI_i5Pvp/s1600/reality_design.JPG&quot;&gt;&lt;img style=&quot;text-align: left;float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 10px; cursor: pointer; width: 400px; height: 64px; &quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixhXRnwfhNF3WRfRq32Dy-J-f6v3bs2EG03Az1KEwXqvUzAoKquQLfmd18d-IB2EUR6g85FXEMbDHCpZryzpZYfqk0snPdXwIHHeHoH8x7QseQUBa8Piu1cav47lG-PRx4Ox33VI_i5Pvp/s400/reality_design.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5406941407581929218&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Requirements and design problems are almost always are rooted in the disconnect between the mental model and reality.  It makes logical sense. Designers are almost always smart, dedicated and detailed.  Once a piece of information has become part of a designer&#39;s mental model it is unlikely that it will be forgotten or corrupted between the model and the design.  The more time a careful designer spends polishing and refining the design the less time they have to develop and verify their mental model. Thus the very thing--careful preparation--that is suppose to reduce risk actually increases it!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course modern software developers don&#39;t (I hope) follow the  simplified model above. Instead we follow an iterative model.  Here is the classic &lt;a href=&quot;http://en.wikipedia.org/wiki/Spiral_model&quot;&gt;Boehm model from 1988.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzfObC_7fBxKkt6Mj_-oQZHOx5TTwrGqGkd-6ZrYLBADZz2qIQnj2bVdMVAmvO_U-xnUlfOTASuE4qAgBieAvKZpvI48yoq0-UvLE3WoK8w0mlwJjlSfeg9CdDic3gsZ9CAA06Jq0jwxOi/s1600/Spiral_model_(Boehm,_1988).png&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 329px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzfObC_7fBxKkt6Mj_-oQZHOx5TTwrGqGkd-6ZrYLBADZz2qIQnj2bVdMVAmvO_U-xnUlfOTASuE4qAgBieAvKZpvI48yoq0-UvLE3WoK8w0mlwJjlSfeg9CdDic3gsZ9CAA06Jq0jwxOi/s400/Spiral_model_(Boehm,_1988).png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5406951014444023986&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem with this model is it doesn&#39;t reflect the disconnect between reality and design. Instead I propose the following:&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2F0-5zrTNhDCQUuVv9cFTEBMJ2v-osURD4KqZaJN7XHEuYen7khyzW_8zkuDkLZQGpa22p6z4s0kVlrpXbnA3UhaCGb_jc9X7rToyrU88sl7gn20jh3RdywUKfWOmQyKAzJTSqfEo9ARA/s1600/reality_design_circle.JPG&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 376px; height: 400px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2F0-5zrTNhDCQUuVv9cFTEBMJ2v-osURD4KqZaJN7XHEuYen7khyzW_8zkuDkLZQGpa22p6z4s0kVlrpXbnA3UhaCGb_jc9X7rToyrU88sl7gn20jh3RdywUKfWOmQyKAzJTSqfEo9ARA/s400/reality_design_circle.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5406941332751295938&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If the mental model is close to reality projects will slide cleanly into stage 4.  If not, there is a jarring bump as the design crashes into reality. If your design crashes, watch out.  It will be tempting to slap a patch in place and move into the next iteration. Don&#39;t. Stop and re-calibrate. Scrap the entire previous iteration if you must.  In the end it will be a lot cheaper than working around a flawed design for the life of the software.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;----------------------------------&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) By &quot;Let&#39;s Do It&quot; I don&#39;t mean unplanned, I just mean less formal.&lt;/div&gt;&lt;div&gt;2) This may sound suspiciously like a argument for the Agile development process and perhaps it is. I&#39;ve never worked in an Agile environment so I can&#39;t say.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/411067623134220138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/11/missing-peice-of-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/411067623134220138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/411067623134220138'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/11/missing-peice-of-design.html' title='The Missing Peice of Design'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixhXRnwfhNF3WRfRq32Dy-J-f6v3bs2EG03Az1KEwXqvUzAoKquQLfmd18d-IB2EUR6g85FXEMbDHCpZryzpZYfqk0snPdXwIHHeHoH8x7QseQUBa8Piu1cav47lG-PRx4Ox33VI_i5Pvp/s72-c/reality_design.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-848009903783320480</id><published>2009-08-16T18:25:00.000-07:00</published><updated>2009-08-16T18:44:10.608-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="software documentation"/><title type='text'>Who Should Write the Docs?</title><content type='html'>&lt;b&gt;User Documentation:&lt;/b&gt;  It&#39;s tempting to hire an unemployed English major so that the writing is good.  But the point of documentation is not good writing, it&#39;s &lt;b&gt;useful &lt;/b&gt;writing. So skip on the writing expert and pick a system user.  Someone who &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;actually&lt;/span&gt; knows the pitfalls of the software in a real work environment will create a much more interesting and useful product.  (Maybe hire the English major as an editor)&lt;div&gt;&lt;b&gt;In Line Code Comments:&lt;/b&gt;  I&#39;m amazed at how many developers don&#39;t comment their code.  I&#39;m not talking about /* Start of loop */ -- oh duh.  I could see that in the code.  That kind of comment is stupid.  What I am talking about is /* this logic is more complex, but it handles leap year where other alternatives don&#39;t */.  In 5 years what would I need to know about this code?  Document that.  We need to demand of ourselves and our peers that &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;undocumented&lt;/span&gt; code is unfinished code.&lt;/div&gt;&lt;div&gt;&lt;b&gt;Compilation/Configuration Comments: &lt;/b&gt; For small shops with limited resources this is critical.  Either the developer or whoever is in charge of deployment has to document this stuff.  It&#39;s not fun. It simply must be a discipline.&lt;/div&gt;&lt;div&gt;&lt;b&gt;Design Documents and Other Construction Artifacts:&lt;/b&gt;  Nobody.  No, I don&#39;t really mean that.  But, as a general rule it seems that too high of a percentage of documentation time is spent generating documents that are useful for only a brief period during the early construction phases.  These &quot;big picture&quot; documents are important.  But there also needs to be detailed technical documentation describing the finished system.  That step is so often left out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Wiki, wiki, wiki:&lt;/b&gt;  A document is never finished.  Make it easy to update.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/848009903783320480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/08/who-should-write-docs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/848009903783320480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/848009903783320480'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/08/who-should-write-docs.html' title='Who Should Write the Docs?'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-2145960753271333749</id><published>2009-08-10T18:20:00.000-07:00</published><updated>2009-08-10T18:24:51.341-07:00</updated><title type='text'>Congressional Website Overloaded</title><content type='html'>I just wrote my Congressman and www.house.gov was reacting VERY slowly. Must be a ton of people sounding off about health care.  I wonder what the numbers look like. Must be huge.  Probably a big ugly security layer eating up 3/4 of the CPUs.</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/2145960753271333749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/08/congressional-website-overloaded.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/2145960753271333749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/2145960753271333749'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/08/congressional-website-overloaded.html' title='Congressional Website Overloaded'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-759039951613634562</id><published>2009-08-09T11:07:00.000-07:00</published><updated>2009-08-09T12:30:16.216-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="best practices"/><category scheme="http://www.blogger.com/atom/ns#" term="software engineering software documentation"/><title type='text'>Why We Don&#39;t Document our Software</title><content type='html'>&lt;div&gt;It starts with a phone call, frantic email, instant message, or personal visit.  System X is down. The programmer for system X left the company 5 years ago and nobody has touched it since.  If it doesn&#39;t get fixed soon the widgets will start sprouting legs and marching on IT.  They&#39;ll be torching the place shortly if you can&#39;t fix it fast!  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quick, where&#39;s the docs?  Um. . . &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;                                 &quot;this space left intentionally blank&quot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yeah, it really stinks.  If it hasn&#39;t happend to you yet, just wait, it will.  It&#39;s ironic since as a software developer I&#39;m proud to work in a very rational field. Software Engineering is one of (if not the) most logical profession in the world. You would think we wouldn&#39;t allow this kind of chaos to happen.  But we do.  All the time.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Because we are so logical the fact that we rarely document our work therefore can not be &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;perceived&lt;/span&gt; as illogical.  As noted in a &lt;a href=&quot;http://lookatsoftware.blogspot.com/2009/08/why-dont-we-document-our-software-part.html&quot;&gt;previous&lt;/a&gt; post common excuses such as: poor writing skills, too busy, etc, don&#39;t stand up under scrutiny. There must be a rational, logical explaination.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In economics they teach a principle called &quot;&lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;opportunity&lt;/span&gt; cost&quot;.  Whenever a choice is made there are always other options that are excluded.  For example, during the years I studied software engineering I &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;simultaneously&lt;/span&gt; lost &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;opportunities&lt;/span&gt; to study other subjects.  More &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;pertinently&lt;/span&gt;, the hours spent writing documentation are not spent writing code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Software Engineers are hired to write code&lt;/b&gt;. The flashier, cooler and showier the better. Writing documents may earn a polite &quot;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;atta boy&lt;/span&gt;&quot; from the boss (followed by &quot;how&#39;s project X coming along&quot;). The only way to earn real kudos is to deploy code or rescue the company from a dire emergency. (The irony is that many of these dire emergencies are created by undocumenttion.) From time to time we may out of guilt write some docs, but inevidably we gravitate towards the rewards, leaving behind a wake of &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;sparsely&lt;/span&gt; documented systems. What is unusual is not the lack of documentation, but the documentation that does exist.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The solution is breathtakingly simple: treat documentation as the equal of coding.  The open source community has already illustrated that this can be done.  Since I haven&#39;t been a part of an open source team I can&#39;t verify this personally, but from an external view I see some factors at work that I don&#39;t see in software for hire.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;the documentation develops in parallel with the code&lt;/li&gt;&lt;li&gt;documentaiton authors are rewarded equally with code authors (in non-material ways)&lt;/li&gt;&lt;li&gt;the documentation is highly visible to the people handing out the rewards&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;If we can find ways to implement these concepts inside software for hire shops my bet is that poor documentation will become a thing of the past.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;P.s. Anyone out there already doing good documentation I&#39;d like to hear some suggestions.  Pleas post a comment.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/759039951613634562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/08/why-we-dont-document-our-software.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/759039951613634562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/759039951613634562'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/08/why-we-dont-document-our-software.html' title='Why We Don&#39;t Document our Software'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-6838262796711146287</id><published>2009-08-06T18:28:00.000-07:00</published><updated>2009-08-06T19:41:59.667-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="depression"/><category scheme="http://www.blogger.com/atom/ns#" term="economics"/><category scheme="http://www.blogger.com/atom/ns#" term="great depression"/><category scheme="http://www.blogger.com/atom/ns#" term="mish blog"/><category scheme="http://www.blogger.com/atom/ns#" term="recession"/><title type='text'>Response to The World’s Economic Problems are Like 2 Cross-Wired Thermostats</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color: rgb(17, 17, 17);  line-height: 22px; font-size:14px;&quot;&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.571em; margin-left: 0px; &quot;&gt;Recently one of my favorite &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;bloggers&lt;/span&gt; &lt;span class=&quot;Apple-style-span&quot;  style=&quot; line-height: 18px; font-size:13px;&quot;&gt;&lt;a href=&quot;http://www.makingitclear.com/aboutme.html&quot;&gt;Harwell Thrasher&lt;/a&gt; posted an interesting (and well written) &lt;a href=&quot;http://blog.makingitclear.com/2009/08/05/thermostat/&quot;&gt;article &lt;/a&gt;on economics.  Unfortunately, many of the &lt;span class=&quot;Apple-style-span&quot;  style=&quot; line-height: 22px; font-size:14px;&quot;&gt;basic assumptions underlying the article are deeply flawed.  Since these assumptions are generally believed by the majority of educated Americans I decided to &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;dubunk&lt;/span&gt; them here in my blog.  For many years I believe these myths too, so by no means am I degrading the great work Harwell does in his blog.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.571em; margin-left: 0px; &quot;&gt;First, there is an implicit assumption that money is a constant scale–-similar to a temperature scale. The exact opposite is true. Money is a commodity with a value that varies greatly over time and place. There are countless examples—a lunch that costs $1 in El Salvador may cost $5 in Tennessee and $10 in New York City.  More &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;pertinant&lt;/span&gt; to the economic discussion a dollar spent on housing in some markets will buy twice as much house as it did a couple years ago.   In general, during recessions the value of money increases dramatically.  That increase in value is what triggers &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;entrepenurial&lt;/span&gt; activity and re-ignites consumer spending.  (i.e. &quot;Wow, this is cheap--I&#39;ll buy it.&quot;   As more sellers and buyers move into the markets the economy recovers.)   &lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.571em; margin-left: 0px; &quot;&gt;The increase in the value of money has a secondary effect of triggering a round of &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;bankrupcies&lt;/span&gt;.  (It&#39;s harder to pay off debts with increasingly valuable money.)  Popular opinion labels &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;bankrupcy&lt;/span&gt; as a bad thing.  It is to the person going bankrupt.  But for society at large &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;bankrupcy&lt;/span&gt; is generally a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;possitive&lt;/span&gt;.  It removes assets from (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;mis&lt;/span&gt;)management that ran it into debt (generally an indicator of future losses) and transfers those assets into the hands of managers who have money to invest (generally an indicator of future success).   This reshuffling of wealth into the most capable hands helps lay the groundwork for recovery. &lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.571em; margin-left: 0px; &quot;&gt;Second, there is an assumption that recessions/depressions do not end without government intervention. Historically the opposite is true. Recessions/depressions are self correcting.  (Of which there are &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;numberous&lt;/span&gt; examples--three in my lifetime alone and I&#39;m not that old)  The only time a recession won&#39;t self correct is when government intervenes. Most notoriously Japan’s Lost Decades and our Great Depression. Unfortunately, the Great Depression is so deeply impressed in our collective oral history as a unique event that we don&#39;t realize it was simply an ordinary recession that wasn&#39;t allowed to self correct.&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.571em; margin-left: 0px; &quot;&gt;Third, there is an assumption that recessions are financial events. The cause is actually a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;misallocation&lt;/span&gt; of labor. This &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;misallocation&lt;/span&gt; is typically created by a credit bubble that draws resources away from productive activities into pseudo-productive activities. (Usually good activities, but WAY too much of them.)  The solution is to reallocate the unnecessary bankers, construction workers and auto workers into productive activity.&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.571em; margin-left: 0px; &quot;&gt;The only government solution that might work is education/retraining.  The other common government solutions all work directly against the steps needed to recover. Bailouts attempt to keep &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;misallocated&lt;/span&gt; workers &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;misallocated&lt;/span&gt;. Temporary diversions like building bridges to nowhere and crushing cars are only marginally better since they divert labor into temporary (and wasteful) activities rather than into permanent productive employment. Quantitative easing (printing money) is probably the worst government solution of all.  As noted above a deflationary phase is critical to generating a recovery. To the extent that the Fed/Treasury succeed in preventing deflation they prevent recovery. Other financial controls like minimum price and wage controls have the same dampening effect since they prevent entrepreneurial activity from taking root.&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.571em; margin-left: 0px; &quot;&gt;From a political perspective the efforts of the Bush and Obama administrations (the short-term economic policies have been similar in both administrations) have been brilliant. However, the economic effect of these policies (if continued) will result in years of prolonged recession. (1)&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.571em; margin-left: 0px; &quot;&gt;It’s frustrating to see this happening and know that the 99.9% of American’s are simply not economically educated enough to understand the mechanisms of what is taking place.  My only hope is that we will become frustrated enough that we’ll kick out the current leadership team in Washington (Democrats and Republicans) and bring in a new crowd.&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.571em; margin-left: 0px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.571em; margin-left: 0px; &quot;&gt;1) I have to give credit to &lt;a href=&quot;http://globaleconomicanalysis.blogspot.com/&quot;&gt;Michael &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_14&quot;&gt;Shedlock&lt;/span&gt; &lt;/a&gt;for introducing me to the concept of an &quot;L&quot; shaped recession--a crash followed by a generally weak economy that doesn&#39;t recover.  His blog is well worth following.&lt;/p&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/6838262796711146287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/08/response-to-worlds-economic-problems.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/6838262796711146287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/6838262796711146287'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/08/response-to-worlds-economic-problems.html' title='Response to The World’s Economic Problems are Like 2 Cross-Wired Thermostats'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-1872169152770645400</id><published>2009-08-04T05:22:00.000-07:00</published><updated>2009-08-04T05:49:05.527-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="software development"/><category scheme="http://www.blogger.com/atom/ns#" term="software documentation"/><title type='text'>Why Don&#39;t We Document Our Software?  Part 1: False Excuses</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;  style=&quot; ;font-family:&#39;Times New Roman&#39;;&quot;&gt;&lt;div style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; &quot;&gt;&lt;div&gt;Quick what&#39;s the right answer:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;a) We&#39;re bad writers&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;b) We don&#39;t like to write&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;c) We are too busy&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;d) All o the above&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OK, trick question. The answer is:  e) none of the above.  Here is why:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;a) Most software developers have at least a bachelor&#39;s degree from a liberal arts school. As a general rule we have at least as much training as the biology major writing the user documentation. Often we have more. Software developers write blizzards of email and fill up message boards with numerous comments. We can write.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;b) If this were true why are so many open source projects some of the best documented systems out there? When programmers develop &quot;for fun&quot; we write documentation. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;c) There is a &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;kernel&lt;/span&gt; of truth in this. Everyone is busy. But the truth is we find time to do what&#39;s important to us (and our managers).  Documentation just isn&#39;t.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In my next post I&#39;ll examine the real reasons we don&#39;t document our software systems.&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/1872169152770645400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/08/why-dont-we-document-our-software-part.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/1872169152770645400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/1872169152770645400'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/08/why-dont-we-document-our-software-part.html' title='Why Don&#39;t We Document Our Software?  Part 1: False Excuses'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-6158133382558038512</id><published>2009-07-21T05:23:00.000-07:00</published><updated>2009-07-21T05:39:14.930-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="science art emotions software development programming mona lisa"/><title type='text'>Science and Art in Software Development</title><content type='html'>&lt;div&gt;Art is best appreciated emotionally.  Science logically.  The subject matter however can easily overlap. I can stare at the Mona Lisa&#39;s enigmatic smile or I can study 16th century clothing styles--all in the same painting.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Mona_Lisa&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 212px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhacmhu2ULCkWdpa4Lg3eWNyh2pW18EN2kApATSzPeyzKCPGoWC5so0pTIxdkA0mPK09pEVN_INGJgNjtr6yOtOIWAtyji0VNcy9heEc3wLQkpzsVV8Zl4194UTKnjhcQKNLZvSzOTnjnyr/s320/250px-Mona_Lisa.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5360888059687070434&quot; /&gt;&lt;/a&gt;Software development contains the same split personality. I beleive the best software developers understand when and where to apply both logic and emotionality.  It&#39;s not unusual for me to be working on a problem and &quot;feel&quot; about it in a certain way long before my logical mind catches up.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Generally, those feelings are right.  However--while emotions tend to form more quickly than logic. they also tend to be more extreme.  Logic is required for proper balance.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Historically, the general public has seen programmers as all logic and no emotions.  I&#39;m not sure that&#39;s really true. I think our field is filled with emotional people, they are just emotional about topics that the public doesn&#39;t understand. Go .Net, Java Stinks!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(Feel the emotion?)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/6158133382558038512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/07/science-and-art-in-software-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/6158133382558038512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/6158133382558038512'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/07/science-and-art-in-software-development.html' title='Science and Art in Software Development'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhacmhu2ULCkWdpa4Lg3eWNyh2pW18EN2kApATSzPeyzKCPGoWC5so0pTIxdkA0mPK09pEVN_INGJgNjtr6yOtOIWAtyji0VNcy9heEc3wLQkpzsVV8Zl4194UTKnjhcQKNLZvSzOTnjnyr/s72-c/250px-Mona_Lisa.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-3051531041061467905</id><published>2009-07-09T09:08:00.000-07:00</published><updated>2009-07-09T09:11:14.526-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coding"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="software development"/><category scheme="http://www.blogger.com/atom/ns#" term="software engineering"/><category scheme="http://www.blogger.com/atom/ns#" term="software maintenance"/><title type='text'>My Code or Someone Else&#39;s Code?</title><content type='html'>&lt;div&gt;&lt;div&gt;Most software developers if given the choice of maintaining their own code or someone else&#39;s code, will choose their own.  That&#39;s unfortunate. Editing other people&#39;s code is one of the best things that can happen to a developer. It&#39;s a great way to see what works and what doesn&#39;t. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Especially early in a career it&#39;s not always obvious what practices are best. Fixing problems in ten year old code is very revealing. My own coding style has become simple, spartan, structured and well documented.  I didn&#39;t code that way in school or early in my career.  I learned it as result of many, many hours of maintenance coding.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Working in someone else&#39;s code base is also good for the code.  As I noted in my previous post, hacking in new code can be a very destructive process. When editing my own code it&#39;s very tempting to hack new features because I know where all the easy attachment points are.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It&#39;s not nearly as easy to hack in someone else&#39;s code without risking nasty side-effects.  That forces a full re-evaluation of the code and often significant restructuring.  The result is that the code ends up containing the best of both developers.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/3051531041061467905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/07/my-code-or-someone-elses-code.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/3051531041061467905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/3051531041061467905'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/07/my-code-or-someone-elses-code.html' title='My Code or Someone Else&#39;s Code?'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-4957217104933779179</id><published>2009-07-07T21:58:00.000-07:00</published><updated>2009-07-08T10:18:23.445-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coding"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="software development"/><category scheme="http://www.blogger.com/atom/ns#" term="software engineering"/><title type='text'>Coding is Bad For Your Code</title><content type='html'>&lt;div&gt;&lt;div&gt;There is nothing as destructive to a computer program as a good day of coding. An afternoon can wipe away a week&#39;s supply of simplicity and clarity.  Gone are the clearly defined functions with well commented logic. In it&#39;s place is mess of IF and WHILE logic addressing all those special cases that didn&#39;t come up in the initial design.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We all know we &quot;should&quot; refactor.  But the clock is a remorseless taskmaster. It&#39;s so easy to just hack in the feature we need and &quot;design it better next time&quot;.  Of course, there is no next time.  Only now. There is no &quot;design once, write once&quot;.  Only design and re-design.  Code by design, or hack without one--there is no middle ground.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/4957217104933779179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/07/coding-is-bad-for-your-code.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/4957217104933779179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/4957217104933779179'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/07/coding-is-bad-for-your-code.html' title='Coding is Bad For Your Code'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-2860848302764946153</id><published>2009-06-01T21:25:00.001-07:00</published><updated>2009-06-01T23:15:19.700-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bing"/><category scheme="http://www.blogger.com/atom/ns#" term="live search"/><category scheme="http://www.blogger.com/atom/ns#" term="microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="search"/><title type='text'>Microsoft Live Search is Now Bing... I Guess Bling Wasn&#39;t Available?</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://bing.com/&quot;&gt;Bing.com&lt;/a&gt; is the new Microsoft search!  Wow, I guess Bling wasn&#39;t available. . .  &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://bing.com/&quot;&gt;&lt;img style=&quot;text-align: right;float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 320px; height: 235px; &quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNQcuw2bGuXMYrCDkE-wcUieLFKPIOl1U3Hef_N39oSnTv1nU9pOv-3ZLSFxvFj1kvQh9ABrm7b71rWIjKykZxCljtk3PImjOo2PUJERdzxEFIw15TKccgXV-LDjz0vER88HltM1N7XrCj/s320/bing.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5342608144741921858&quot; /&gt;&lt;/a&gt;&lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;LEFT&quot; style=&quot;text-align: left;margin-bottom: 0in; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0in; padding-right: 0in; padding-bottom: 0in; padding-left: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2; &quot;&gt;Very strange name for a service that has struggled from the beginning.  I somehow don&#39;t think a name change will do much to improve Microsoft&#39;s search standings compared to Google.  But, I do have to laud Microsoft for staying in the game.  &lt;br /&gt;&lt;/p&gt; &lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt; &lt;span style=&quot;color:#000000;&quot;&gt;&lt;span style=&quot;font-family:Georgia, serif;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Yes, “Live Search” was a mistake. Ever heard anyone say “I&#39;m going to Live this?” Nope, neither have I.  Somehow I don&#39;t think “binging” is going to join the pages of Webster&#39;s any time soon either, but at least Microsoft recognized that “Live Search” sounds too “corporate” and, yes, “dead”. Bing may be a bit off the wall—but so was “Twitter” and “Flickr”.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; font-style: normal; font-weight: normal; widows: 2; orphans: 2&quot;&gt;After a failure as large as Microsoft search most companies would have either thrown in the towel or buried their heads in the sand and declared that everything was just fine (while quietly letting the product die).   By renaming their search service Microsoft is showing some real strength.  Renaming is tantamount to admitting failure and most companies aren&#39;t brave enough to do that.&lt;/p&gt; &lt;p align=&quot;LEFT&quot; style=&quot;margin-bottom: 0in; border: none; padding: 0in; widows: 2; orphans: 2&quot;&gt; &lt;span style=&quot;color:#000000;&quot;&gt;&lt;span style=&quot;font-family:Georgia, serif;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;span style=&quot;font-style: normal&quot;&gt;&lt;span style=&quot;font-weight: normal&quot;&gt;The question is—will this just be a marketing campaign?  Will their technical guys blindly keep following the &quot;safe&quot; and empty path that Google has smashed down in front of them? Or will they actually hack out some innovations?  The recent success of StackOverflow.com in a field very close to search is proof that innovations in search are still out there ready to be exploited--if Microsoft has the guts and vision to do it.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/2860848302764946153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/06/microsoft-live-search-is-now-bing-i.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/2860848302764946153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/2860848302764946153'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/06/microsoft-live-search-is-now-bing-i.html' title='Microsoft Live Search is Now Bing... I Guess Bling Wasn&#39;t Available?'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNQcuw2bGuXMYrCDkE-wcUieLFKPIOl1U3Hef_N39oSnTv1nU9pOv-3ZLSFxvFj1kvQh9ABrm7b71rWIjKykZxCljtk3PImjOo2PUJERdzxEFIw15TKccgXV-LDjz0vER88HltM1N7XrCj/s72-c/bing.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105933451546957641.post-4354629707718566576</id><published>2009-02-25T19:33:00.000-08:00</published><updated>2009-02-26T09:38:15.607-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Jeff Attwood"/><category scheme="http://www.blogger.com/atom/ns#" term="Joel Spolsky"/><category scheme="http://www.blogger.com/atom/ns#" term="software start-up"/><category scheme="http://www.blogger.com/atom/ns#" term="StackOverflow.com"/><title type='text'>StackOverflow: Finding Success in Failure</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  ;font-family:verdana;font-size:13px;&quot;&gt;&lt;div&gt;&quot;what&#39;s so special about stack overflow that isn&#39;t already out there in the zillion other QA forums on the web?...Joel and Jeff need to read the book &quot;Blue Ocean Strategy&quot; and re-think this idea.&quot;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;--My comments on &lt;a href=&quot;http://stackoverflow.com/&quot;&gt;StackOverflow &lt;/a&gt;10 months ago&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;OK, I was wrong.  Extremely wrong.  &lt;a href=&quot;http://stackoverflow.com/&quot;&gt;StackOverflow&lt;/a&gt; has become one of the best resources for software developers around.  It&#39;s the classic success story--great concept, well coded, explosive take-off.  Over 100,000 questions have been posted so far with no end in sight.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;If I believed in the typical &quot;business book&quot; script I&#39;d go on about how the brilliant concept, the great developers, the teamwork and the pod casts came together to make this great software. . .  but that would be a lie.  Lots of start-ups have good ideas, great developers, good teamwork and podcasts. Then they fall flat.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;StackOverflow had something very special that 99% of start-ups don&#39;t have--business skills.  Jeff Attwood is the author of a successful &lt;a href=&quot;http://www.codinghorror.com/blog/&quot;&gt;blog&lt;/a&gt;.  &lt;span class=&quot;Apple-style-span&quot;  style=&quot; font-weight: bold; font-family:arial;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal; &quot;&gt;Joel Spolsky runs &lt;a href=&quot;http://www.fogcreek.com/&quot;&gt;Fog Creek Software&lt;/a&gt;--in high cost New York City of all places--and also runs a major &lt;a href=&quot;http://www.blogger.com/www.joelonsoftware.com&quot;&gt;blog&lt;/a&gt;.  Yes, blogging is a business--good bloggers know how to package and promote a &quot;product&quot;.  The hit counter is a brutal measure.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;Every business is long on ideas and short on resources--particularly a start-up. Founders must brutally focus on what really matters.  Which means they have to KNOW what matters. Experienced businesspeople aren&#39;t always right--but they are right a whole lot more often.  Jeff and Joel were right.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;StackOverflow is a businessperson&#39;s dream. Unlike most start-ups it is dripping with opportunities to make money.  First, everything on the site is tagged and most users on the site are identified up front. That means advertising can be targeted, relevant and use less space.  Secondly, StackOverflow has tapped into a powerful meta-concept.  There is nothing about StackOverflow that explicitly requires it be a programming site.  The StackOverflow framework could easily become a service made available to any paying company wanting a more effective forum.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; ;font-family:verdana;font-size:13px;&quot;&gt;Congratulations Jeff, Joel and team. I look forward to seeing whatever project you come up with next.  I promise I will think long and hard before joining the chorus of nay-sayers next time!&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lookatsoftware.blogspot.com/feeds/4354629707718566576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lookatsoftware.blogspot.com/2009/02/stackoverflow-finding-success-in.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/4354629707718566576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105933451546957641/posts/default/4354629707718566576'/><link rel='alternate' type='text/html' href='http://lookatsoftware.blogspot.com/2009/02/stackoverflow-finding-success-in.html' title='StackOverflow: Finding Success in Failure'/><author><name>Jeff Staddon</name><uri>http://www.blogger.com/profile/02593505184280765617</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>