...organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.http://en.wikipedia.org/wiki/Conway's_LawMelvin ConwayA complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.http://ivory.idyll.org/blog/apr-09/pursuing-simplicityJohn GallAll editor programmers are deemed to re-create emacs again, unless they're writing emacs.http://www.secretgeek.net/metanote_1.aspSamirAnd as a result we find that object-oriented languages have succumbed to static thinkers who worship perfect planning over runtime adaptability, early decisions over late ones, and the wisdom of compilers over the cleverness of failure detection and repair.http://dreamsongs.com/ObjectsHaveFailedNarrative.htmlRichard P. GabrielAny code of your own that you haven't looked at for six or more months might as well have been written by someone else.http://www.ddj.com/architect/202401129EaglesonAny company large enough to have a research lab is too large to listen to it.http://bc.tech.coop/blog/060224.htmlAlan KayAny comparison of hot JVM languages is likely to note that "Clojure is not object-oriented." This is true, but it may lead you to the wrong conclusions. It’s a little like saying that a rifle is not arrow-oriented.http://blog.thinkrelevance.com/2009/8/12/rifle-oriented-programming-with-clojure-2Stuart HallowayAs much as I love a debugger, it is disheartening to need to use it to understand my code.http://blogs.msdn.com/wesdyer/archive/2007/01/18/why-functional-programming-is-important-in-a-mixed-environment.aspxwesdyerBeauty has its place, but the search for beauty in software - indeed in most things - at the expense of value is an empty pursuit.IEEE 3/4 09, p. 12Grady BoochDebugging is twice as hard as writing the code in the first place. Therefore, if you wirte the code as cleverly as possible, you are, by definition, not smart enough to debug it.http://www.ddj.com/architect/202401129Brian KernighanEinstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.http://bc.tech.coop/blog/071226.htmlFred BrooksFor optimisation, more is known about a program written in a dynamically typed language at runtime than is known about programs in statically typed languages at compile timehttp://www.voidspace.org.uk/python/weblog/arch_d7_2008_09_06.shtml#e1010id5Gilad BrachaGood code is its own best documentation. As you're about to add a comment, ask yourself, 'How can I improve the code so that this comment isn't needed?' Improve the code and then document it to make it even clearer.Code CompleteSteve McConnellI did say something along the lines of "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows your whole leg off."Bjarne StroustrupI do my Java editing in Eclipse now. It doesn't work as well as EMACSonce did, but it works better than EMACS does now.http://dobbscodetalk.com/index.php?option=com_myblog&show=I-Love-EMACS%21-or-at-least-I-did...-.html&Itemid=29Bil LewisI invented the term Object-Oriented, and I can tell you I did not have C++ in mind.http://bc.tech.coop/blog/060224.htmlAlan KayI really didn't foresee the Internet. But then, neither did the computer industry. Not that that tells us very much of course - the computer industry didn't even foresee that the century was going to end.http://bc.tech.coop/blog/071226.htmlDouglas AdamsI should not choose long, hard words just to make other persons think that I know a lot. I should try to make my thoughts clear; if they are clear and right, then other persons can judge my work as it ought to be judged.http://www.brics.dk/~hosc/local/HOSC-12-3-pp221-236.pdfGuy SteeleI think programmers have become inured to incidental complexity, in particular by confusing familiar or concise with simple. And when they encounter complexity, they consider it a challenge to overcome, rather than an obstacle to remove. Overcoming complexity isn't work, it's waste.http://www.simple-talk.com/opinion/geek-of-the-week/rich-hickey-geek-of-the-week/Rich HickeyI would compare the Smalltalk stuff that we did in the '70s with something like a Gothic cathedral. We had two ideas, really. One of them we got from Lisp: late binding. The other one was the idea of objects. Those gave us something a little bit like the arch, so we were able to make complex, seemingly large structures out of very little material, but I wouldn't put us much past the engineering of 1,000 years ago.http://bc.tech.coop/blog/060224.htmlAlan KayIf builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilisation.Gerald WeinbergIf you look at software today, through the lens of the history of engineering, it’s certainly engineering of a sort—but it’s the kind of engineering that people without the concept of the arch did. Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.http://acmqueue.com/modules.php?name=Content&pa=showpage&pid=273Alan KayIt is better to have 100 functions operate on one data structure than 10 functions on 10 data structures.http://bc.tech.coop/blog/071226.htmlAlan PerlisIt is better to have 100 functions operate on one data structure than to have 10 functions operate on 10 data structures.Alan PerlisJava and C# are both such stifling languages that you need to be able to use code generators to make them effective.http://simonwillison.net/2004/Feb/11/codeGeneration/Make it work. Make it right. Make it beautiful. Make it fast.http://www.gungfu.de/facts/wiki/Main/PrematureOptimizationMeta means that you step back from your own place. What you used to do is now what you see. What you were is now what you act on. Verbs turn to nouns. What you used to think of as a pattern is now treated as a thing to put in the slot of an other pattern. A meta foo is a foo in whose slots you can put foos.http://wiki.gungfu.de/Main/MetaGuy SteeleOld friends are more fun to visit that old code.http://www.ddj.com/architect/202401129Only a subset of all possible programs can be written with statically typed languages. For some people that is enough.http://www.voidspace.org.uk/python/weblog/arch_d7_2008_09_06.shtml#e1010id5Gilad BrachaOrganizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.http://www.melconway.com/research/committees.htmlMelvin ConwayOur ability to imagine complex applications will always exceed our ability to develop them.Grady BoochStructure is nothing if it is all you got. Skeletons spook people if they try to walk around on their own. I really wonder why XML does not.http://groups.google.no/group/comp.lang.lisp/msg/7d410e0ae791d1cbErik NaggumTesting by itself does not improve software quality. Test results are an indicator of quality, but in and of themselves, they don't improve it. Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often. What you eat before you step onto the scale determines how much you will weigh, and the software development techniques you use determine how many errors testing will find. If you want to lose weight, don't buy a new scale; change your diet. If you want to improve your software, don't test more; develop better.Code CompleteSteve McConnellTesting is the engineering rigor of software development.http://metadeveloper.blogspot.com/2008/03/unit-tests-with-iron-python.htmlNeal FordThe competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.Edsger Wybe DijkstraThe goal of a software engineer is to retire without having caused any major catastrophe.IEEE 11/12 2008, p. 35DilbertThe real romance is out ahead and yet to come. The computer revolution hasn't started yet. Don't be misled by the enormous flow of money into bad defacto standards for unsophisticated buyers using poor adaptations of incomplete ideas.http://bc.tech.coop/blog/060224.htmlAlan Kaythe road to hell is patched with patches inspired by http://www.codinghorror.com/blog/archives/001299.htmlThere are two ways to try to make a software system reliable: make it so simple that it obviously has no bugs, or make it so complicated that it has no obvious bugs.http://mail.python.org/pipermail/python-list/2005-October/345521.htmlAlex MartelliThere's nothing wrong with plan-driven, waterfall-based, document-centric approaches.They're just not suited to controlling complex activities like software development.IEEE 3/4 09, p. 68This is not a trivial exercise. And yes, you can shoot yourself in the foot if you aren't careful. But in the end, there's two kinds of programmers in the world: those with dangerous techniques and those who dig.Reg BraithwaiteReg BraithwaiteUgly programs are like ugly suspension bridges: they're much more liable to collapse than pretty ones, because the way humans (especially engineer-humans) perceive beauty is intimately related to our ability to process and understand complexity. A language that makes it hard to write elegant code makes it hard to write good code.Eric S. RaymondUnterm Strich geschieht Softwareentwicklung also in einer monolithischen, hierarchischen Atmosphäre, die sich nicht grundsätzich von einer Fabrik des 19. Jahrhunderts unterscheidet.dotnetpro 9.2008, 64f.Ralf WestphalUntil real software engineering is developed, the next best practice is to develop with a dynamic system that has extreme late binding in all aspects.http://bc.tech.coop/blog/060224.htmlAlan KayWalking on water and developing software from a specification are easy if both are frozen.http://stackoverflow.com/questions/58640/great-programming-quotes/58806#58806Edward V BerardWe should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.Donald E. KnuthWhat became UML 2.0 is generally regarded as something that is good for growing roses, but it is less useful for flexible systems engineering.IEEE Software Sept./Oct. 2010 p. 63Tony Clark[Lisp is] "the greatest single programming language ever designed"http://bc.tech.coop/blog/060224.htmlAlan Kay