Old fashioned engineering - in the Midlands of England. Imagine the scene as some widget or other was designed at the turn on the last century. Chimneys belching smoke out over the "Black Country", and workers belching smoke out from their Players, Marlboro or Senior Service.

I've oft heard the term "it was designed on the back of a fag packet" used (American readers - please note that a "fag" is a cigarette here in the UK), and used with a degree of admiration ... often the complete phrase is "it was designed on the back of a fag packet and it's still in use, and working well, today". And there's good reason that a "fag packet" design should work well. Let me explain.
A cigarette packet is small - the clear space on the back is - what - 3.5" x 2"? And in that space, and diagram / design drawn could only be a simple, clean structure as there was no space for anything more. Smoke another pack of 20
(this post is NOT a serious suggestion that you smoke, as smoking can damage your health, that of your unborn baby, and that of those around you), and you can then take one of the components on your original design and expand that part of the design in a further level of simple, clean structure. Go on in the same way until your design is complete. The fag packet method is a great encourager of structured design ...
(written 2006-06-06)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Q904 - Object Orientation and General technical topics - Analysing a Programming Task [3895] Flowchart to program - learning to program with Well House - (2012-10-14)
[3461] From flowchart to program - code design for the newcomer - (2011-09-29)
[3366] Specification, Design, Implementation, Testing and Documentation - stages of a (Java) programming project - (2011-07-21)
[3329] Perl from basics - (2011-06-20)
[2834] Teaching examples in Perl - third and final part - (2010-06-27)
[2715] Uploading an image, document or pdf via a browser (php) - (2010-04-10)
[2327] Planning! - (2009-08-08)
[1853] Well structured coding in Perl - (2008-10-24)
[1850] Daisy the Cow and a Pint of Ginger Beer - (2008-10-21)
[1607] Learning to program in Perl - (2008-04-11)
[1513] Perl, PHP or Python? No - Perl AND PHP AND Python! - (2008-01-20)
[1345] Perl and Shell coding standards / costs of an IT project - (2007-09-11)
Q907 - Object Orientation and General technical topics - Object Orientation: Design Techniques [4098] Using object orientation for non-physical objects - (2013-05-22)
[3978] Teaching OO - how to avoid lots of window switching early on - (2013-01-17)
[3928] Storing your intermediate data - what format should you you choose? - (2012-11-20)
[3887] Inheritance, Composition and Associated objects - when to use which - Python example - (2012-10-10)
[3878] From Structured to Object Oriented Programming. - (2012-10-02)
[3844] Rooms ready for guests - each time, every time, thanks to good system design - (2012-08-20)
[3798] When you should use Object Orientation even in a short program - Python example - (2012-07-06)
[3763] Spike solutions and refactoring - a Python example - (2012-06-13)
[3760] Why you should use objects even for short data manipulation programs in Ruby - (2012-06-10)
[3607] Designing your application - using UML techniques - (2012-02-11)
[3454] Your PHP website - how to factor and refactor to reduce growing pains - (2011-09-24)
[3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
[3085] Object Oriented Programming for Structured Programmers - conversion training - (2010-12-14)
[3063] Comments in and on Perl - a case for extreme OO programming - (2010-11-21)
[2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
[2953] Turning an exercise into the real thing with extreme programming - (2010-09-11)
[2889] Should Python classes each be in their own file? - (2010-07-27)
[2878] Program for reliability and efficiency - do not duplicate, but rather share and re-use - (2010-07-19)
[2865] Relationships between Java classes - inheritance, packaging and others - (2010-07-10)
[2785] The Light bulb moment when people see how Object Orientation works in real use - (2010-05-28)
[2747] Containment, Associative Objects, Inheritance, packages and modules - (2010-04-30)
[2741] What is a factory? - (2010-04-26)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2523] Plan your application before you start - (2009-12-02)
[2501] Simples - (2009-11-12)
[2380] Object Oriented programming - a practical design example - (2009-08-27)
[2170] Designing a heirarcy of classes - getting inheritance right - (2009-05-11)
[2169] When should I use OO techniques? - (2009-05-11)
[1538] Teaching Object Oriented Java with Students and Ice Cream - (2008-02-12)
[1528] Object Oriented Tcl - (2008-02-02)
[1435] Object Oriented Programming in Perl - Course - (2007-11-18)
[1224] Object Relation Mapping (ORM) - (2007-06-09)
[1217] What are factory and singleton classes? - (2007-06-04)
[1047] Maintainable code - some positive advice - (2007-01-21)
[836] Build on what you already have with OO - (2006-08-17)
[831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[534] Design - one name, one action - (2005-12-19)
[507] Introduction to Object Oriented Programming - (2005-11-27)
[236] Tapping in on resources - (2005-03-05)
[80] OO - real benefits - (2004-10-09)
2c4d
Some other Articles
Want to be a technical trainer in the UK?Almost everyone losesCottage industry or production line data handling methodsGetting rid of variables after you have finished with themThe Fag Packet Design MethodologyDomain Listing Center and Domain Registry of AmericaPython modules. The distribution, The Cheese Shop and the Vaults of Parnassus.We can offer a room, but we can't operate on a dogHow to debug a Perl programA visit from the solicitor