class: center, middle, inverse, title-slide .title[ # EDS 214 - Analytical Workflows and Scientific Reproducibility ] .subtitle[ ## Day 2: Coding as a Team ] .author[ ### Julien Brun ] .institute[ ### UCSB ] --- class: center, middle ## Why --- ## Environmental Data Science - Data-driven - Transdisciplinary - Cross-boundary problem -- **=> Need to be tackled as a team** --- class: center, middle ## Analytical Workflows are rarely linear! And are developed iteratively --- ## Coding as a team _Programming as part of a team is different than writing a script for your(present)self_ However learning programming as part of a team is not only critical to the efficacy of your team, it will also you help you to grow as a programmer by: - Motivating you to document well your work - Helping you to think how to make your work reusable (by you, your future you and others) - Learning to read code from collaborators to build upon each other's work - Gain further knowledge in software development tools, such as version control --- class: center, middle **Developing those skills will accelerate your research and open the door for you to contribute to open source projects** --- class: center, middle ## How -- Techniques --- ## Code ~~review~~ feedback - *Asynchronous* team activity - Great opportunity to have one more pair of eyes looking at your code - Great way to get constructive feedback to the `submitter` - The `reviewer` should see this activity as a great way to learn from others <div class="figure" style="text-align: center"> <img src="images/4rs.png" alt="from Ivimey‐Cook et al., https://doi.org/10.1111/jeb.14230" width="20%" /> <p class="caption">from Ivimey‐Cook et al., https://doi.org/10.1111/jeb.14230</p> </div> --- ## Pair programming - *Synchronous* team activity: several programmers get to work together on the same piece of code. - Great way to gain a better sense of what coding style people are using - Further discuss coding and analytical choices - `Driver` is the person typing at the computer - `Navigator(s)` do not write code and focuses on finding solutions to the problem. Their use of computer should be limited to searching online for solutions. --- class: center, middle ## How -- Tools --- ## Tools There are several tools out there to make developing code as a team more efficient. In this course, we will focus on: - **Version control system** (e.g. git): say goodbye to `save_as` & `script_JB_03v5b.R` - **Code repository** (e.g. GitHub): to share code and communicate ideas and feedback --- class: center, middle ## Back to main doc [here](https://brunj7.github.io/EDS-214-analytical-workflows/day_1.html)