May 7, 2007
My all-time favorite programming quote has to be this Nathaniel Borenstein bon mot:
It should be noted that no ethically-trained software engineer would ever consent to write a DestroyBaghdad procedure. Basic professional ethics would instead require him to write a DestroyCity procedure, to which Baghdad could be given as a parameter.
It's too perfect. Never have programmers been more neatly summarized.
There are a few great collections of programming quotes on the web which are fun to browse through:
If I find a quote that resonates with me, I research the person behind the quote. Larry Wall is a good example:
I think that the biggest mistake people make is latching onto the first idea that comes to them and trying to do that. It really comes to a thing that my folks taught me about money. Don't buy something unless you've wanted it three times. Similarly, don't throw in a feature when you first think of it. Think if there's a way to generalize it, think if it should be generalized. Sometimes you can generalize things too much. I think like the things in Scheme were generalized too much. There is a level of abstraction beyond which people don't want to go. Take a good look at what you want to do, and try to come up with the long-term lazy way, not the short-term lazy way.
Jason Kottke did most of the work for me by putting together a great Larry Wall reading list:
If that's too much rah-rah Perl action for you, read this article questioning the future of Perl in Bugzilla to get some equal time. But I don't have to dogmatically accept Perl to respect Larry Wall. I doubt Larry would want me to, anyway. It's not about the language; it's about learning to understand programmers as human beings.
You can't know every notable personality in the field of computer science. But reading through some of their quotes is as good a place as any to start. It's one way to find out, at least peripherally, who the giants are in the industry, and what they're most famous for. Browsing through quotes also lets you figure out who your influences are-- or should be. Personally, I'd cite Jef Raskin and Steve McConnell as my two greatest influences.
Who are the greatest influences on your work as a software developer? And more importantly, what's your favorite quote from your influences?
Posted by Jeff Atwood
"The way it was implemented here is not the way it was implemented at places it works"
-- coworker in the hallway.
My favorite quote as related to programming or development in general is by Moishe Lettvin--conveniently, taken from the same blog entry which led me to yours here some months ago.
"If you have profound knowledge of the cloud of problems around programming, of the higher level problems you're trying to solve, you'll do a better job programming. This is obvious, and explains why the best programs are always the ones programmers write for themselves, eg. emacs, Google, VisicIlc, etc. And it conversely explains why so many programs are so uninspired, too: if you'll never use the feature you're writing, you're not going to imbue it with brilliance, because the brilliance will never occur to you."
Being a developer going through the trials and tribulations of end users making change requests a few weeks before launching the system, my current favourite (and apologies for not remembering who said this)
It's not a bug...it's a feature!!
All my favourites seem to have appeared including the "other 90% of the time" and the "I'll use regular expressions" quotes.
Instead I'll try to paraphrase a line from Operating Systems Concepts by Peterson and Silberschatz (sp?). It discusses multiprogramming in computers. I hope I don't b@$+@^dize it too badly.
"Multiprogramming is like a lawyer. While the lawyer is waiting for papers to be drawn up for one case, he can be doing research for another or preparing for a court date. In this manner, a lawyer need never be idle. Idle lawyers tend to become politicians, so there is a certain social value to keeping them busy".
"I'm too stupid to run this program"
(who does not realize that the real fault lies in the developer)
My favourite, the one I have on a sticker on my monitor is: "Assumption is the mother of all f***ups". Source unknown.
"It's not that I'm surrounded by incompetence that bothers me, it's that I fit in so well."
"I have a rock garden. Last week three of them died."
- Richard Diran
i found this quote somewhere:
"Some programmers just need to take a deep breath and write code that is a delicious salami sandwich, and not an extravagantly prepared four course meal that tastes like shit."
"In order to understand recursion, one must first understand recursion."
I don't know who said it, but I think it's awesome :)
I'd say the people I've always looked up to are the likes of Carmack, McConnell, Abrash, Knuth and Fowler.
"Giving up on Microsoft" - Jeff Atwood. ;)
"If you don't want to be replaced by a computer, don't act like one."
- Arno Penzias, Ideas Information
"In order to understand recursion, one must first understand recursion."
Not my favourite, but in the same vein as the above quote:
"He works at the department of redundancy department"
The lary wall quote is interesting.
I've been learning Ruby lately and am just completely miserable with it.
It's kind of like a language for people who just want to play. It has all sorts of neat tricks--alternate ways to do things that look cute and are fun but obfuscate the hell out of the code.
Most are little changes for absolutely no reason...
Putting the if at the end, for no reason except that it might have suited some developers twisted sense of ascetics (x = 5 if x 5)
Replacing a string concatination with substution for the same reason. Sometimes it saves 1 character of typing, sometimes it costs 1, but since it's different, it's yet another alternate way to do something:
a="bill was " + location
can be replaced with
a="bill was $(location)"
ooh, big advantage. Larry was right--Keep the language features at a minimum, keep patterns. ALWAYS enforce use of parentheses for method calls, just follow the same pattern every time.
Being able to override operators makes me feel kind of ill, Not that it's not "Cute" but "Cute" doesn't justify hiding a method call in a place that doesn't look like a method call. It really doesn't hurt anyone if you just use a method called "lookup()" or something instead of overriding 
The thing that really tore it is the lack of anything equivalent to "Option Explicit". I know lots of people that wouldn't hire anyone who didn't understand that "Option Explicit" HAS to be the first line of every VB file--and Ruby has no way to do this.
Everything in this language defies larry wall's quote, and although I've never been a huge perl fan either, all of a sudden I'm feeling a lot more respect for the man.
Saving a few keystrokes isn't generally a good thing unless you only have two fingers to type with.
"A developer writes an average of 6 lines of code per day for the entire project; think what you can do with 6 lines of Assembler and with 6 lines of a high level language"; anonymous (actually just don't remember). Changed my life. :)
'In pursuit of the dubious goal of producing idiot-proof, zero-learning-curve programs, even programs intended for heavy-duty use such as editors--arguably the most important piece of software you'll use--have been turned into children's toys, effectively expert-proofed' -- Tom Christiansen
I also like Steve McConnell. I like his idea of designing in greater and greater detail until you feel that implementing the design would be easier than designing in more detail. I also hold dear the belief that good software design/architecture/development is about managing complexity.
This idea relates to a fantastic insight from Juval Lowy in his WCF book.
He points out two very important things.
"...If you examine the brief history of software engineering just outlined, you notice a pattern: every new methodology and technology generation incorporates the benefits of its preceding technology and improves on the deficiencies of its preceding technology. However, every new generation also introduces new challenges. I say that MODERN SOFTWARE ENGINEERING IS THE ONGOING REFINEMENT OF THE EVER-INCREASING DEGREES OF DECOUPLING."
"...Good coupling is business-level coupling...Bad coupling is anything to do with writing plumbing."
This is important when you look at the disadvantages of too much coupling.
Juval also points out in his book the relationship between service(or component) sizes and the number of services(or components) in a system.
The integration cost is proportional to x squared and the cost per service(or component) is proportional to 1 on z squared, where x is the number of services and z is the size of each service.
So for some values of x and z the product x*z will be a minimum and this is the minimal cost.
Quidquid latine dictum sit, altum sonatur.
Or 'Whatever is said in Latin sounds profound.'
"I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."
see google's programmers search engine http://devshots.com
Devshots returns Google search results, but emphasize on programming related sites and resources. So the search result will be smart and accurate.
My best quote was spoken to me by a veteran mainframe programmer when I was young(er) and while discussing with him several options that would be included in a new feature we were about to begin to implement together.
He said: "That can be an enhancement"
Very wise man, I've stated it to customers numerous times since.
Don't Code What You Can't Debug Later!
Funny stuff. A little nerdy, but I can appreciate it. This actually might be where my friend gets all of his coding/informatics quotes. Some of these seemed familiar...
Of late, Josh Bloch and Bruce Tate. (Yes, I am a Java coder.) Over the long term I cannot think of any one person...they have all mashed together over the course of time.
Excellent quote links. I've been collection quotes for a while. One of my favs:
"This is not to say that design is unnecessary. But after a certain point, design is just speculation." --Philip Chu
pasting code from the internet into production code is like chewing gum found in the street.
"the secret to survivin is knowin what to throw away and knowin what to keep" - the gambler
pertains to gambling, coding, and many other areas...
I don't know if I have a favorite quote, many of the ones already posted are funny and original.
Its hard to say who have been my greatest influences as a developer. You would think it would be with some of the writers of the code I have maintained or looked at over the years.
Sadly, after millions of lines of code, very few contain the author or date in which it was written. Its funny that no one actually authors thier code (or very rarely) in some form of comment. Of course you can go to source control, but usually it user ABC1234 or some Windows log in name.
So, my greatest influence has the been the unknown coder. Some of the unknown coder's code has been good, some ugly, and some bad.
"PL/I and Ada started out with all the bloat, were very daunting languages, and got bad reputations (deservedly). C++ has shown that if you slowly bloat up a language over a period of years, people don't seem to mind as much." --James Hague
"Software is a gas - it expands to fit its container"
my personal favorit quote: 'Make everything as simple as possible, but not simpler.' -- Albert Einstein
some of my other faroirts are here: http://froz.net16.net/Quotes