# What a new group leader needs to know about computational work This is focused on computing/data/software/technical stuff - Why? - Do you want your group to keep re-inventing itself? - Do you want to lose access to your data - Define how you work together - is it limited to coffee chats and presentations at group meetings? - or on the other end, are you co-developing the same project? - Are you a team, or a bunch of independent contractors? - Important infra to know about - version control - what it does - github - gitlab - wiki or other docs - Aalto wiki - Network drives - Aalto - Triton - Remote computer clusters - Aalto - CSC - group documentation - Minimum documentation about how you want things done (e.g. wiki) - But not so much that you can't develop. - issues/commits/PRs/communication: write expecting that one day all of this will be public - Teaching - minimum of git and other tools - CodeRefinery as a team? - mentoring - you learn more from co-working than teaching - You need good, active mentoring (not weekly 'work on this now' but co-working) - desks next to each other where you can see each others screens - pair programming - But, as an academic supervisor, you probably don't have time to mentor. How do you get mentoring? - Single source of truth for code / data / etc - Avoid making copies, have one central source. - Make important code re-usable without modifications - Usable - Change plan to not break old stuff. - you can make your own clones/copy as you want, but you should always be able to re-create from the origin and only lose a few days of work - You are not allowed to - not use git - not push to central repo - make something so chaotic that you can't organize it later - But you don't have to - start every code perfectly - do everything perfectly - ... as long as you can improve it later, if needed. - You can bring your own working methods - but you should be open about them and teach others about them, to spread knowledge - Data storage - Discourage single-user storage spaces (laptop, home directories) - Common shared spaces instead - Network drives: files without tracking - Usually used via cluster or remote system - Some can be locally mounted - UI: not great for people who want to work on their own computer - Group meetings - Not really what this is about - misc: - do you look at results only, or the code/data behind the results? what message does that send? - encouraging people to break out of "I don't want to share/it's too bad/etc." ## Checklist - [ ] Set up group reference information. - [ ] Set up Github organization - [ ] Set up Gitlab for internal work - [ ] Send group members to CodeRefinery - [ ] Create your internal data/software management plan. - [ ]