Social science for software developers Using tools from social science to inform software design: should software developers be social scientists?
A short history of software development methods• Late 60s: Emergence of a professionalised software engineering field: software developer becomes a specialised job• 68: The software crisis: the failure of numerous large software projects led to a realisation of the pitfalls inherent to software development: formalisation of the particular problems entailed in system development• 80s to 00s: Looking for new directions, growing importance of Human- Computer Interaction principles, apparition of the ‘Interaction Designer’; further professional specialisation.• 00-10s: Increase in the use and elaboration of user-centred and agile development methods; increasing role of usability principles in design. Focus towards the social possibilities offered by technology: Web 2.0 and ‘social media’, pervasive and ubiquitous computing. Apparition of Behaviour-driven development (BDD). Semantic web.
Agile development methodsAgile Manifesto (2001):“We are uncovering better ways of developingsoftware by doing it and helping others do it.Through this work we have come to value:- Individuals and interactions over processes and tools- Working software over comprehensive documentation- Customer collaboration over contract negotiation- Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.”
What does this mean?- Reaction against ‘heavy’ development methods, such as waterfall or ISO-inspired development models- Acknowledgment of the crucial importance of communication in software design- Shift from a focus on technology to a focus on users- Acknowledgement of the importance of valuesBut isn’t all this hippy stuff the bread and butter of social scientists?
Acknowledging the usefulness of social science to inform software design• Reflection about: – The use and application of tools borrowed from social science to requirement elicitation and interactive system design and evaluation – The history and evolution of the software development field (apparition of various development methods, academic disciplines, the division of labour within the field…) and of the role of the software developer – The impact of culture and values on the development process – The application of various sociological theoretical frameworks and data analysis methods to the creation of novel software development methodologies
A few practical tools• Ethnography, and the ethnography of communication• Discourse analysis: defining the system’s domain by analysing potential user’s interviews• Grounded Theory for domain definition: analysing data for making categories ‘emerge’ from it• Notions of role and identity are widely investigated by social theory: could this inform software design?
Conclusion• HCI and agile development methods have highlighted the central importance of requirement elicitation, and the shift of focus towards ‘interactions’ could be seen as an expression of the ‘sense of history’ in an almost Hegelian way• Software development practices as advocated by new development methods reflect the need for a correct ‘objectivation’ of the desired system by all agents involved in its development, therefore highlighting the usefulness of theories and methods borrowed from the social science