The 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. - E. J. Dijkstra, 1972 Turing award lecture % I mean, if 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say to yourself, "Dijkstra would not have liked this", well that would be enough immortality for me. - E. J. Dijkstra, August 1995 % We should forget about small efficiencies, about 97% of the time. Premature optimization is the root of all evil. - Donald Knuth % While it is possible that you are the first person to notice an obvious deficiency in system calls and libraries heavily used by hundreds or thousands of people, it is rather more likely that you are utterly clueless. - Eric S. Raymond % If you really feel that being a programmer makes you part of an elite and you want to keep others out of that elite, I pity you. - Guido Van Rossum % Things to avoid with MySQL Forgetting a WHERE clause with UPDATE or DELETE in the MySQL monitor. If you tend to do this, use the --i-am-a-dummy option to the mysql client. - MySQL presentation % Artists should always remember they're just the same breed as technicians. Ars and Techne are one another's translations in Latin and Greek respectively - there are different arts (also known as technologies), but only one Ars, Art, Techne. - Alex Martelli % You can't program anything of significance if you can't design, and you can't design if you don't understand how the design is to be programmed. Put more bluntly: pseudo code ain't gonna compile. - René Hollan % I have been, and always will be, a programmer: even when designing, Emacs is my canvas, and I expect C-x C-c to be engraved on my tombstone. - René Hollan % To claim that the strong, static type checking constraints in C++, Java, or C# will prevent you from writing broken programs is clearly an illusion (you know this from personal experience). - Bruce Eckel % When you have the experience of really being able to be as productive as possible, then you start to get pissed off at other languages. You think, "Gee, I've been wasting my time with these other languages." - Bruce Eckel (talking about Python vs. C++ and Java) % Usually at least once a school year a student will write a game good enough that school-wide "craze" erupts, with as much as half the student body playing the game. [...] It may be only briefly, but geeks CAN be cool. - Vern Ceder, Nathan Yergler % Finding a pianist who can play the notes is cheap. Just as finding a programmer who can write code is cheap. [...] Finding a pianist who is a musician, or finding a coder who is an artist - that is a rare and precious find indeed. - Russell, on Slashdot % Solving too general a problem too soon is a pitfall of application development - it is almost always better to do less than to do more. - David Mertz % ...some marketroid at Microsoft made the decision that: "OLE is obsolete, now use ActiveX", and after two years: "ActiveX is obsolete, now use DNA", and after two years: "DNA is obsolete, now use COM", and after two years: "COM is obsolete, now use DCOM", and after two years: "DCOM is obsolete, now use .NET", and after two years: ".NET is obsolete, now use XXX", and after two years: ... - jafac, Slashdot (paraphrased) % I wrote code so you don't have to. - O'Reilly T-shirt % Like music and mathematical equations, computer language is just that, language, and it communicates information either to a computer or to those who can read it. ... For the purposes of First Amendment analysis, this court finds that source code is speech. - Judge Marilyn Hall Patel % I think that it is this factor "more arbitrary gunk to memorise" which more than anything else contributes to making computer languages hard to learn. - Laura Creighton % Every [programmer] should ask himself periodically "Toward what end, toward what end?" - but do not ask it too often lest you pass up the fun of programming for the constipation of bittersweet philosophy. - Alan J. Perlis, SICP % ...programs must be written for people to read, and only incidentally for machines to execute. - Alan J. Perlis, SICP % Mathematics provides a framework for dealing precisely with notions of "what is." Computation provides a framework for dealing precisely with notions of "how to." - Alan J. Perlis, SICP % We need a language that lets us scribble and smudge and smear, not a language where you have to sit with a teacup of types balanced on your knee and make polite conversation with a strict old aunt of a compiler. - Paul Graham, January 2004 % People get worried about .NET and decide to rewrite their whole architecture for .NET because they think they have to. Microsoft is shooting at you, and it's just cover fire so that they can move forward and you can't, because this is how the game is played, Bubby. - Joel Spolsky, January 2004 % How is making C# a standard on Windows and Linux going to hurt Microsoft? ... Their enemies are now working, for free, to extend Microsoft's monopoly onto new platforms. ... Mono and dotGNU have no practical use, and exist only with the patronage of Microsoft. - Neil Davidson, The Register, February 2004 % The next stage is to drop the complexities of Java and C# and do it all in scripting languages like Python which allow easier, faster and cheaper software development. Microsoft are already doing this with the .Net version of Visual Basic and it is on its way for Java with projects like Jython. - Nicholas Blachford, osnews.com, 2004 % If your customer base is likely to imbibe, you must design accordingly. - Jakob Nielsen, Alertbox, March 2004 % Instant web server: 1) cd /directory/to/be/published 2) python -c 'import SimpleHTTPServer; SimpleHTTPServer.test()' 3) point your browser to http://localhost:8000/ 4) Profit. :^) - Nicola Larosa % Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. - John F. Woods % Giving indentation semantic meaning is a stroke of genius. I'm sure most programmers consider this to be frighteningly annoying, but most programmers are wrong. - Joel Spolsky, March 2004 % ...you cannot rely on static checking to verify program correctness, and therefore it is unreasonable to obscure the meaning of your program with high-ceremony syntax under the illusion that it is somehow safer. For full safety, you'll always have to have run-time tests, and you'll always have to write your own tests. - Bruce Eckel, March 2004 % Do not write "expression = NULL" because NULL is not "equal to" NULL. (The null value represents an unknown value, and it is not known whether two unknown values are equal.) - PostgreSQL 7.4 documentation % Decades ago, high school students heading for college were taught Latin. Teaching this dead language helped teach students more about how languages are structured. To a small degree, computer programming is an opportunity to replace this lost art. - Michael McLay, April 2004 % We can be so conditioned to complexity and cleverness, that it becomes hard to find the simplicity and obviousness "hiding" right in front of our nose! Fortunately, Python helps a lot in this quest for simplicity and clarity. - Alex Martelli % Overall, the number one thing I've figured out from this whole exercise [writing a VoIP phone program] is that people who refer to Python dismissively as "just a scripting language" probably don't know what they're talking about. - Anthony Baxter, PyCon 2004 % When I see a slender volume sitting among the telephone-directory-sized tomes, I usually pick it up on the assumption that it should be good if it's so lean. I am not often disappointed. - mwood, Slashdot, September 2004 % Programming without a lot of ego is another way of stating the goal. Don't be so attached to your code that the idea of other people improving/changing it drives you crazy. You should *want* them to do that. - Kirby Urner, May 2005 % That's a bit too much navel-gazing for me. With enough effort, you make anything a symbol of anything else. But that doesn't get any code written. - Robert Kern on comp.lang.python, July 2005 % ...I do no real world applications like triple mersenne first person shooters, only business software like the one which in earlier time was written in COBOL or carved into cave walls. Less challenge, higher reward. - Harald A. Massa, November 2005 % Most 40+ programmers don't work for large companies. By that point in your life you've learned enough to know that big companies move slowly and make dumb decisions. By age 40, you've either moved into management to particip- ate in the stupidity, or you've left for a small company or consultancy. - kawika on Slashdot, December 2005 % Programming is programming. There just is no such thing as a "scripter" or a "content developer" or even a "template programmer". Just like you can't be "a little pregnant", you aren't ever a "small programmer." - Chris McDonough, December 2005 % You should be unhappy with code you wrote a year ago. If you aren't, that means either A) you haven't learned anything in a year, B) your code can't be improved, or C) you never revisit old code. All of these are the kiss of death for software developers. - Jeff Atwood, March 2006 % We all write shitty software. But only the best developers realize they're doing it. It'd be ironic if it wasn't so depressing. - Jeff Atwood, March 2006 % SOAP-based services are called "Web Services" because their proponents wish to partake of the Web's success - yet they don't build on its core technologies, URIs and HTTP. Somehow many have equated SOAP and Web Services but HTTP has been in Service on the Web for more than a decade now and has not yet hit its prime. - Paul Prescod, April 2002 % I think we're done more or less with the evangelism and technical food fights with the WS-* and Enterprise crowds. It's time for REST to proceed on its own terms and not in contrast and counterpoint to something else. - Bill de hóra, March 2006 % Implementation details matter. They cost money, and break hearts. - Bill de hóra, March 2006 % The need for complex systems in the enterprise was and still is greatly overestimated. The trick isn't to make PHP more complex, it's to make the enterprise less complex. - Ryan Tomayko, May 2005 % A style guide is about consistency. Consistency with this style guide is important. Consistency within a project is more important. Consistency within one module or function is most important. But most importantly: know when to be inconsistent - sometimes the style guide just doesn't apply. - Guido Van Rossum, Barry Warsaw, July 2001 % I think my argument against Web Services really has two purposes: first, to try and convince people that they're not needed, but second, should I fail at the first, to get them out of the W3C so that the Web and the Semantic Web projects can continue to grow without having to worry about Web Services. - Mark Baker, December 2002 % Many software developers have become hostage to the development frameworks that they utilise. In turn, many frameworks have made session state a fundamental building block of web development because it permits sloppy design. - Alan Dean, April 2006 % I think the first I ever heard that user session state was "bad" was from REST proponents, and that was fairly recently. As REST becomes better and more widely understood, I believe people are starting to think differently about how to architect a web application. I certainly am. - Bill Venners, April 2006 % Q. (anonymous): What do you think we should do about SOA? A. (Tim): Don't do anything. "SOA" may have meant something once, but it's just vendor bullshit now. - Tim Bray, April 2006 % Free software C programmers - most especially desktop applications prog- rammers: holy crap, what's wrong with you. It's 2006, people, what are you *doing*. You will get your applications done in maybe 1/10 as much time if you use a dynamic language. - Glyph Lefkowitz, April 2006 % The answer isn't to make the command-and-control system harder to get around, but to throw the system away. People do their best work not because they have to, but because they want to, and it's a rare IT professional who wants to do their best work under the iron fist of someone who looks to Dilbert's Pointy-Haired Boss for inspiration. - Andy Lester, May 2006 % Don't use the word "performance" when you are really talking about speed. If you mean speed, say "speed." - Ka-Ping Yee, May 2006 % The general lesson that I take away from this bug is humility: It is hard to write even the smallest piece of code correctly, and our whole world runs on big, complex pieces of code. - Joshua Bloch, June 2006 % Repeat this after me: "There's nothing natural about a GUI in the least." Good. Repeat every day until you reach satori. - Dan Russell, June 2006 % All we're asking is that you stop spreading misinformation about the current state of dynamic languages to the press, analysts, and your customers. This does not require you to champion or otherwise support these technologies - just stop lying about them. - Ryan Tomayko to James Gosling, March 2006 % Mochikit is well designed and well thought out, and Python/Twisted/Nevow developers will definitely find its API very familiar. [...] Mochikits's capabilities will probably surprise you - the createDOM function, iteration tools and the asynchronous architecture are a work of art. - Dan Webb, June 2006 % Don't get me wrong, I like Ruby. And it's not particularly difficult to read. But the philosophy of the language designers led to design choices that emphasize writability over readability. And in that department I think the advantage has to go to Python. - Mark Ramm-Christensen, June 2006 % The new Microsoft products released in Nov 2005, C# 2005, Visual Studio 2005 and SQL Server 2005 [...] show big increases in book sales. When we look at the job data we don't see any corresponding changes. - Roger Magoulas, July 2006 % On the one hand we've got the "who gives a sh*t" crowd, hacking away with stuff like PHP, oblivious until someone tells them something else is cool while on the other we've got the "I love complexity" crowd, happy to buy obscure (typically Java) abstractions to flagellate themselves with, never questioning whether it's a good idea or not. - Harry Fuecks, July 2006 % It is one of the reasons why the expressive and diagnostic power of computer programming languages are so fascinating to me. Anything that involves me typing less or reading less "stuff" in order to get machines to do my bidding, the better. - Sean McGrath, August 2006 % The compiler doesn't care if the person who forgot the curly brace is wearing a black lace bra. - Kathy Sierra, August 2006 % Yes, Unicode is hard. There is nothing to be done about this. We have a myriad of languages, writing systems and local conventions, and they complicate just about everything. That's our wacky, wondrous world for you. Nevertheless, as a software professional in this age, there is no excuse not to buckle down and learn the rigors of i18n. - Uche Ogbuji, Aug. 2004 % Poo-Poo to static languages. Django makes me happy. Struts makes my spleen ache. I've bloody well had enough of J2EE too. It's like the Sun engineers got paid by the line. - Anonymous on Code Craft blog, October 2006 % I remember the first web services summit we did, where a Microsoft developer who I won't name admitted that SOAP was made so complex partly because "we want our tools to read it, not people." - Tim O'Reilly, cited by Brady Forrest, December 2006 % * XML - works * JSON - works * REST - works * WS-Kaleidoscope - are you kidding me? - Uche Ogbuji, January 2007 % The rise of AJAX apps gives us a clean break in user expectations and therefore the opportunity to invent new patterns. The next 3-4 years is a very exciting time if you're interested in interaction design. I'm not going to waste the opportunity by copying the desktop poorly. - Karl Guertin, December 2006 % The big SOAP boys are now admitting they f'd up big time. Let's see how they try to make a dime off of HTTP and other really open and already proven and relatively simple technologies. Good luck with that. [...] Isolating crap like SOAP and ultimately removing it are steps toward sanity and successful transition. - Patrick Logan, January 2007 % Let's recognise that the SOAP dream of dynamic service binding, interop and global services is dead. The only place SOAP survives is in the enterprise, because if you can control both ends of the conversation, you can use the same toolkit and eliminate interoperability. - Steve Loughran, January 2007 % I’m personally over losing sleep to Microsoft’s bad engineering and management decisions. If the IE team decides to get with the program and give us a good query engine, we’ll use it. Until then, they get best effort. Their browser only deserves to look as good (or bad) as it really is, after all. - Alex Russell (Dojo), February 2007 % Probably the best we can do is to design our server-side as a true REST server with an Ajax client on top. The server serves mostly static files (HTML, CSS, JS, images) [...] The client accesses the server to get static files, and to get dynamic content using REST conventions, and renders proper HTML. - Eugene Lazutkin, February 2007 % We are not mere technicians. We are not throwing words around for our health. We are not out here to make a buck, because there are surely easier ways to do it. We came here looking for something. Will you find it? Or will you build it? - Scott Jason Cohen, July 2000 % You do have an automated test suite, right? And it does run periodically (daily or upon every check-in) in a continuous integration system, right? And you have everything set up so that you're notified by email or RSS feeds when something fails, right? And you fix failures quickly so that everything turns back to green, because you know that too much red, too often, leads to broken windows and bit rot, right? - Grig Gheorghiu, February 2007 % Our criticisms of WS-* are specific and have to do with issues of process and stability and technical quality and a demonstrated lack of interoper- ability. It is badly-engineered technology, using it will increase the likelihood that your project fails, and it is not suitable for use by conscientious IT professionals. - Tim Bray, February 2007 % Right now we have two wildly advanced platforms: the desktop operating system and the Internet. That leaves users with a frustrating choice. [...] We don't believe people should have to make that choice. - Blake Ross about Parakey, November 2006 % The biggest problem with MySQL was always that you just couldn't trust the team to be killing themselves to achieve robustness. D. Richard Hipp [SQLite author], OTOH, has consistently earned that trust. It's all the difference in the world. - njs, March 2007 % My father learned Fortran in 1966. He was told that he shouldn't really invest his time on it, because Fortran would die soon. Well, it's taking longer than BSD. - Roberto De Almeida, April 2007 % It should be pretty obvious that dynamic + optional static types is a better approach than static + optional dynamic features. The latter is premature optimization, plain and simple: the root of all evil. - Steve Yegge, February 2007 % I can't tell you how many times I've heard people say they wouldn't use Ruby because it lacks automated refactoring tools. Ruby doesn't actually need them in the way Java does; it's like refusing to switch to an electric car because there's no place to put the gasoline. - Steve Yegge, February 2007 % Io di questi tempi lotto solo con MySQL (purtroppo quello è il DB relazionale usato a Google, doppio sigh) e il mio odio per esso non è affatto in calo. [...] Continuo a sognare di poter lavorare con uno strumento serio, come PostgreSQL [...] . - Alex Martelli, Maggio 2007 % Mozilla is leaning towards Python. Adoption of Python at Google is growing. Heck, the OLPC project picked Python. Ruby is getting all the press, but it seems that it's Python that people are really picking up. - Aristotle Pagaltzis, May 2007 % Microsoft wants to lure developers to build applications for Longhorn, and no surprise. To mangle three metaphors, if you drink that kool-aid, you're either locked in the trunk like Dave Winer says or if you like my metaphor-ware better, you're a sharecropper. Either way, it sucks. Don't go there. - Tim Bray, July 2003 % ActiveRecord doesn't even support foreign keys out of the box, instead requiring a plugin in order to deal with them. People say this is due to ActiveRecord's history as a MySQL-oriented ORM, and as we all know, MySQL for many years tried to convince us all that foreign keys were silly. Well, they lost that argument, and it's too bad ActiveRecord is still trying to make it. - Michael Bayer, May 2007 % Most users don't care about the distinction between GET and POST (sadly, neither do many developers), but I think there is an understanding that links just lead to another page, whereas buttons perform an action. I see no reason to violate this. - Chris Shiflett, December 2006 % One day when I was working across the table from Paul [Rubin], some other people in the building were trying to write a program using rm, the Unix utility to delete things, when they checked the man page. They quickly spun around. "Hey Paul" they asked. "Did you write rm?" "Oh yeah," Paul replied, with a dismissive wave of his hand. "But that was a long time ago." - Aaron Swartz, June 2007 % The Spring framework for Java [...] manages to drag corporate web development halfway from J2EE-hell to Django in the same way that Java dragged corporate programmers halfway from C++ to Lisp. - Jason McBrayer, July 2007 % Bisogna stare attenti a generalizzare le cose che si apprendono con Java. Altrimenti si finisce per concludere che programmare è un'attività noiosa, cosa che non è per nulla vera! :-) - Antonio Cuni, Luglio 2007 % Designing a framework is hard; you've got to search for things that are as close to truly universal as possible. Otherwise you end up including every little pet feature that someone asks for, and that's known as "PHP". - Jacob Kaplan-Moss, Django developer, July 2007 % Frankly, I don't understand why all of these startups are spending all their time trying to build inside of Facebook's walled garden... well, I guess I do understand it: they like the quick hit of watching the apps #s run up. However, it makes no sense to me to build inside of someone else's platform when you have the wide open internet out there to develop on. - Jason Calacanis, July 2007 % AtomPub sits in a very strange place, as it has the potential to disrupt half a dozen or more industry sectors, such as, Enterprise Content Management, Blogging, Digital/Desktop Publishing and Archiving, Mobile Web, EAI/WS-* messaging, Social Networks, Online Productivity tools. - Bill de hÓra, July 2007 % Object Oriented Programming puts the Nouns first and foremost. Why would you go to such lengths to put one part of speech on a pedestal? Why should one kind of concept take precedence over another? [...] As my friend Jacob Gabrielson once put it, advocating Object-Oriented Programming is like advocating Pants-Oriented Clothing. - Steve Yegge, March 2006 % Embracing the Web is going to get you a better result on the Web than not embracing the Web. If you want more evidence, look no further than PHP, a deeply-flawed tool whose success is based on (admirably well-done) Web-centricity. - Tim Bray, July 2007 % I really worry that we shouldn't be trying to reinvent Turbogears here [in Django]. If somebody wants plug-and-change-their-mind components, it's already spelt "Turbogears" or "Pylons". - Malcolm Tredinnick, August 2007 % The average developer [...] will start with RSS 'cause it's got the brand, and he'll likely only want to switch to Atom if he has problems with HTML in feeds [...]. OTOH, the experienced developer understands that RSS is a crock. She's gonna want [...] full Atom support. - Jacob Kaplan-Moss, August 2007 % People are finally beginning to see that static type checking is useful in small amounts and intrusive in large amounts (although I suspect this realization won't reach the main group of Java designers for years to come). - Bruce Eckel, September 2007 % As a programmer, thanks to plummeting memory prices, and CPU speeds doub- ling every year, you had a choice. You could [spend] six months rewriting your inner loops in Assembler, or take six months off to play drums in a rock and roll band, and in either case, your program would run faster. Assembly programmers don't have groupies. - Joel Spolsky, September 2007 % There are two things going on in all this talk about the semantic web. One is recycled rubbish and one is real. The recycled rubbish is the Artificial Intelligence nonsense, the visionary technologist's wet dream that will not die. Sorry folks - it ain't gonna happen. It wasn't going to happen last century, and it's not going to happen now. Can we please just forget about Artificial Intelligence? - Terry Jones, 2007 % I look on timelines and roadmaps as lies dressed up in fancy clothing. When Fred Brooks wrote his famous book on software management, nobody really had a handle on how to plan or schedule software projects. Thirty-two years later, nobody really has a handle on how to plan or schedule software projects. - James Bennett, October 2007 % You might be able to get 20% more raw code out of people by begging everybody to work super hard, no matter how tired they get. This causes debugging time to *double*. An idiotic move that backfires in a splendidly karmic way. - Joel Spolsky, FogBugz docs, 2007 % I've been bitten by [Javascript] mutable built-ins one too many times to trust that in any language (and that leads to an interesting disconnect, where Ruby people flock almost exclusively to Protoype - which does fiddle with the built-ins - and Python people flock almost exclusively to Mochikit or Dojo). - James Bennett, June 2006 % B.deH.: Amazon SimpleDB's non-REST API [...] is not unlike shipping a database that lets you update by embedding actions in SELECT statements. R.T.: The potential is there for Amazon to set principled web design back three to five years if SimpleDB gets traction under its current design. Sad. - Bill de hÓra, Ryan Tomayko, December 2007