I am a graduate student in a Computer Science Laboratory since a few years ago.
For the past years I have designed and implemented a fairly cutting-edged complex piece of software along a team of people (over 10).
At first, I was given the tech lead and the authority to manage the team to certain level.
For that purpose, I tried to introduce some systems and workflows to get everyone on the same page, remain focused and visualize our performance.
Concretely, I pushed for:
- Peer reviews, unit testing and continuous integration.
- Collective ownership of code.
- Collective Kamban style management with a backlog of user stories and tasks and WIP limits.
- Adoption of Git Branches and PRs. Before people will not even use VCS software.
Only Git was naturally adopted, other practices were eventually abandoned by the team since:
- Most students are dedicated to a project in a part-time manner.
- Students normally work for 6 months or so aiming to make a meaningful progress during that time.
- Students lacks experience and ignores the benefits of those practices.
- The Professor viewed the system as a burden. So he will normally ignore whatever system we had a would reassign people to different tasks on demand without noticing others resulting in a mess of management. Also setting a precedent.
For all those reasons I gave up enforcing the adoption of those practices.
At this moment is just the professor who vaguely assign us some tasks time to time and we just informally try to finish those tasks.
Since we stop using those practices, the quality of code has greatly diminished. We have a sense of individual and competitive work where sometimes two or three people work on the same tasks.
I want change this situation again and I want to pitch a better and more adapted practices to improve our workflow and team management.
What would you suggest?