Duration: 5 half days
Pre-requisites: This is a more advanced intermediate course. A typical learner for this course would have gained basic software development skills and been applying these skills in their domain of work by writing code for at least six months.
This course aims to teach a core set of established, intermediate-level software development skills and best practices for working as part of a team in a research environment using Python as an example programming language. The core set of skills we teach is not a comprehensive set of all-encompassing skills, but a selective set of tried-and-tested collaborative development skills that forms a firm foundation for continuing on your learning journey.
Day 1 covers setting up robust development environments, including virtual environments, IDEs, Git workflows, Python style conventions, and automated code linting to maintain code quality.
Day 2 focuses on automated testing at scale. You’ll learn to write comprehensive unit tests, implement continuous integration for automated testing, and diagnose issues to improve software robustness.
Day 3 explores software development as a structured process. We’ll cover gathering requirements, designing software architecture, applying code decoupling and abstractions, and refactoring code to improve maintainability.
Day 4 teaches collaborative development practices including code review workflows, preparing software for reuse, and packaging code for release and distribution.
Day 5 covers long-term software management, including project management strategies, assessing software quality and suitability, and implementing feedback mechanisms for continuous improvement.
Training materials: https://carpentries-incubator.github.io/python-intermediate-development/
