1 Introduction

Domain expertise comprises two complementary forms of knowledge: Explicit knowledge and a culture of practice. We often underestimate how much of our domain expertise is in the doing, not the knowing. Working scientists (for example) are highly skilled at choosing tractable research questions, designing informative studies, making principled guesses about the nature of missing data, etc.. Some of this can be documented, while some of it is embodied in the practice of the craft, and attempts to document it end with your desk covered in Post-Its saying things like "Do the right thing here!"

The field of software development (which you can think of as "writing code", but, like, BIGGER) also has explicit knowledge and culture of practice. You've probably encountered some of the explicit knowledge in the form of tutorials, cookbooks, language specs, maybe even some comments on best practices. You probably haven't encountered the culture of practice.

xkcd comic

Writing code (but, like, BIGGER!) is hard. Learning some of the practices that have evolved within software development community can make it (somewhat) easier. Our goal is to transmit some of those best practices, and talk about how you can adapt them to the projects that you're working on right now.

Things to think about as we talk:

  1. Where are you stuck on your own projects?
  2. Can <tool X>/<practice X> help you?
  3. What else would you need to know to effectively make use of them?