views:

309

answers:

9

Reading this topic, I remembered of something that always bugs me.

There are certain practices, methodologies, or whatever, that existed for a long time, were well known and used. And then someone wrote a book, put a new fancy name on it, and out of nothing it starts to appear as something new, revolutionary, the next big thing, etc etc...

Design Patterns are a mix of well known solutions, that matured and become "collective wisdom", they´re not universal laws, and wasn´t created by GoF. You don´t need to read the book to apply some of them instinctively. The patterns evolved by themselves, GoF just glued it all together in a book.

As Phil Factor points out, Extreme Programming its nothing new too.

What other things makes you think "I´ve already seen this before..."?

+6  A: 

Ajax was done by many, long before that name was put on it.

Kibbee
Though it only really took off when a) FF and Opera had an XHttpRequest type feature too b) IE had a not-quite-completely-brain-dead DOM implementation.
jamesh
+1  A: 

There's a very long list of them here.

Bill the Lizard
+1  A: 

Dependency Injection looks a whole lot like what people did in the early days of Java where everything had an interface, even things that didn't need it. Turned into interface soup. Though putting a nice shinny name on it then building a framework makes it cool again.

DavGarcia
And hasn't anyone heard of "dynamic linking"? Invented a long time before Java.
MarkJ
+3  A: 

REST is basically what HTML was designed to be.

Joachim Sauer
A: 

the gratuitous new names of "directory" (UNIX) / "folder" (Mac/Windows) / etc. ("group" in HDF5, the ill-chosen "repository" in SurroundSCM, "project" in Visual SourceSafe, etc. etc. etc. etc.)

Ditto for the reinvented and confusing use of terms like "project", "session", "workspace", "solution" (Visual Studio) for a serialization of the GUI state of an Integrated Development Environment.

Jason S
A: 

I think a lot of people would concede that Ruby is a re-invention of Smalltalk.

jamesh
+2  A: 

I think Greenspun's Tenth Rule of Programming is an example of what you're asking:

Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified bug-ridden slow implementation of half of Common Lisp.

jamesh
+1  A: 

Refactoring is a new name for something we've always done, rewriting existing code in a better way.

I agree with Christer Ericson when he says "rewrite" something has never meant "rewrite from scratch". When I rewrite something, I always do it based on the previous version if I see no specific reason to throw away every single line of code. Therefore "refactor" seems like a quite pointless word for me.

Laserallan
I see your point, but I don't think it's the same thing. The Refactoring can be applied to changes that are a lot smaller than a rewrite of some module, 'though. So I do think there is a significant difference.
Joachim Sauer
A: 

Many of the ideas behind distributed version control systems existed long ago on the mainframe.

Clint Miller