Best Practices (by any other name) “I am not a real programmer” Things that look like Agile practices (Jeff Carver’s talk) Rejection of “our” terms, identity (Mike Croucher’s “doing CS/SE at them”) Vocational change, nature of the craftsmanship of science “Great talk about what scientists can learn from SE – but what can SE learn from scientists?” Best/Better “‘Better software’ (a material judgement) arises from ‘better’ processes of production (a moral judgement) and conceals a series of understandings and judgements generated by familiarity with the computer” (Leach et al 2009)
Technical – Social – Cognitive Interconnected but distinct resources & artefacts Tech-cog: figures Easterbrook+Johns, ethnographic study of climate modeling coding practices, that rather than lacking formal testing, the testing done is simply distinct from that in the software engineering sense, but no less ‘formal’ of a verification process Social-cognitive: joint google doc, formalized management practices Technical-social: github! “I don’t want to use version control because I don’t want the world to see my terrible code” Unclear association of related terms, “all-of-nothing” fallacy of best practice adoption We’ve been talking about technical platforms and services but often the discussion has veered into the social realm Makes sense – this is the part that’s shared Question: how to leverage available community and skill resources? Criticism = imagining a different perfect world There are lots of perfect worlds once achieved, only enables the imagination of the next even better one It is entirely possible to only ever put out fires and exist in 100% crisis mode
Roles Hero/genius Ownership & Hierarchy Software advisor / gatekeeper Unique aspect of academic software? (built-in personal stake) Delicate balance: enough ownership to survive, not so much that it suffocates growth Ownership & Hierarchy “a general term used to describe whether one person has responsibility for a software component, or if there is no one clearly responsible developer” “when there is no clear point of contact and the contributions to a software component are spread across many developers, there is an increased chance of communication breakdowns, misaligned goals, inconsistent interfaces and semantics, all leading to lower quality” –Bird et al F/LOSS distinguishes itself from the hierarchical industrial software setting but authority “often enforced in displays of aggressive argument and belittling of others.” –Leach 2009 Software advisor / gatekeeper Elected not appointed Legitimated by sustained engagement (New tools should persuade these people in particular?) Sustain momentum and give feedback – shared responsibility with PI
You’ve been chosen as a software advisor! “First Contact” Specific, not general (to get a sense of context without getting into pre-formed narratives) What, Where, Who, When – not How, Why “What was different/surprising” “A recent time that something happened” Draw stuff to overcome communication barriers Components of code Path of transformation that data takes Code vs Data: where is the sense of elegance or the excitement? Reciprocity, balance Let’s do CS/SE with people not at them!
Evaluation Not adoption is not necessarily bad Disengagement is bad X% of pubs in Y field don’t have repeatable code We can agree that’s bad, but what is the goal? “Need more empirical work” Compare over time or across fields? Material vs moral judgments Performance of good code/practices vs good code/practices in service of a goal They are best practices for a reason; in practice, need incremental, context-specific “Interaction between the programmer and the language” (Jurgen) Also interaction between the code and its audiences, past present future