# 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.
- [ ]