At long last, I’m getting round to writing the second part of this story! In the first part of this story, I talked about taking some students on during their second year of a 2 year apprenticeship, and how I was planning to cover off the remaining KSBs using a project as a teaching aid for the year. Things have mostly gone to plan!
Group project
So right away, as I was running this idea past colleagues and peers, I kept hearing people say that this should be run as a group project. I had made a few points against this approach when I first came up with the idea, but there were a lot of persuasive arguments for the group work.
So I think we only completed one session with individual projects, and then I moved us over to a single group project (there are only three students in this cohort). It’s been a good approach. Each week, I can present new “user requirements” to the students, and I nominate a “scrum master”. The scrum master is responsible for making sure tickets are created, reviewed and assigned. They’re not responsible for actually creating them: just for making sure they’re done and for facilitating the reviews. Everyone’s free to pick up the tasks they like the look of.
For the most part, this approach has worked really well, and it forces students to work together but lets them maintain plenty of independence. Most people know about the strains of doing group work in a learning environment, and how one or two individuals can end up carrying a lot of the work. One thing I’ve noticed with small classes is that everything is amplified, so problems like unfair workloads become really problematic.
Many smaller tasks
I see these students for three consecutive days about once every three weeks. My original pattern for the three days was 2 days’ of teaching, followed by a dey practical implementation on the project. Getting students active and actually putting things into practice is important to make sure they learn as best possible. This isn’t just “learn by doing” approach, it’s about a variety of activities in all sorts of areas to get students to think about concepts. Giving short presentations, playing games, group puzzle solving, online quizzes, debating opposing views - there are many ways to get them thinking about topics. So I have been encouraged to break up the implementation of the weeks’ ideas into many smaller activities.
These do occasionally follow a nice pattern of applying or practising technologies in a build-up to delivering a new feature to the project, but that’s not always appropriate (especially for the “softer” topics like risk assessment).
So how’s it actually gone?
I’m glad you asked. It’s gone fairly well. I was able to break the remaining KSBs down into related topics, and then spread those topics over the 9-10 sessions, and scaffold things. We started by talking about application delivery (clean code, supportability, etc.), security (risk/threat modelling, secure code, pen testing etc.), data persistence (databases), testing (test automation, TDD), CI/CD, and most recently observability. That ordering has let us build an application that can has some decent practices applied to it. We’ve taken a simple Python FastAPI app (based off the FastAPI tutorial app) with no data persistence to a containerised service with persistence (Postgres), tests (automated!), threat models, and metrics.
Students have said they’ve liked having something tangible to work on and apply their new knowledge, and it’s given me a context to put a lot of the concepts I’ve been trying to teach.
What’s not gone so well?
I was keen for the students to take ownership of the app and its code, but they seem to be reluctant to make any changes outside of what I task them with. I’ve been creating plenty of housekeeping tickets, but I can only ever use those as extra tasks for anyone who gets through classroom activities quickly. I think if I started out a lot stricter, and assigned homework to get things completed, students would get more invested earlier on.
Another pedagogical technique I was hoping to be able to build in with the project work is peer reviewing. No matter how many times I tell students that they can review each other’s code before merging, they always tag me in the MR. Git discipline also needs to be either enforced where possible (protected branches, MR creator can’t approve, etc.) or strictly enforced. I’ve seen one too many “Oh, I approved and merged that change into main half an hour ago”.
No one has really taken the role of scrum master seriously either. But then again, who does? Other than scrum masters, of course. That’s been my fault - I need to play the role of “product owner” better, and keep nagging the scrum master for updates.
Tangible benefits
As someone new to teaching and to apprenticeships, I’ve found getting through this year a bit of a Sisyphean task. It’s been a constant cycle of creating content and delivering. The way this particular apprenticeship is structured doesn’t have much formal assessment as it progresses. So I don’t have a lot of feedback that thinsg are actually working. These students won’t have their results until this time next year! However, I found out the other week that two of the students (who work together) were set on to a new project at work. They looked at the project, and between them put a proposal to their managers that they take a test driven development approach to the work, as we’d not long covered that in college. Management were behind it, the apprentices got underway with it, and everyone’s really happy with how it’s going. TDD is doing all the things it’s supposed to - they’re delivering cleaner code quicker (after initial teething troubles). Textbook! It was genuinely fulfilling to hear this reported back!
Where are we know?
It’s taken me practically the entire year to write this second part. The students have two more sessions left (Cloud Deployment, and a revision session), and then they will take on their final work project that will lead to their End Point Assessment towards the end of the calendar year. There’s plenty of workplace activity they need to evidence, so I’ll be chasing them up for that and reviewing it so they’re set for the culmination of the course at the end of the year.