Emergence is an attribute of complex systems. When applied to software development, it is the principle that the best designs and the best ways of working come about over time through doing the work, rather than being defined in advance as part of an over-arching specification or detailed project plan.
Related links: Emergence
See also: Self-organization