Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!xlned.com!feeder7.xlned.com!newsfeed.xs4all.nl!newsfeed1.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.053 X-Spam-Evidence: '*H*': 0.89; '*S*': 0.00; 'programmer': 0.03; '16,': 0.03; 'anyway.': 0.05; 'nasty': 0.07; 'ugly': 0.07; 'explanation': 0.09; 'mess': 0.09; 'oh,': 0.09; 'pgp': 0.09; 'wrote': 0.14; 'anyway': 0.14; 'thread': 0.14; '"code': 0.16; '(tm)': 0.16; 'assembler': 0.16; 'biological': 0.16; 'cleanup,': 0.16; 'costing': 0.16; 'did,': 0.16; 'direct,': 0.16; 'growth.': 0.16; 'insofar': 0.16; 'mess,': 0.16; 'personal,': 0.16; 'rarely': 0.16; 'tape': 0.16; 'sat,': 0.16; 'wrote:': 0.18; 'code.': 0.18; 'bit': 0.19; 'normally': 0.19; '>>>': 0.22; 'header:User-Agent:1': 0.23; 'evolving': 0.24; 'gets': 0.27; 'header:In-Reply-To:1': 0.27; 'point': 0.28; 'chris': 0.29; 'feature': 0.29; 'am,': 0.29; 'tim': 0.29; "doesn't": 0.30; 'bigger': 0.30; 'sets': 0.30; 'code': 0.31; 'getting': 0.31; 'comments': 0.31; 'lines': 0.31; 'requests': 0.31; 'usually': 0.31; 'constant': 0.31; "d'aprano": 0.31; 'fixing': 0.31; 'steven': 0.31; "who'd": 0.31; 'stuff': 0.32; 'run': 0.32; 'week.': 0.33; 'worked': 0.33; 'running': 0.33; 'ago': 0.33; 'period': 0.33; 'maybe': 0.34; 'something': 0.35; 'operate': 0.35; 'point.': 0.35; 'but': 0.35; 'there': 0.35; 'really': 0.36; 'next': 0.36; 'possible': 0.36; 'effort': 0.37; 'too': 0.37; 'requirements': 0.37; 'two': 0.37; 'being': 0.38; 'nov': 0.38; 'stable': 0.38; 'to:addr:python-list': 0.38; 'fact': 0.38; 'embedded': 0.39; 'to:addr:python.org': 0.39; 'days': 0.60; 'company': 0.60; 'guy': 0.60; 'most': 0.60; 'tracking': 0.61; 'new': 0.61; 'high': 0.63; 'kind': 0.63; 'such': 0.63; 'our': 0.64; 'design,': 0.64; 'become': 0.64; 'finally': 0.65; 'worth': 0.66; 'customers': 0.66; 'benefit': 0.68; 'attention.': 0.68; 'design.': 0.68; 'frustrated': 0.68; 'nobody': 0.68; 'results': 0.69; 'caused': 0.69; 'marketing': 0.70; 'commercial': 0.71; 'attention': 0.75; 'day': 0.76; 'lack': 0.78; 'inform': 0.78; 'entertaining': 0.84; 'increasingly': 0.84; 'redesigning': 0.84; 'terrible': 0.84; 'old,': 0.85; 'banking': 0.87; 'subject:Global': 0.91; 'thing,': 0.91; 'sheet': 0.93; 'woman': 0.96; 'economic': 0.98; '2013': 0.98 Date: Fri, 15 Nov 2013 17:33:55 -0600 From: Tim Daneliuk User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 Newsgroups: comp.lang.python To: python-list@python.org Subject: Re: PyMyth: Global variables are evil... WRONG! References: <7b97786a-2aaf-454c-8c3a-1c19d20d4345@googlegroups.com> <2373cb88-c3e8-46ee-bf0c-82bb69c97226@googlegroups.com> <5284393c$0$29975$c3e8da3$5496439d@news.astraweb.com> <528464af$0$29971$c3e8da3$5496439d@news.astraweb.com> <5285d8f4$0$29975$c3e8da3$5496439d@news.astraweb.com> <62rhla-r1p1.ln1@ozzie.tundraware.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (ozzie.tundraware.com [75.145.138.73]); Fri, 15 Nov 2013 17:33:55 -0600 (CST) X-TundraWare-MailScanner-Information: Please contact the ISP for more information X-TundraWare-MailScanner-ID: rAFNXtlD063241 X-TundraWare-MailScanner: Found to be clean X-TundraWare-MailScanner-From: tundra@tundraware.com X-Spam-Status: No X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Message-ID: Lines: 68 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1384558562 news.xs4all.nl 15974 [2001:888:2000:d::a6]:44445 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:59571 On 11/15/2013 09:42 AM, Chris Angelico wrote: > On Sat, Nov 16, 2013 at 2:26 AM, Tim Daneliuk wrote: >> On 11/15/2013 02:19 AM, Steven D'Aprano wrote: >>> Nobody sets out to*design* a tangled mess. What normally happens is that >>> a tangled mess is the result of*lack of design*. >> >> This has been an interesting thread - to me anyway - but this bit >> above caught my eye. People write programs for lots of reasons - >> personal, academic, scientific, and commercial - but I actually >> don't thing the resultant messes are caused by a "lack of >> design" most of the time. In my experience they're caused by only two >> things: >> >> 2) An evolving set of requirements. > > This can be an explanation for a lack of design, but it's no less a > lack. Sometimes, something just grows organically... from a nucleus of > good design, but undesigned growth. Maybe it's time it got redesigned; > or maybe redesigning would take too much effort and it's just not > worth spending that time on something that's going to be phased out by > the next shiny thing in a couple of years anyway. Doesn't change the > fact that the current state is not the result of design, but of > disorganized feature creep. That's not necessarily a terrible thing, > but Steven's point still stands: such lack of design often results in > a tangled mess, and a tangled mess can often be blamed on lack of > design. > > ChrisA > A fair point. Perhaps a better way to say this would be "Code that is a tangled mess is often so because good design was not possible during its creation." The problem, of course, is that in almost all circumstances there is usually not a lot of economic benefit to redesign and restructure the code once you *do* know the requirements. Other projects compete for attention and fixing old, ugly stuff rarely gets much attention. This is particularly true insofar as most organizations do a lousy job of tracking what it is really costing them to operate that kind of code. If they did, cleaning things up would become a much bigger priority. Oh, and inevitably, the person that wrote the code without stable requirements and without being given time to go back, refactor, cleanup, and restructure the code ... gets blamed by the people that have to run and maintain it. Years ago I worked for a company that did embedded banking software that ran on high speed check readers. It was an "application" that had been undergoing constant feature creep and change during about an 18 month period because the woman in marketing running the program get getting Bright New Ideas (tm) to peddle. The programmer - frustrated by this - began adding increasingly direct, personal, and biological comments about said marketing person in the comments of his assembler code. Anyway, the new feature requests finally stopped, and she came in one day to briskly inform us that the code had been sold to one of our customers and she'd need a tape by end of week. The guy who'd been writing all this turned sheet white and scrambled over the next few days to expunge all his nasty comments from thousands of lines of assembler. It was most entertaining to watch ... -- ---------------------------------------------------------------------------- Tim Daneliuk tundra@tundraware.com PGP Key: http://www.tundraware.com/PGP/