<?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: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-3949103849985306683</id><updated>2011-12-12T17:09:46.871-08:00</updated><category term='Pretty in Pink'/><category term='software process'/><category term='midlife crisis'/><category term='Asperger&apos;s syndrome'/><category term='Microserfs'/><category term='interview questions'/><category term='systematizing brains'/><category term='technical screening interview'/><category term='undergraduate computer science curriculum'/><category term='David Parnas'/><category term='women in computer science'/><category term='open source'/><category term='Java'/><category term='Protestant work ethic'/><category term='Chilliwack'/><category term='Bill Wadge'/><category term='Office Space'/><category term='empathizing brains'/><category term='software engineering'/><category term='Sixteen Candles'/><category term='software methodology'/><category term='software development life-cycle'/><category term='social aspects of software engineering'/><category term='programmer productivity'/><category term='Simon Baron-Cohen'/><title type='text'>White Trash Software Engineer</title><subtitle type='html'>Essays on the human factors of programmers</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-3718341702752369094</id><published>2011-08-28T13:35:00.001-07:00</published><updated>2011-08-28T14:38:53.741-07:00</updated><title type='text'>Lord of the Files</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;a href="http://www.createspace.com/Img/T360/T91/T25/ThumbnailImage.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="http://www.createspace.com/Img/T360/T91/T25/ThumbnailImage.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;I started this blog after failing to generate any interest for a book proposal I submitted to a myriad of publishers specializing in either academic or technical publications. This was back in 2007, after returning to North America from four months living and traveling through sub-Saharan Africa. That jarring experience motivated me to try taking a couple of papers I had published in &lt;a href="http://www.sigsoft.org/SEN/"&gt;Software Engineering Notes&lt;/a&gt; and expanding them into a book about the human factors of &lt;span style="font-style: italic;"&gt;programmers&lt;/span&gt; (instead of &lt;span style="font-style: italic;"&gt;programming&lt;/span&gt;). In hindsight, the working title (&lt;span style="font-style: italic;"&gt;White Trash Software Engineer&lt;/span&gt;) may have scared away the academic publishers, while the lack of technical content may have scared away the other publishers. Falling through the cracks has been somewhat of a recurring theme in my professional endeavours; as someone who likes to use both sides of his brain and favours interdisciplinary research, it can be tough to categorize me and my message. Or to find an appreciative audience.&lt;br /&gt;&lt;br /&gt;The company that I started (&lt;a href="http://www.bstage.ca/"&gt;Backstage&lt;/a&gt;) back in 1996(!) was acquired in September of 2010 by &lt;a href="http://www.realnetworks.com/"&gt;RealNetworks&lt;/a&gt;, and is now a studio in their &lt;a href="http://www.gamehouse.com/"&gt;GameHouse&lt;/a&gt; division. Backstage didn't really take off until I quit trying to be an academic and started devoting all of my attention to growing a company in 2007. It really is true that you can't be a part-time entrepreneur.&lt;br /&gt;&lt;br /&gt;This blog now contains excerpts from the book &lt;a href="http://amzn.com/0986941808"&gt;Lord of the Files: Essays on the Social Aspects of Software Engineering&lt;/a&gt;, self-published in 2011. Files, not Flies. Most of the chapters in the book started out as entries in this blog. The gratifying experience of running Backstage through its emergence as a  successful social gaming company also found its way into the book.&lt;br /&gt;&lt;br /&gt;People like to belong to communities that both identify and set them apart from the rest. My book provides an alternative to both the geek culture that dominates computer science, and the default counter-culture of open source software development and companion zealotry exhibited by the likes of Richard Stallman and Linus Torvalds. &lt;i&gt;Lord of the Files&lt;/i&gt; while embodying a punk esthetic, was written for the intelligent programmer with a sense of humor, social skills, and a cultural center that extends well beyond &lt;i&gt;Star Trek&lt;/i&gt;, an ugly pony tail, and “Windows sucks”. If that resonates, this could be your brand; a badge of passive aggressive frustration with the pigeon-hole that society has reserved for us and its promulgation from within by a small minority. I am not a socially retarded, illiterate eunuch. I am angry but compassionate; disappointed but optimistic; divorced but in love. I can do and teach. I am good at what I do, but refuse to do it for free. I wrote this book because nobody was speaking for me. Not even Jaron Lanier.&lt;br /&gt;&lt;br /&gt;Other than my editor (the quite remarkable &lt;a href="http://grenfell1.blogspot.com/"&gt;Grenfell Featherstone&lt;/a&gt;,  who helped me tone down the private angst and find a better title), the  first person to read my book in its entirety was my girlfriend's  mother. It made her laugh, and she tells me she genuinely enjoyed the  book. As a psych nurse, I think she liked how much of my emotions and  feelings come through in each of the self-contained essays.&lt;br /&gt;&lt;br /&gt;According to Grenfell, I wrote a book that speaks to a wider audience than just programmers. However, I hope it finds an audience with programmers, not because I need the money or the fame, but because I think the message is sorely lacking in our industry. Namely, that to be a good software engineer, you first and foremost need to be a good person.&lt;br /&gt;&lt;br /&gt;Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;, or &lt;a href="http://amzn.com/0986941808"&gt;Amazon.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-3718341702752369094?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/3718341702752369094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=3718341702752369094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/3718341702752369094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/3718341702752369094'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2011/08/lord-of-files.html' title='Lord of the Files'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-4709191302381997539</id><published>2010-01-18T13:10:00.000-08:00</published><updated>2011-08-11T22:57:45.651-07:00</updated><title type='text'>Epilogue: redemption through introspection</title><content type='html'>&lt;span style="font-style: italic;"&gt;Address your inner injuries before a lack of self-esteem destroys your prospects for career advancement.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;Sometimes I fear that my ex-wife wants me to continue to be sad, lonely, and give her all my money. In other words, she wishes we were still married.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;When a marriage begins to fail, and you no longer feel safe in sharing your true self or feelings with your partner, it can seem like the loneliest place on earth. If you were single, you could reach out to others in an appropriate manner, but when you are married, you are constrained. The result is a train wreck of secrecy, and a search elsewhere for the fulfillment and validation that you no longer experience with your spouse. Not surprisingly, pornography, cybersex, gambling, drugs, alcohol and other forms of self-medication become increasingly attractive. When you are single, you can simply join a running club.&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt is from the book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; published by Thought Pilots.&lt;br /&gt;&lt;br /&gt;Want more? Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-4709191302381997539?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/4709191302381997539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=4709191302381997539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/4709191302381997539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/4709191302381997539'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/11/epilogue-redemption-through.html' title='Epilogue: redemption through introspection'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-5754995781415105153</id><published>2008-11-16T10:52:00.000-08:00</published><updated>2011-08-11T22:57:29.649-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='midlife crisis'/><title type='text'>Pandemonium reigned</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style="text-align:left" align="left"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;This book is my midlife crisis.&lt;/i&gt;&lt;/p&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;I got divorced at the age of 40. Leaving a bad marriage enabled me to enjoy a crisis of identity that led to the success of Backstage, which in turn prompted me to write this book.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;But why write this book now, at this age and stage of my life? I used to be able to write to entertain, but then I went to grad school and learned to write in a formal, academic style. I wondered if I had permanently dulled those neural pathways that were involved in writing goofy short stories when I was younger, especially the one that ended up giving the kids in my high school something else to make fun of other than my intense social awkwardness, lankiness, glasses, and braces?&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt is from the book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; published by Thought Pilots.&lt;br /&gt;&lt;br /&gt;Want more? Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-5754995781415105153?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/5754995781415105153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=5754995781415105153' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/5754995781415105153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/5754995781415105153'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/11/pandemonium-reigned.html' title='Pandemonium reigned'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-4259713898099384288</id><published>2008-11-08T12:02:00.000-08:00</published><updated>2011-07-26T11:51:49.375-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='Bill Wadge'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='interview questions'/><category scheme='http://www.blogger.com/atom/ns#' term='technical screening interview'/><category scheme='http://www.blogger.com/atom/ns#' term='David Parnas'/><title type='text'>What the bleep should we know!?</title><content type='html'>&lt;span style="font-style: italic;"&gt;You can work for me if you can answer one simple question.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;David Parnas was once asked what he thought was the most often overlooked risk in software engineering. His answer was “incompetent programmers.... One bad programmer can easily create two new jobs a year. Hiring more bad programmers will just increase our perceived need for them. If we had more good programmers, and could easily identify them, we would need fewer, not more.”&lt;a style="mso-footnote-id:ftn1" href="http://www.blogger.com/post-edit.g?blogID=3949103849985306683&amp;amp;postID=4259713898099384288#_ftn1" name="_ftnref1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="mso-special-character: footnote"&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="line-height:110%;font-family:Garamond;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-Times New Roman&amp;quot;;mso-ansi-language: EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SAfont-family:&amp;quot;;font-size:12.0pt;"  &gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;That was harsh. As usual, though, he is correct.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;At this point in my life I think I must have interviewed over 300 candidates for various positions in software development. I have hired dozens of co-op students, and made the hiring decisions on countless permanent positions. I have also fired three people. I only had employees at Backstage from 2005 to 2010, so why all this experience in hiring and firing? Somewhere early on in my career it became known that I was good at the difficult job of appraising the technical skills of applicants. Because of this skill, my previous employers asked me to become intimately involved in the process of assessing the talent of potential employees.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The technical screening interview consists of a twenty minute conversation where I attempt to verify that the applicant is competent, and that his or her resume is, in fact, truthful. Depending on the position we were hiring for, I had managed to boil the interview down to one simple question—answer it, and you could work for me. It was rather disheartening how many computer scientists were unable to answer it correctly.&lt;/p&gt;  &lt;div style="mso-element:footnote-list"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt from the forthcoming book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; is brought to you by Thought Pilots. Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;  &lt;hr align="left" size="1" width="33%"&gt;    &lt;div style="mso-element:footnote" id="ftn1"&gt;  &lt;p class="MsoFootnoteText"&gt;&lt;a style="mso-footnote-id:ftn1" href="http://www.blogger.com/post-edit.g?blogID=3949103849985306683&amp;amp;postID=4259713898099384288#_ftnref1" name="_ftn1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="mso-special-character: footnote"&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="line-height:110%;font-family:Garamond;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-Times New Roman&amp;quot;;mso-ansi-language: EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SAfont-family:&amp;quot;;font-size:10.0pt;"  &gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;em&gt;&lt;span style="font-style:normal;mso-bidi-font-style: italicfont-family:Garamond;" &gt;Nancy Eickelmann, “ACM Fellow Profile: David Lorge Parnas,” &lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family:Garamond;"&gt;ACM SIGSOFT Software Engineering Notes&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-style:normal;mso-bidi-font-style:italicfont-family:Garamond;" &gt;, 24 (3), 1999. &lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-4259713898099384288?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/4259713898099384288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=4259713898099384288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/4259713898099384288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/4259713898099384288'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/10/what-bleep-should-we-know.html' title='What the bleep should we know!?'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-5618240112709231529</id><published>2008-11-02T23:55:00.000-08:00</published><updated>2011-08-11T22:57:11.054-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='women in computer science'/><category scheme='http://www.blogger.com/atom/ns#' term='Simon Baron-Cohen'/><category scheme='http://www.blogger.com/atom/ns#' term='empathizing brains'/><category scheme='http://www.blogger.com/atom/ns#' term='Asperger&apos;s syndrome'/><category scheme='http://www.blogger.com/atom/ns#' term='systematizing brains'/><category scheme='http://www.blogger.com/atom/ns#' term='Sixteen Candles'/><category scheme='http://www.blogger.com/atom/ns#' term='Pretty in Pink'/><title type='text'>Nobody ever got laid for buying IBM equipment</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;&lt;i style="mso-bidi-font-style:normal"&gt;Where are all the babes? The dearth of women in our industry is examined from the perspectives of the female reproductive imperative and the systematizing male brain hypothesis.&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I chose to major in computer science for two reasons: money, and I was good at it. As a teenager in the early 1980s, everyone kept telling me “computers—now that’s where the future is headed!” and “computers is where the good jobs will be!” I felt a bit like Dustin Hoffman’s character in &lt;i style="mso-bidi-font-style:normal"&gt;The Graduate&lt;/i&gt;, only &lt;i style="mso-bidi-font-style: normal"&gt;computers&lt;/i&gt; had displaced &lt;i style="mso-bidi-font-style:normal"&gt;plastics&lt;/i&gt; as the one word to remember. While I didn’t end up seduced by a cougarific Mrs. Robinson, I did notice that the advertised salaries for computer programmers in the weekly careers section of the &lt;i style="mso-bidi-font-style:normal"&gt;Vancouver Sun&lt;/i&gt; would invariably make my girlfriend very horny. The promise of lots of money was getting me lots of honey.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;But to be honest, I really wanted to be a physicist with expertise in acoustics so that I could grow up to design concert halls. However, in my first semester at university I got a D in physics and an A in computer science, and my path was chosen. Since people like to do what they are good at, and since I am people, I stuck with computer science. It was a good fit for me because I enjoyed it, and it seemed incredibly easy. If there was ever an academic pursuit that was uniquely designed for the way my brain worked, it was computer science.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I once asked my class at Camosun College why they had chosen to major in computer science. This was the year 2001, and I had become slightly exasperated with trying to teach data structures and algorithms to a group of adults who did not seem to share my love for the topic. Indeed, many of my students were only there because the job prospects had seemed so promising just two years earlier. The best response I received to the question was from a young man sitting in the back row, who sarcastically exclaimed “I’m here for the babes!”&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Why are there so few women in computer science? For many universities, this seems to have replaced &lt;i style="mso-bidi-font-style:normal"&gt;does P = NP&lt;/i&gt; as the single greatest research challenge facing computer science departments throughout North America. I respectfully submit this essay as my take on the situation. Cautiously, and without judgement, I think there are two leading causes:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-bottom:6.0pt; margin-left:.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;tab-stops:list .25in"&gt;&lt;span style="mso-fareast-font-family:Garamond;mso-bidi-font-family:Garamond;" &gt;&lt;span style="mso-list:Ignore"&gt;1.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;the lack of attractive male mating partners in our industry is at odds with women’s biological imperative for reproduction: women are just not attracted to repressed, unkempt, socially awkward, high functioning nerds with Asperger’s; and,&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left:.25in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .25in"&gt;&lt;span style="mso-fareast-font-family: Garamond;mso-bidi-font-family:Garamond;" &gt;&lt;span style="mso-list:Ignore"&gt;2.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;computer science is particularly suited to those endowed with a systematizing brain, which women tend not to have, but is usually found in men—especially the repressed, unkempt, socially awkward, high functioning nerds with Asperger’s.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Taken together, these two reasons conspire to ensure that women choose not to pursue careers as software engineers.&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt is from the book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; published by Thought Pilots.&lt;br /&gt;&lt;br /&gt;Want more? Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-5618240112709231529?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/5618240112709231529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=5618240112709231529' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/5618240112709231529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/5618240112709231529'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/10/nobody-ever-got-laid-for-buying-ibm.html' title='Nobody ever got laid for buying IBM equipment'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-2462378731617855334</id><published>2008-10-18T21:48:00.000-07:00</published><updated>2011-08-11T22:56:46.733-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Protestant work ethic'/><category scheme='http://www.blogger.com/atom/ns#' term='Chilliwack'/><category scheme='http://www.blogger.com/atom/ns#' term='software methodology'/><title type='text'>White Trash Software Engineer</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.topfoto.co.uk/gallery/LoveisintheAir/images/prevs/0552127.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.topfoto.co.uk/gallery/LoveisintheAir/images/prevs/0552127.jpg" alt="My mother's favourite scene from An Officer and a Gentlemen" border="0" /&gt;&lt;/a&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if !mso]&gt;&lt;object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id="ieooui"&gt;&lt;/object&gt; &lt;style&gt; st1\:*{behavior:url(#ieooui) } &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style="text-align:left" align="left"&gt;&lt;i&gt;Building large software products is not easy. If you want to persevere long enough to be successful at it, I have found that it helps if you were raised with conditional love, fear failure, and lack self-esteem &lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;span style="line-height: 110%; font-family: Garamond;font-family:&amp;quot;;font-size:12.0pt;"  &gt;My mom’s favourite cinematic moment is the scene from &lt;i&gt;An Officer and a Gentlemen&lt;/i&gt; when Richard Gere, with newly minted officer’s commission and freshly-pressed white uniform, marches across the factory floor to sweep Debra Winger off her feet. The film ends with the promise of a life of love and romantic adventure for Winger’s character as she follows her man through a series of exotic overseas air force postings. My mother’s fondness for this film is likely because it mirrors her own revisionist take on events leading to her marriage to my father. The only problem is that my dad—a budding Sapper in the Canadian Military Engineers—sabotaged his commission when he told his commanding officer to &lt;i style="mso-bidi-font-style:normal"&gt;fuck off&lt;/i&gt; during his officer training in Wainwright, Alberta. As a result, love lifted mom and dad up where they belonged, which was apparently the same place they had started from: Chilliwack&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt is from the book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; published by Thought Pilots.&lt;br /&gt;&lt;br /&gt;Want more? Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-2462378731617855334?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/2462378731617855334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=2462378731617855334' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/2462378731617855334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/2462378731617855334'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/10/white-trash-software-methodology.html' title='White Trash Software Engineer'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-9100644517115365625</id><published>2008-10-16T21:10:00.000-07:00</published><updated>2011-08-11T22:56:26.776-07:00</updated><title type='text'>A Seven-Layer Hierarchy of Careers in Computer Science</title><content type='html'>&lt;div class="deleteBody"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;&lt;i&gt;If your first job as a software engineer isn’t all you had hoped for—good! Starting out at the bottom isn’t necessary for you to learn the business; it’s so you can learn some humility. You are no better than anyone else.&lt;/i&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;I once offered a job to a guy who described himself as a “creative generalist.” We were looking for a project manager, but I offered him the position, anyway. Ultimately he refused the offer when I balked at his request for a MacBook Pro. I assumed the much cheaper Dell PC we already had could compute the critical path on a GANTT or PERT chart just as well as any Mac. He assumed I was an asshole for refusing his request.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In retrospect, my prima donna detector should have gone off when he described himself as both creative and a generalist. Don’t get me wrong, creativity is an imperative skill if one wants to thrive in any software company, particularly one that builds games.&lt;a style="mso-footnote-id:ftn1" href="http://www.blogger.com/post-edit.g?blogID=3949103849985306683&amp;amp;postID=9100644517115365625#_ftn1" name="_ftnref1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="mso-special-character:footnote"&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="line-height:110%; font-family:Garamond;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-Times New Roman&amp;quot;;mso-ansi-language:EN-US;mso-fareast-language:EN-US; mso-bidi-language:AR-SAfont-family:&amp;quot;;font-size:12.0pt;"  &gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; But a &lt;i style="mso-bidi-font-style:normal"&gt;generalist?&lt;/i&gt; It’s great to be good at many things, but being great at one thing is even gooder. Play to your strengths and specialize, kids. Nobody needs a generalist.&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt is from the book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; published by Thought Pilots.&lt;br /&gt;&lt;br /&gt;Want more? Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="mso-element:footnote-list"&gt;   &lt;hr align="left" size="1" width="33%"&gt;    &lt;div style="mso-element:footnote" id="ftn1"&gt;  &lt;p class="MsoFootnoteText"&gt;&lt;a style="mso-footnote-id:ftn1" href="http://www.blogger.com/post-edit.g?blogID=3949103849985306683&amp;amp;postID=9100644517115365625#_ftnref1" name="_ftn1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="mso-special-character: footnote"&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="line-height:110%;font-family:Garamond;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-Times New Roman&amp;quot;;mso-ansi-language: EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SAfont-family:&amp;quot;;font-size:10.0pt;"  &gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; Creativity is an often overlooked quality in good programmers. In 1956, IBM’s first recruitment campaign for computer programmers was a print ad that targeted people who enjoyed algebra, music composition, and games, and who had lively imaginations. While not exactly the stereotype of today’s computer nerd, it is a strikingly accurate set of criteria for the type of person who would be considered creative, logical, and likely enjoy programming. For more on this fascinating story, see Nathan Ensmenger, “Building Castles in the Air: Reflections on recruiting and training programmers during the early period of computing,” &lt;i style="mso-bidi-font-style:normal"&gt;Communications of the ACM&lt;/i&gt;, 54 (4), pp. 28-30.&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt; &lt;input name="postID" value="1780067481626671006" type="hidden"&gt; &lt;input name="blogID" value="3949103849985306683" type="hidden"&gt;  &lt;div class="errorbox-good"&gt;&lt;input name="securityToken" value="04KsOf-tcccX37JeoKukD2TiEFU:1224216232114" type="hidden"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-9100644517115365625?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/9100644517115365625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=9100644517115365625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/9100644517115365625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/9100644517115365625'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/10/seven-layer-hierarchy-of-careers-in.html' title='A Seven-Layer Hierarchy of Careers in Computer Science'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-1163813339333188864</id><published>2008-10-14T22:00:00.000-07:00</published><updated>2011-08-11T22:56:05.545-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software process'/><category scheme='http://www.blogger.com/atom/ns#' term='software methodology'/><category scheme='http://www.blogger.com/atom/ns#' term='software development life-cycle'/><title type='text'>Your favourite methodology is eXtremely gay</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;&lt;i style="mso-bidi-font-style:normal"&gt;Good software is &lt;/i&gt;not&lt;i style="mso-bidi-font-style:normal"&gt; an emergent property of the rules that govern the decentralized interactions of average programmers. Instead, good software results from good programmers, regardless of the methodology. Keep your software process from getting in the way of your best programmer.&lt;span style="mso-bidi-font-style:italic"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  When programming, you can never have too many comments. No, wait… when programming, you can never have too many jelly donuts. I always get those confused. The former is an example of a coding standard, which can be part of a programming methodology. The latter is an example of a software development process (albeit one that includes “now we will eat some jelly donuts” as a phase in the life cycle). In this chapter we discuss the difference between a software development process and a methodology, and why neither really matters.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt is from the book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; published by Thought Pilots.&lt;br /&gt;&lt;br /&gt;Want more? Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;/p&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-1163813339333188864?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/1163813339333188864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=1163813339333188864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/1163813339333188864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/1163813339333188864'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/10/your-favourite-methodology-is-extremely.html' title='Your favourite methodology is eXtremely gay'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-6575052727400569957</id><published>2008-10-05T13:49:00.000-07:00</published><updated>2011-08-11T22:55:40.693-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microserfs'/><category scheme='http://www.blogger.com/atom/ns#' term='social aspects of software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Asperger&apos;s syndrome'/><category scheme='http://www.blogger.com/atom/ns#' term='Office Space'/><title type='text'>All we really need to know about software engineering is in the film Office Space</title><content type='html'>One of the difficulties with teaching software engineering to a class of undergraduates with very little industrial programming experience is trying to convey why some of the material covered is relevant and important. For example, the importance that designing for change plays in software engineering is difficult to explain to a group of students who have never experienced the joy and frustration of maintaining a program written by someone else. After emphatically waving my arms in front of the chalk board for twelve weeks, yet feeling unable to teach my students everything they would need to know about software engineering, I would screen the film&lt;span style="font-style: italic;"&gt; Office Space &lt;/span&gt;on the last day of class.&lt;br /&gt;&lt;br /&gt;The 1999 Mike Judge film &lt;a href="http://en.wikipedia.org/wiki/Office_space"&gt;&lt;span style="font-style: italic;"&gt;Office Space&lt;/span&gt;&lt;/a&gt; chronicles the efforts of software engineer Peter Gibbons to find peace with the role of work in his life. One of the few artifacts of popular culture (Douglas Coupland’s &lt;a href="http://en.wikipedia.org/wiki/Microserfs"&gt;&lt;span style="font-style: italic;"&gt;Microserfs&lt;/span&gt;&lt;/a&gt; being another notable) to feature a software engineer as the protagonist, &lt;span style="font-style: italic;"&gt;Office Space&lt;/span&gt; – despite its enduring mass appeal and broad comedic base – embodies many subtle gems of wisdom regarding the craft of software engineering.&lt;br /&gt;&lt;br /&gt;The following rules are all found to varying degree in the plot and characters of the film.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;design for change&lt;/li&gt;&lt;li&gt;software engineering is a social activity&lt;/li&gt;&lt;li&gt;an untested program does not work&lt;/li&gt;&lt;li&gt;not everyone gets to write video games&lt;/li&gt;&lt;li&gt;Brooks’ Law&lt;/li&gt;&lt;li&gt;you will be expected to work long hours&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;Design for Change&lt;/span&gt;&lt;br /&gt;We are all taught as undergraduates that maintenance is the dominant phase of the software development life-cycle. Our responsibility as software engineers is thus to design systems that are easy to modify without introducing new bugs; i.e., to design for change.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Office Space&lt;/span&gt; is set in 1999 at fictitious Dallas computer firm Initech where Peter, like most software engineers, is employed maintaining an existing software system. In particular, Peter is busy fixing the &lt;a href="http://en.wikipedia.org/wiki/Y2k"&gt;Y2K bug&lt;/a&gt; in bank software. More than eight years on, many of us in the industry have mostly forgotten about the incredible person-effort expended on fixing all that code, which obviously was not properly designed for change. The film thus serves as an object lesson in how not to design systems. It is also a historical reminder of what the Y2K bug was all about, even if Peter’s attempt to explain it to his love-interest Joanna is aborted when he intuits her waning interest. Even without reminders such as these, the Y2K crisis is likely to remain a footnote in the history of computer science for one of two very different reasons:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;it was a such a monumentally anti-climactic non-event, suggesting the scope of the problem was severely overestimated by industry observers (and practitioners); or &lt;/li&gt;&lt;li&gt;it was our finest hour – a triumph of modern software engineering that averted a global catastrophe.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rMFGdQn7DBs/SOkps8MTczI/AAAAAAAAAA4/H9vHMaxfKL4/s1600-h/officespace_cubicles.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_rMFGdQn7DBs/SOkps8MTczI/AAAAAAAAAA4/H9vHMaxfKL4/s200/officespace_cubicles.jpg" alt="" id="BLOGGER_PHOTO_ID_5253776292353110834" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Figure 1. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Samir, Peter, Michael, and Tom in cubicle hell at Initech. &lt;/span&gt;Whoever decided that cubicles were an ideal way to layout offices should be forced to live out an eternity stuck in a cubicle in the middle of an expansive floor pinned beneath the incessant glare of fluorescent lighting. The demoralizing effects of these wall dividers, which offer little in the way of privacy and noise reduction, are legendary. Given that software engineering requires teamwork, and cubicles are an impediment to effective communication, they should be rejected outright.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;Software Engineering is a Social Activity&lt;/span&gt;&lt;br /&gt;Software engineers write modules, classes, and libraries that are used by other software engineers in the construction of larger systems. Teamwork is thus an essential component of the process. Moreover, these systems are constructed to meet the requirements of end-users who belong to a cultural group that is usually decidedly outside that of software engineering. Interaction with this group (the customer) is an important part of the development process.&lt;br /&gt;Two significant problems with this reality are reflected in the film:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;software engineers as a whole – a point vociferously made by Business Analyst Tom Smykowski while explaining what it is he does at Initech – are not good with people; and,&lt;/li&gt;&lt;li&gt;these people with the poor social skills (like Milton) are our teammates.&lt;/li&gt;&lt;/ol&gt;It is difficult not to sympathize with Smykowski, the first to be downsized during the ongoing business process re-engineering of Initech. Like Dan’s father in &lt;span style="font-style: italic;"&gt;Microserfs&lt;/span&gt;, middle-aged Smykowski has woken up to an industry that sees him as irrelevant. When asked during his interview with the efficiency consultants (the Bobs) “what would you say you do here,” Smykowski defensively explains that he takes the specs from the customers to the software people, “because engineers are not good at dealing with customers.” This stereotype of the socially challenged software engineer seems the raison d’etre of the modern day Business Analyst, whose sole job requirement it often seems is simply – as Smykowski bellows ironically – to “have people skills!” Smykowski’s plight should serve as a reminder of the need to maintain relevancy: people skills alone are not enough.&lt;br /&gt;&lt;br /&gt;Unlike Smykowski, Milton appears so completely socially retarded as to be unbelievable. To those of us in the industry, however, people like Milton are not an aberration. Indeed, some of the best programmers I’ve ever known share many of Milton’s personality traits, which are likely related to &lt;a href="http://en.wikipedia.org/wiki/Aspberger%27s_Syndrome"&gt;Asperger’s syndrome&lt;/a&gt; and a healthy dose of &lt;a href="http://en.wikipedia.org/wiki/Obsessive-compulsive_disorder"&gt;obsessive-compulsive disorder&lt;/a&gt; (OCD). These psychological afflictions are considered by some to be an advantage when it comes to the kind of thinking required to excel at software engineering.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_rMFGdQn7DBs/SOkqMisXyZI/AAAAAAAAABA/nrDuO-Rxano/s1600-h/tomsmykowski.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_rMFGdQn7DBs/SOkqMisXyZI/AAAAAAAAABA/nrDuO-Rxano/s200/tomsmykowski.jpg" alt="" id="BLOGGER_PHOTO_ID_5253776835264104850" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);font-size:100%;" &gt;Figure 2.&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Tom Smykowski, Business Analyst.&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;Learn to love your Business Analyst, for they have the unenviable task of pinning down and documenting the customer specifications (i.e., specs). You can always blame the Business Analyst when the system you built works according to spec, but does something stupid.&lt;br /&gt;&lt;br /&gt;While Peter’s patience is merely strained by Milton, others who do not share his neural processing style openly mock Milton and his OCD. In particular, Initech vice-president Bill Lumbergh delights in asking Milton to move his desk simply because of the unease it causes him. Likewise, in a scene reminiscent of the alpha-male who steals the geek’s ball and claims it was his in the first place, Lumbergh’s commandeering of Milton’s red Swingline stapler is a gesture that seems predicated only by his distaste for Milton as a person. While not endemic, this kind of manipulation and bullying of the more socially challenged amongst our peers is an unfortunate practice witnessed far too frequently.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;Untested Programs Do Not Work&lt;/span&gt;&lt;br /&gt;Peter’s colleague Michael Bolton – the classic passive-aggressive nerd – feels both exploited and disrespected by his employer despite his contributions to the firm’s intellectual property. Michael’s revenge is enacted when he unleashes a virus on the credit union mainframe designed to slowly steal fractions of pennies during interest calculations. However, the program is put into production without the opportunity for testing.&lt;br /&gt;&lt;br /&gt;As Stroustrup succinctly puts it, “a program that has not been tested does not work.” To Michael’s dismay, his virus has a bug that results in a conspicuous amount of money to go missing, resulting in the likelihood of its detection.  He afterward explains to his co-conspirators Peter and Samir that he must have had the decimal point in the wrong place, and that he always makes some stupid little mistake like that. In truth, all software engineers make stupid little mistakes like that, all the time. In fact, it’s often a complete shock to me that software works as well as it does given how:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;massively complex systems have become;&lt;/li&gt;&lt;li&gt;escalated the corresponding attention to detail required to maintain these systems has become; and,&lt;/li&gt;&lt;li&gt;how easy it is to introduce run-time defects through simple typos and editing errors that escape compile-time detection.&lt;/li&gt;&lt;/ul&gt;This is why we test, and especially why we regression test after making even the most benign changes.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;Not Everyone Gets to Write Video Games&lt;/span&gt;&lt;br /&gt;Part of the apparent lack of job satisfaction indicated by the employees of Initech likely stems from the boring application area: banking software.  We all want to work on the cool stuff, like games, artificial intelligence, virtual reality, porn websites… but let’s face it: the majority of software engineering jobs are in mundane application areas (like finance and corporate IT) that involve straightforward information storage and retrieval.&lt;br /&gt;&lt;br /&gt;It begs the question, is Peter simply bored? Is Peter’s career crisis merely caused by underutilization and a coincident lack of motivation? The Bobs certainly feel that Peter’s problem is that he hasn’t been challenged enough, believing him when he explains “it’s not that I’m lazy, it’s that I just don’t care.” Software engineers should strive to find work environments and application areas that they find at least mildly interesting. If they don’t, they risk the predicament Peter explains to the Bobs: if your only motivation is the fear of losing your job, you will only work just hard enough to not get fired. As discussed in a &lt;a href="http://whitetrashsoftwareengineer.blogspot.com/2008/10/programmer-life-cycle.html"&gt;previous post&lt;/a&gt;, software engineers instead should learn to assess their own work interest and its effect on their productivity.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;Brooks’ Law&lt;/span&gt;&lt;br /&gt;In his classic monograph on software engineering, Fred Brooks describes the phenomenon whereby adding manpower to a late software project only serves to make it later. This counterintuitive result, which has become known as Brooks’ Law, is due to many factors, including the increased overhead of communication, training, coordination, meetings, etc.&lt;br /&gt;&lt;br /&gt;A possible corollary to Brooks’ Law is that within a software firm, individual programmer productivity is inversely correlated to company size. The larger the company, the less empowered programmers feel, or need to be; ineffectiveness can be hidden within the bureaucracy. Conversely, small companies engender ownership: employees see the direct consequences of their actions. I refer to this (purely anecdotal) observation as the Brooks Effect. Initech is a case study in the Brooks Effect. While interviewing for his own job, Peter admits to the Bobs that “in a given week I probably only do about 15 minutes of real, actual work.” The rest of the time is spent on such mundane activities as meetings, documentation, going for coffee with teammates, zoning out, filling out time-sheets (the infamous TPS Reports that serve as a running gag throughout the film), asking yourself “is this good for the company?”, playing Tetris, and eating birthday cake with coworkers.&lt;br /&gt;&lt;br /&gt;The parody of the ubiquitous birthday celebration is recreated with particular precision in &lt;span style="font-style: italic;"&gt;Office Space&lt;/span&gt;. From the uninspired singing to the disingenuous show of appreciation, no detail is left unskewered. In reality, once a company reaches the size of 50 employees, there is a statistical likelihood of one birthday cake event per week. For some inexplicable reason, this celebration is usually scheduled right before an afternoon code review. The comatose state that invariably follows can only partly be blamed on the resulting insulin shock.&lt;br /&gt;&lt;br /&gt;Case in point, in my one year of work for&lt;a href="http://en.wikipedia.org/wiki/Bell-Northern_Research"&gt; Bell-Northern Research&lt;/a&gt;, as one of over 4,000 employees I managed to check-in to the code repository an underwhelming 16 updates to the DMS-100 digital telephone switch software. During that time span, however, I did participate in over 30 birthday celebrations and three farewell luncheons (not including my own).&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;You Will Be Expected to Work Long Hours&lt;br /&gt;&lt;/span&gt;Peter’s boss Bill Lumbergh is a slightly exaggerated caricature of the prototypical alpha-male, and the film’s most memorable character. Either a programmer who rode his social skills through the management track to the top of his game, or an exemplar of the &lt;a href="http://en.wikipedia.org/wiki/Dilbert_Principle"&gt;Dilbert Principle&lt;/a&gt;, the always coffee-sipping Lumbergh seems primarily concerned that his employees accurately complete their TPS Reports.&lt;br /&gt;&lt;br /&gt;Lumbergh, who Peter believes represents “all that is soulless and wrong” doesn’t hesitate to ask Peter to “go ahead and come in [Saturday].” The key phrase is “go ahead”… as if to suggest that Lumbergh is doing Peter a favor by letting him work over the weekend. Software engineering – like many other professional positions such as law and medicine – is an occupation that can demand Herculean effort and extended work hours, particularly as deadlines approach. The overtime is rarely ever paid, despite efforts by jurisdictions such as California to legislate against this practise. But the legality doesn’t seem to matter, anyway, as many software engineers crave the intellectual calisthenics that programming offers, and will work overtime (or after-hours on open source projects) irrespective of compensation. In this regard, Peter is an anomaly.&lt;br /&gt;&lt;br /&gt;When Peter fails to show up to work on Saturday, Lumbergh launches a never-ending stream of telephone calls to his home in an effort to locate and chastise his AWOL employee. &lt;span style="color: rgb(255, 0, 0);"&gt;This is my favorite scene in the film, not only for the comedic element of Lumbergh’s distinctive greeting that begins each of his 17 recorded messages, but because it echoes my own personal experience with two different employers.&lt;/span&gt; While employees everywhere have likely dealt with the inequity of the boss who parks the Porsche in the only reserved spot, the frantic cell-phone calls, pages, voice messages, instant messages, and urgent email seems particularly endemic to the life of the software engineer on the mission critical path.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rMFGdQn7DBs/SOksTf6JUkI/AAAAAAAAABI/r9-o-RZ9vp8/s1600-h/lumbergh.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_rMFGdQn7DBs/SOksTf6JUkI/AAAAAAAAABI/r9-o-RZ9vp8/s200/lumbergh.jpg" alt="" id="BLOGGER_PHOTO_ID_5253779153798910530" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);font-size:100%;" &gt;Figure 3.&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:100%;" &gt;Lumbergh asks Peter to work over the weekend.&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;There is obviously a dress code at Initech (stated or implied) that forces all the men to wear a tie, even though they spend their day at a desk writing code. What on earth does wearing a tie have to do with programming? Why not specify that all software engineers have to wear a funny hat or wig? The tie is as necessary as a hat or wig, especially given (as Smykowski claimed) the software engineers are not allowed to meet with the customers. They made us wear a tie when I worked at IBM’s software development lab in Toronto (and made us start work at 8:42 AM because of the unionized manufacturing plant next door), except for one dude who was such a compiler genius that he got away with wearing leather from head to toe. As an aside, you know your career is progressing nicely if you get to exert more control over your wardrobe with each new position or employer. At &lt;a href="http://www.bstage.ca/"&gt;Backstage&lt;/a&gt; we adopted a “pants optional” dress code because ass sweat is greatly reduced by the absence of pants. But be warned: people will make assumptions about your socio-economic status based solely on how you are dressed. The doorman Theo at my apartment building in Cape Town thought I was just a couch potato who passed his time surfing. He had judged me based on the way that I dressed, and had no idea I had a doctorate and was a president of a company. While the official uniform of software engineers is the unbuttoned dress shirt and khakis, I prefer sweat pants: comfortable, but apparently guaranteed chick repellant. “It’s a good thing you are married, because you’ll never get laid dressing like that” suggested my queer eye, Canterbury Dave from Smuggler’s Cove Pub, where I spent too much of my time as my marriage disintegrated riding the spiraling crashing waves of impotent despair from my usual seat at the bar. Of course, married or not, I wasn’t getting laid, anyway. At least the bartender used to put on the alternative 80s station on the satellite whenever I was there. But I digress.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;Is It All That Bad?&lt;/span&gt;&lt;br /&gt;Towards the end of the film, Joanna counsels Peter that it is okay to be uninspired by his work, because “most people don’t like their jobs.” This is one moment where the film rings hollow, for in my experience, software engineers love their work. We may not like our boss, and the meetings, and the politics, but at the end of the day, there is nothing else we would rather be doing.&lt;br /&gt;&lt;br /&gt;As I ease into my 40s, Peter’s rhetorical question posed to Michael and Samir is particularly poignant: “what if we’re still doing this when we’re 50?” Personally, I sincerely hope I’m still doing this when I’m 50.  As Lumbergh would say… yeah, that would be great.&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt is from the book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; published by Thought Pilots.&lt;br /&gt;&lt;br /&gt;Want more? Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;END NOTES&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;I am amazed at how accurate the depiction of the software development process and software engineers is in Douglas Coupland’s &lt;span style="font-style: italic;"&gt;Microserfs&lt;/span&gt; (Harper Collins: 1995) and his sort-of sequel &lt;span style="font-style: italic;"&gt;JPod&lt;/span&gt; (Harper Collins: 2006).&lt;br /&gt;&lt;br /&gt;Any textbook on software engineering will claim that maintenance is the dominant (longest) stage of the software life cycle. The seminal paper on how to design programs so they are easier to change is Parnas, David L. (1972): “On the criteria to be used in decomposing systems into modules,” &lt;span style="font-style: italic;"&gt;Communications of the ACM&lt;/span&gt;, 15 (12), pp. 1053-58. In my experience, the adoption of early daylight savings in March of 2007 caused more software outages than the Y2K rollover.&lt;br /&gt;&lt;br /&gt;Silberman, Steve (2001): “The geek syndrome,” &lt;span style="font-style: italic;"&gt;Wired&lt;/span&gt;, 9 (12) discusses the tendency of computer scientists and engineers to exhibit autistic traits (in particular, Asperger's syndrome), and the strange cluster of autistic children born from couplings of techies in the Silicon Valley.&lt;br /&gt;&lt;br /&gt;One of the best books on programming ever written is Stroustrup, Bjarne (1991): &lt;span style="font-style: italic;"&gt;The C++ Programming Language (Second Edition)&lt;/span&gt;, Addison-Wesley, from which I quoted page 380.&lt;br /&gt;&lt;br /&gt;Brooks’ Law is from Fred Brooks Jr., &lt;span style="font-style: italic;"&gt;The Mythical Man-Month: Essays on Software Engineering&lt;/span&gt;, Addison-Wesley, 1975.&lt;br /&gt;&lt;br /&gt;The Dilbert Principle suggests that in many companies it is the worst employees who are promoted to management, because the company cannot afford to move the productive employees out of their current positions. Scott Adams wrote &lt;span style="font-style: italic;"&gt;The Dilbert Principle: A Cubicle's-Eye View of Bosses, Meetings, Management Fads, and Other Workplace Afflictions (&lt;/span&gt;Harper Business, 1996).&lt;br /&gt;&lt;br /&gt;The requirement to pay overtime to all software engineers was later overturned by California law S.B. 88 which exempts jobs that require skill and proficiency in the theoretical and practical application of highly specialized information to computer systems analysis, programming and software engineering.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://doi.acm.org/10.1145/1082983.1083006"&gt;An earlier version of this essay&lt;/a&gt; appeared in &lt;span style="font-style: italic;"&gt;Software Engineering Notes&lt;/span&gt;, volume 30, number 4, 2005.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-6575052727400569957?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/6575052727400569957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=6575052727400569957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/6575052727400569957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/6575052727400569957'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/10/all-we-really-need-no-know-about.html' title='All we really need to know about software engineering is in the film Office Space'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_rMFGdQn7DBs/SOkps8MTczI/AAAAAAAAAA4/H9vHMaxfKL4/s72-c/officespace_cubicles.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-7518537536734615367</id><published>2008-10-04T21:54:00.000-07:00</published><updated>2011-08-11T22:52:48.507-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmer productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='software development life-cycle'/><title type='text'>The programmer life cycle</title><content type='html'>Legendary Canadian businessman &lt;a href="http://en.wikipedia.org/wiki/Jim_Pattison"&gt;Jimmy Pattison&lt;/a&gt; was famous for his ruthless policy of firing the poorest performing monthly salesperson at each of his many car dealerships. I could never do that at my own company – &lt;a href="http://www.bstage.ca/"&gt;Backstage Technologies&lt;/a&gt;, a casual game studio and sometimes contract software engineering firm – because excellent programmers like the guys who work for me are extremely difficult to replace. But that doesn’t mean I don’t rule with an iron fist. In fact, I think there should be a Japanese-style TV reality show set at Backstage entitled &lt;span style="font-style: italic;"&gt;Iron Fist&lt;/span&gt;. Each weekly episode of &lt;span style="font-style: italic;"&gt;Iron Fist&lt;/span&gt; would conclude with me, adorned in iron gloves, whaling on the nuts of the employee with the fewest accumulated lines of code in production. Unfortunately, most weeks that would be me.&lt;br /&gt;&lt;br /&gt;Why is my productivity waning, and why isn’t the amount of work that my employees do constant? Most textbooks on software engineering make at least passing reference to the notion of programmer productivity.  The conventional wisdom is that an average programmer completes a paltry 500 debugged lines of code (LOC) per month. To students and professionals alike, this number seems absurdly low. The standard set of explanations for this phenomenon includes, among other things, the communication overhead of working in teams (i.e., Brooks’ Law), and the time allotted to non-programming activities like requirements gathering, documentation, and design.&lt;br /&gt;&lt;br /&gt;These explanations tell only part of the story. While it has long been accepted that productivity rates can differ by an order of magnitude between the best and worst programmers, little has been said regarding the reality that work rates of the &lt;span style="font-style: italic;"&gt;same&lt;/span&gt; programmer can likewise differ over time. Not unlike the software systems they construct, programmers follow a predictable life cycle. However, the &lt;span style="color: rgb(255, 0, 0);"&gt;programmer life cycle&lt;/span&gt; is not comprised of distinct activities (like the software development life cycle, which we discuss below) but rather by emotional stages that directly affect and predict productivity. The sequence of stages is characterized by an initial six month period of intense interest, at which time productivity rates are indeed much higher than the oft-quoted 500 LOC/month average. After a short period of volatility, the programmer then enters a prolonged phase of steadily dwindling interest, resulting in productivity rates that mimic the average. Each time a programmer switches employers or begins a significantly new project, the life cycle starts anew.&lt;br /&gt;&lt;br /&gt;This conjecture is based purely on my experiences and observations while working as the senior software engineer for two successful Internet startups (&lt;a href="http://www.abebooks.com/"&gt;abebooks.com&lt;/a&gt; in Canada, then &lt;a href="http://www.prophet.net/"&gt;Prophet.Net&lt;/a&gt; in the United States).  The basic premise of the proposed relationship between stages of the programmer life cycle and productivity is the simple observation that employees are most productive when interest and satisfaction in their jobs is at its highest.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;The Software Development Life Cycle&lt;/span&gt;&lt;br /&gt;According to Webster, a life cycle is the series of stages through which something (as an individual, culture, or manufactured product) passes during its lifetime. In the case of a software product, the usual stages of its life are: requirements, design, implementation, testing, and maintenance.&lt;br /&gt;&lt;br /&gt;Briefly, the &lt;span style="color: rgb(255, 0, 0);"&gt;requirements&lt;/span&gt; stage is when the product is conceptualized as a set of requirements, which are documented by a business analyst. This is &lt;span style="font-style: italic;"&gt;what&lt;/span&gt; the product must do. The &lt;span style="color: rgb(255, 0, 0);"&gt;design&lt;/span&gt; stage is when a software architect imagines how the software will be built by decomposing the system into a set of interacting subsystems (database server, application server, web server, etc.), which in turn are decomposed into their constituent modules (database tables, transactions, stored procedures, classes, processes, threads, etc.). The architecture of the system is usually described by a set of directed graphs, where the nodes are the subsystems and the arcs denote relationships (e.g., “calls”, “stores”, “reads”). This is how the product will work. The &lt;span style="color: rgb(255, 0, 0);"&gt;implementation&lt;/span&gt; stage consists of database administrators and programmers realizing the design as a working program. The &lt;span style="color: rgb(255, 0, 0);"&gt;testing&lt;/span&gt; stage is meant to ensure that the program meets the requirements. Once this has been determined, a version of the program is released to its user community. Finally, the &lt;span style="color: rgb(255, 0, 0);"&gt;maintenance&lt;/span&gt; stage is where the program is changed into new releases that fix bugs that were not discovered during the testing stage, and new versions that add additional features.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/5/51/Waterfall_model.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://upload.wikimedia.org/wikipedia/commons/5/51/Waterfall_model.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Figure 1.&lt;/span&gt; The waterfall model of the software development life cycle.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Part of the goal of software engineering is to apply what is known as engineering rigor to the process of programming, the belief being that if it’s good for building bridges and toaster ovens, it should work just as well when writing software. Since engineers love linear project plans that involve milestones in the form of diagrams and documents, the first attempts at applying this concept to software development led to the infamous waterfall model of the software development life cycle. The waterfall model (see Figure 1) imagines each of the five stages of the life cycle as a self-contained step, where the output of each step falls only into the next. The model does not allow for backtracking or for information to flow in any direction but down. The obvious analogy to shit rolling downhill is left as an exercise to the reader.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;The Stages of the Programmer Life Cycle&lt;/span&gt;&lt;br /&gt;Everything we do as software engineers falls under one of these five categories that comprise the software development life cycle. The effectiveness with which we undertake these tasks is governed by where we are in the &lt;span style="font-style: italic;"&gt;programmer&lt;/span&gt; life cycle (see Figure 2).&lt;br /&gt;&lt;br /&gt;The programmer life cycle is comprised of six stages:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Euphoric&lt;/li&gt;&lt;li&gt;Productive&lt;/li&gt;&lt;li&gt;Irreplaceable&lt;/li&gt;&lt;li&gt;Resentful&lt;/li&gt;&lt;li&gt;Bored, and&lt;/li&gt;&lt;li&gt;Unproductive&lt;/li&gt;&lt;/ol&gt;While this particular life cycle model is perhaps most likely to apply to highly productive individuals (so-called &lt;span style="font-style: italic;"&gt;star programmers&lt;/span&gt;) working in the 24/7 world of web development and e-commerce, it is my belief that there are fundamental truths in its structure that render it applicable to many software development situations and domains.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Euphoric&lt;/span&gt;. The first stage involves the start of a new job or significantly different project. The programmer is stimulated by both the newness of the environment and the challenges ahead. In many cases the programmer’s euphoria is fueled not only by these changes, but also by the coincident escape from a previous work situation that had become routine or was underutilizing his/her talents. This introductory phase is quite short in duration, lasting only as long as necessary to acclimatize to the new surroundings, learn a new development environment, and become familiar with the domain.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Productive&lt;/span&gt;. Once acclimatized, the programmer’s work interest reaches a peak. Because of this acute interest, productivity is at its highest. This stage – which lasts about six months – is when the programmer develops or takes ownership of some mission-critical software system. This coincides with steadily rising value to the organization.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_rMFGdQn7DBs/SOhQehjLYaI/AAAAAAAAAAw/wBJniZBj3aQ/s1600-h/productivity.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_rMFGdQn7DBs/SOhQehjLYaI/AAAAAAAAAAw/wBJniZBj3aQ/s320/productivity.JPG" alt="" id="BLOGGER_PHOTO_ID_5253537450659897762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Figure 2.&lt;/span&gt; Productivity as a function of stages of the programmer life cycle.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;These first two stages constitute the “honeymoon period.” The next two are best described as the “volatility phase.”&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Irreplaceable&lt;/span&gt;. Management soon recognizes that the programmer has become a valuable commodity.  The programmer’s prestige within the organization is at an all-time high. As such, significant increases in compensation and fringe benefits are doled out in an effort to keep the programmer from ever possibly consider leaving. The golden handcuffs are sealed with the ubiquitous stock option grant, or the promise of one. The programmer feels on top of the world. Unfortunately this will not last.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Resentful&lt;/span&gt;. Management – sensing a sudden asymmetry in the employer-employee relationship – begins to bear resentment that a single individual (the programmer) is now responsible for the ongoing success or failure of the venture. Fearing a loss of control, management begins to act in a manner suggesting ownership of the programmer’s time and space.  Symptoms of this malaise include requiring the programmer to carry a pager, work weekends, install broadband connectivity at home, and never under any circumstances take holidays. The programmer starts to receive email at all hours of the day from trigger-happy monitoring software reporting false alarms, and from managers requesting new features and emergency bug fixes.&lt;br /&gt;&lt;br /&gt;In return, the programmer develops feelings of resentment towards management. &lt;span style="color: rgb(255, 0, 0);"&gt;This is exacerbated by management’s policy of rewarding the programmer’s competency not with bonuses and time off, but with additional workload and responsibilities.&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;The first signs of complacency begin to appear in the programmer’s workplace attitude.&lt;br /&gt;&lt;br /&gt;This unstable time of mutual resentment is necessarily short-lived, as emotions run too high for the process to carry on for more than a month or two. The working relationship can implode during the resentful stage, particularly if volatile personalities are involved.  In the worst case, the programmer quits; the additional workload coupled with the stress of being irreplaceable yet resented becomes too much to take. However, in most cases the resentful stage merely settles into an equilibrium of mutual need: management’s need for the star to carry on keeping the software running, and the programmer’s need to be a star.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Bored&lt;/span&gt;. The post-resentment equilibrium sees the programmer’s activities shift more towards ongoing maintenance, consultative meetings with management, and internal knowledge transfer to other programmers and customer support staff. Because the initial challenges of the new project, environment, and technologies have all been met, the intellectual stimulation has dropped. This leads to boredom. Coupled with the excessive mental context switching demanded of the new activities, the programmer’s productivity (as measured by LOC/month) experiences a significant drop. Despite the tedium, however, this stage can last indefinitely provided the productivity remains above the minimum expectation level given the programmer’s current remuneration.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Unproductive&lt;/span&gt;. Like a manic depressive who goes off his medicine because he misses the occasional euphoric episode, or a love junkie addicted to the adrenaline rush of the first six months of a new relationship, the programmer is unlikely to remain in a state of boredom forever: something has to give. The change is triggered by a slide into the unproductive stage, characterized by the programmer working on his/her resume and visiting job sites on the ‘Net, while management views the programmer as “coasting,” overpriced, and expendable.  One of two outcomes is inevitable:  the programmer finds a new employer, or management moves the programmer to a significantly new role or project.  Either way, the life cycle starts again.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;Conclusion&lt;/span&gt;&lt;br /&gt;This life cycle model should serve as a cautionary tale to both programmers and managers. The lesson for the programmer is to be aware of each stage and its effect on productivity levels, for ultimately one’s success as a software engineer depends on one’s perceived productivity.  By recognizing the symptoms of boredom leading to unproductiveness, the programmer can proactively search for remedies, usually in the form of a frank discussion with management, or seeking out new projects and technological challenges.&lt;br /&gt;&lt;br /&gt;Conversely, managers must understand the causes and effects of this life cycle in order to combat high levels of attrition and declining productivity.  To get the most out of the organization’s stars, managers must avoid the resentment trap by resisting the temptation to over-burden the irreplaceable programmers with additional responsibilities lest they kill the golden goose. Instead, managers should look for challenges that will keep the stars at their peak performance level.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt is from the book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; published by Thought Pilots.&lt;br /&gt;&lt;br /&gt;Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;END NOTES&lt;br /&gt;&lt;br /&gt;The waterfall model is due to Winston Royce, “Managing the Development of Large Software Systems,” &lt;span style="font-style: italic;"&gt;Proceedings of IEEE WESCON&lt;/span&gt; 26, 1970, pp. 1-9. Ironically, Royce proposed the waterfall as an example of how &lt;span style="font-style: italic; font-weight: bold;"&gt;not&lt;/span&gt; to build software systems.&lt;br /&gt;&lt;br /&gt;Brooks’ Law, which states that adding manpower to a late software project only serves to make it later, is from Fred Brooks Jr., &lt;span style="font-style: italic;"&gt;The Mythical Man-Month: Essays on Software Engineering&lt;/span&gt;, Addison-Wesley, 1975.&lt;br /&gt;&lt;br /&gt;The first study to find significant differences in programmer productivity is Sackman, H. H., W. J. Erikson, and E. E. Grant, “Exploratory experimental studies comparing online and offline programming performance,” &lt;span style="font-style: italic;"&gt;Communications of the ACM&lt;/span&gt;, 11 (1), 1968, pp. 3-11. Brooks himself estimates that good programmers are 5 – 10 times more productive than ordinary ones.&lt;br /&gt;&lt;br /&gt;The 500 lines of code per month average is cited in Van Vliet, H., &lt;span style="font-style: italic;"&gt;Software Engineering Principles and Practice (Second Edition)&lt;/span&gt;, John Wiley &amp;amp; Sons, 2000, p. 175.&lt;br /&gt;&lt;br /&gt;An earlier version of this essay appeared in &lt;span style="font-style: italic;"&gt;Software Engineering Notes&lt;/span&gt;, volume 29, number 3, 2004.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-7518537536734615367?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/7518537536734615367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=7518537536734615367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/7518537536734615367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/7518537536734615367'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/10/programmer-life-cycle.html' title='The programmer life cycle'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOhQehjLYaI/AAAAAAAAAAw/wBJniZBj3aQ/s72-c/productivity.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-7560964158055529361</id><published>2008-10-04T20:54:00.000-07:00</published><updated>2011-08-11T22:54:58.181-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='David Parnas'/><title type='text'>I, Programmer: the Three Laws of Software Engineering</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if !mso]&gt;&lt;object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id="ieooui"&gt;&lt;/object&gt; &lt;style&gt; st1\:*{behavior:url(#ieooui) } &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;When I taught the third year undergraduate course on software engineering at the University  of Victoria (UVic), I began by asking students if they could define the topic of study, &lt;b style="mso-bidi-font-weight:normal"&gt;software engineering&lt;/b&gt;. Many of my students were in a formal engineering degree program; others were computer science majors within the Faculty of Engineering. Surprisingly, they struggled to offer a satisfactory definition of what it was they were studying.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So we start with engineering, which I take to be the building of useful tools for humanity. It follows that software engineering is the building of useful software tools for humanity. But isn’t that just programming? How is software engineering different from computer science? &lt;/p&gt;  &lt;p class="MsoNormal"&gt;A common public misconception is that computer scientists design and build computers. Designing computer hardware is actually the job of computer engineers. Computer science is about software: the mathematics of computation, the science of abstraction, and the art of programming. The vast majority of computer science graduates end up in careers as software engineers, writing practical software applications for other people to use.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Fred Brooks suggests that the scientist builds things in order to study, whereas the engineer studies in order to build things.&lt;a style="mso-footnote-id:ftn1" href="http://www.blogger.com/post-edit.g?blogID=3949103849985306683&amp;amp;postID=7560964158055529361&amp;amp;from=pencil#_ftn1" name="_ftnref1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="mso-special-character:footnote"&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="line-height:110%; font-family:Garamond;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-Times New Roman&amp;quot;;mso-ansi-language:EN-US;mso-fareast-language:EN-US; mso-bidi-language:AR-SAfont-family:&amp;quot;;font-size:12.0pt;"  &gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; In order to build software systems, the engineer must study computer science. Lots of computer science. Thus the reality is that most practicing software engineers are computer science graduates—not formally trained engineers. &lt;/p&gt;  &lt;div style="mso-element:footnote-list"&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt is from the book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; published by Thought Pilots.&lt;br /&gt;&lt;br /&gt;Want more? Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;hr align="left" size="1" width="33%"&gt;    &lt;div style="mso-element:footnote" id="ftn1"&gt;  &lt;p class="MsoFootnoteText"&gt;&lt;a style="mso-footnote-id:ftn1" href="http://www.blogger.com/post-edit.g?blogID=3949103849985306683&amp;amp;postID=7560964158055529361&amp;amp;from=pencil#_ftnref1" name="_ftn1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="mso-special-character: footnote"&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="line-height:110%;font-family:Garamond;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-Times New Roman&amp;quot;;mso-ansi-language: EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SAfont-family:&amp;quot;;font-size:10.0pt;"  &gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; Frederick P. Brooks, “The Computer Scientist as Toolsmith II,” &lt;i&gt;Communications of the ACM&lt;/i&gt;, 39 (3), 1996, pp. 61-68. He further postulates that by any reasonable criterion, computer science is not a science—it is engineering.&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-7560964158055529361?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/7560964158055529361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=7560964158055529361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/7560964158055529361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/7560964158055529361'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/10/i-programmer-in-which-i-try-to-distill.html' title='I, Programmer: the Three Laws of Software Engineering'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3949103849985306683.post-6467207578404423952</id><published>2008-10-04T17:59:00.000-07:00</published><updated>2011-08-11T22:54:03.071-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='undergraduate computer science curriculum'/><category scheme='http://www.blogger.com/atom/ns#' term='social aspects of software engineering'/><title type='text'>Software engineering is a social activity; forget that and your career is lost</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;&lt;i style="mso-bidi-font-style:normal"&gt;Software engineering is a social activity; forget that and your career is lost. &lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Not everyone can be a software engineer. It requires significant proficiency in mathematical reasoning, systems thinking, perseverance, and intelligence to build information storage and retrieval systems using today’s abstract programming techniques.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Thus, the goal of computer science curricula is to endow students with the requisite mathematical maturity and problem-solving skills to become good software engineers. However, nothing is typically done to instill students with the requisite plain old maturity needed to succeed in the emotional minefield that is the modern office.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In his influential book on the C++ programming language, Bjarne Stroustrup says that programming is a &lt;i style="mso-bidi-font-style: normal"&gt;human&lt;/i&gt; activity, and &lt;i style="mso-bidi-font-style:normal"&gt;all is lost&lt;/i&gt; if this is forgotten.&lt;a style="mso-footnote-id:ftn1" href="http://www.blogger.com/post-edit.g?blogID=3949103849985306683&amp;amp;postID=6467207578404423952#_ftn1" name="_ftnref1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="mso-special-character:footnote"&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="line-height:110%; font-family:Garamond;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-Times New Roman&amp;quot;;mso-ansi-language:EN-US;mso-fareast-language:EN-US; mso-bidi-language:AR-SAfont-family:&amp;quot;;font-size:12.0pt;"  &gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; While I don’t know that all is lost if we forget this, I will say that software engineering is a &lt;i style="mso-bidi-font-style:normal"&gt;social&lt;/i&gt; activity, and ignoring this fact is a recipe for career failure. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;This excerpt is from the book &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Lord of the Files,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; published by Thought Pilots.&lt;br /&gt;&lt;br /&gt;Buy it today at &lt;a href="https://www.createspace.com/3609125"&gt;CreateSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Join the discussion on &lt;/span&gt;&lt;a href="http://www.facebook.com/LOTFiles"&gt;Facebook&lt;/a&gt;.&lt;/p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;div style="mso-element:footnote-list"&gt;&lt;br /&gt;&lt;hr align="left" size="1" width="33%"&gt;    &lt;div style="mso-element:footnote" id="ftn1"&gt;  &lt;p class="MsoFooter"&gt;&lt;a style="mso-footnote-id:ftn1" href="http://www.blogger.com/post-edit.g?blogID=3949103849985306683&amp;amp;postID=6467207578404423952#_ftnref1" name="_ftn1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="mso-special-character: footnote"&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="font-size:10.0pt;mso-bidi-line-height:110%;font-family: Garamond;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-Times New Roman&amp;quot;; mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SAfont-family:&amp;quot;;font-size:12.0pt;"  &gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; Bjarne Stroustrup, &lt;i style="mso-bidi-font-style:normal"&gt;The C++ Programming Language (2&lt;sup&gt;nd&lt;/sup&gt; ed.)&lt;/i&gt; (Addison-Wesley, 1991), p. 363.&lt;/p&gt;  &lt;/div&gt;  &lt;div style="mso-element:footnote" id="ftn2"&gt;  &lt;p class="MsoFooter"&gt;&lt;a style="mso-footnote-id:ftn2" href="http://www.blogger.com/post-edit.g?blogID=3949103849985306683&amp;amp;postID=6467207578404423952#_ftnref2" name="_ftn2" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="mso-bidi-;font-size:10.0pt;" &gt;&lt;span style="mso-special-character:footnote"&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="line-height:110%; font-family:Garamond;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-Times New Roman&amp;quot;;mso-ansi-language:EN-US;mso-fareast-language:EN-US; mso-bidi-language:AR-SAfont-family:&amp;quot;;font-size:10.0pt;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3949103849985306683-6467207578404423952?l=www.white-trash-seng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.white-trash-seng.com/feeds/6467207578404423952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3949103849985306683&amp;postID=6467207578404423952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/6467207578404423952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3949103849985306683/posts/default/6467207578404423952'/><link rel='alternate' type='text/html' href='http://www.white-trash-seng.com/2008/10/software-engineering-is-social-activity.html' title='Software engineering is a social activity; forget that and your career is lost'/><author><name>Russell Ovans</name><uri>http://www.blogger.com/profile/04634368893750110609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rMFGdQn7DBs/SOfnzXlltEI/AAAAAAAAAAM/-YZOkNJgMtQ/S220/cartoon+me.jpg'/></author><thr:total>0</thr:total></entry></feed>
