These days “pattern” is a buzz term in software development process and engineering, but like most things buzz the meaning of the term pattern starts getting fuzzy and wears thin with over-use. Patterns are actually a totally new way of looking at building things, which is consistent with Agile/iterative software development principles.
Anyone really interested in patterns should read Christopher Alexander’s book “A Timeless Way of Building“, the foundational book explaining the theory of patterns. Alexander’s main thrust is that a “quality” system can only be built by combining simple patterns and incrementally building a pattern language that “lives”. This incremental build up of living patterns is in stark contrast to the modern day “architect”, a specialist who tries (in vain) to compose a grand up-front design for a building. But by being separate and removed from the nuance and essence of the situation, the specialist (architect) cannot build something that reflects the situational nuances and therefore cannot build a structure that has “the quality without a name”. Rather it takes intimate familiarity with the situation and space to build something that meshes with its surroundings and has that instantly recognizable quality.
Agile software processes also recognize that a big design up-front cannot accurately capture customers needs. Instead we favor customer collaboration, getting close to users and their situation, and slowly build a system relying on the constant feedback of our users.