Vernacularism in Software Design Practice: does craftsmanship have a place in software engineering?

Paul Taylor · AJIS. Australasian journal of information systems/AJIS. Australian journal of information systems/Australian journal of information systems · 2003

Convention dictates that an information discipline matures from an informal shared practice to a defined and repeatable process through the externalisation and formal expression of its underlying theory.The inevitability of this progression should not be allowed to over-shadow the essential values, skills and knowledge transfer mechanisms of the superseded vernacular or craft-like practices.This paper examines the tension between software engineering's professionalisation of the software design role-exemplified by the software architect-and its antithesis, the software craftsperson, a characterisation that continues to emerge despite attempts to suppress reliance on individual skills and abilities through software engineering process.In other design disciplines, the professionalisation of design marks a distinct progression from ad hoc, unrepeatable, unselfconscious craft to a selfconscious, demarcated type of design found in most forms of engineering.Software engineering has partially failed to make this transition and this failure undermines the exclusivity of the engineering metaphor and engineering-based process models as a model of practical software design.Software methods must acknowledge and find ways of incorporating vernacularism and informality if the creative act of design is to be correctly characterised, supported in methods, and taught."Traditional vernaculars are themselves the great mass media; that is, specialized frames and vehicles of experience" -Marshall McLuhan. DESIGN AND PROGRESSAn historian who took the time to examine the chronicles of software engineering could be excused for concluding that 'design' has always had the status of second class object.In software engineering, design finds expression in the techniques of first-class things such as programming languages, architectures, modelling techniques and the mechanical modus operandi of software production.We comprehend design and exercise our design knowledge and skills indirectly via the domain-specific filters of common software design techniques-user interface prototyping, patterndriven architecture evolution, and use case analysis, for example.Unlike other disciplines in which design also plays a central role-architecture and industrial design being the two exemplarssoftware engineering has not yet elevated design beyond its expression in techniques to professional specialty, to a communication medium for the explicit reflection of local or societal values, or as a fulcrum for social or economic change.Questions about the relationships between individual practice, theory and collective professionalism are at the core of what it is we do as software designers.Design in the software domain primarily serves the purpose of development and delivery, or of bringing product to market, and it must be presumed that the discipline, industry and community make this so.Identifying possible reasons for this necessitates both a specialised understanding of the nature of software and its design as well as a broad exposure to design beyond any one particular domain.The relative immaturity of software design at the system and architectural levels repeatedly observed.Shaw (1996), among others, claims that software architecture is an ad hoc, immature craft-like activity, applied only in an idiomatic fashion.Ad hoc design activity is generally discredited in software engineering, but not so in design theory outside software (Jencks & Silver, 1973), where the 'creative leap' of synthesis, or the enigmatic assembly skills of the bricoleur can explain outstanding acts of design.These 'designerly' behaviours have interesting implications for a perspective of design in general (Louridas, 1999), as well as software design (Taylor, 2000a).The need to progress from craft to science is taken for granted in almost all applied sciences.This attitude may be seen to have its roots in the human struggle for ascendancy, the basis of science and the scientific method (Weatherall, 1979).Those who have questioned the need and appropriateness of this progression in design (such as Christopher Alexander in architecture) have at times been

Read the paper · More papers on PaperTik