I have quite a few years of programming experience pre-university and have been working full time as a mobile dev at a small company for about 3 months now, so am quite far ahead of almost everyone in my courses at university.
We will have a group software project consisting of 4-5 2nd years (including myself), one or two of which will be as experienced as I am. We will have about 6 weeks to do the project. It is too early for me to know the task yet, but it will be all software.
My purpose in leading is to gain some experience and get better at leading groups, and allow everyone in the group (even the beginners) to get some experience programming. (By beginners, I mean the ones who only really started programming when we started university.)
I have been watching some brief Youtube videos about Agile, TDD/BDD
(specifically this
guy)
and have been wondering what techniques I could use to apply to the group
project. (Note that we don't get to take our agile course until 3rd year
:(
.) I was thinking about involving some of these sorts of things:
- Minimum Viable Product / MVP - to make sure we don't waste time developing the wrong thing. But then will people accept that they need to tidy up their code...
- Behavioural tests - the relatively experienced developers / myself will have to write these for everyone to give us some assurance that we don't break each other's features along the way.
- Some way of breaking tasks into smaller tickets - so that they are assignable
- Testing process - I definitely want some sort of quality control over the end product. I guess I will have to do this if I want others to gain experience with programming itself.
- Code review - so that I know exactly what goes into the code base and that it isn't going to be rubbish code
- Daily stand up - I have lead a 4 week project earlier this year and found that the beginners in the team 'fell out of the project' as we were running out of time, and simple tasks for the beginners to do. Me and the other relatively experienced developer had to take over to speed things along (which is not at all what I had wanted). I want to keep everyone (including myself) up to date with what everyone is doing, make sure they aren't stuck/blocked.
I don't want to overdo the project management and waste time overall, or overload the beginners in the team if the coding itself is going to be a bit of a challenge, so I guess I can't use all of these things. Also, with the Testing and Behavioural tests, I will have a large workload myself, so that's another problem.
I understand that I will most likely suck at this to begin with, and we have 2, two-week, pair projects so I will get some practise before the big one.
Out of these what do you guys recommend I practise and prioritise?