A Pattern Way of Thinking

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.

Victor Szalvay

Victor Szalvay currently leads product development for CollabNet’s ScrumWorks® product suite. In that capacity, he works closely with customers, stakeholders, and the development teams to deliver high business value each release cycle. With more than 150,000 active users worldwide, ScrumWorks is used by more than half of the Fortune 100 and boasts the largest market share of any Agile management tool.

Posted in Agile

Leave a Reply

Your email address will not be published. Required fields are marked *