Software
Version control, branching and collaboration.
Learn commits, branches, merge, rebase and recovery by thinking of Git as a graph rather than memorizing commands.
Use GitHub as a collaboration layer over Git and as a clear public record of technical projects.