Fall 2010 | Fall 2011 | Fall 2012 | Spring 2013 |
---|---|---|---|
Team programming | Object-oriented design | Clean Code | DRY |
Test-Driven Development | Coding conventions | Teamwork | Clean Code |
Use of software libraries | Agile Manifesto | SRP | Build one to throw away |
Refactoring | Effective Java | Class design | Refactoring |
UML | Test-Driven Development | Naming Conventions | |
Design patterns | Stack Overflow | Research before acting |
It might be worth noting that the first two columns used Joshua Bloch's Effective Java as a primary text, and the latter two used Robert C. Martin's Clean Code.
This past Fall was my first experiment in coupling achievement-oriented assessment with essential questions, maintaining my usual emphasis on reflective writing; I wrote a bit about that experiment just the other day. Looking at the results from Fall, here are the most popular "What We Learned" statements:
Item | Votes |
---|---|
Clean Code takes practice | 13 |
Pair programming | 10 |
It's OK to fail or start over | 6 |
How to reflect on work | 5 |
User stories | 5 |
It is interesting to me that instead of simply saying they learned "Clean Code" as in previous semesters, these students agreed that Clean Code takes practice. It may be just anecdote, but this was the first semester that I allowed resubmission of work—part of my attempt to encourage mastery learning. Although I frequently felt like my feedback was not being heeded during the semester, perhaps this indicates that the resubmission policy helped students learn something quite valuable: not just the idea of Clean Code, but that putting these ideas into practice is difficult.
The middle row—it's OK to fail or start over—may be related to the resubmission policy. However, I suspect it is more directly related to the final projects. There was more than one team to whom I gave the same advice after two or three iterations, only to have them still not follow it. Some teams made significant platform changes between iterations, changes that forced them to abandon large parts of their implementation. I think that this is an important step in the students' maturation: they likely never had to throw away working code before, nor did they have to deal with a changing definition of "working."
I am pleased to see "How to reflect on work" was one of the top items, since the students spent a great deal of time during the semester writing achievement reflections. Although I have changed the balance of achievements and reflections for the Spring, as described in my previous post, I hope that this Spring's group will have a similarly positive experience regarding reflective practice.
Looking over the top 5 you listed and thinking back to our time at the Virginia Ball Center, I feel like each of those was a key part of what we did--especially the first and even more especially the third. Our community partner, the Indianapolis Children's Museum, gave us some blunt feedback about our first presentation. One week later we came back with a very different experience and they were very impressed. If we hadn't been willing to trash our work and start over we wouldn't have anything near the product we finished with (a very good product, I'd say).
ReplyDeleteI don't know what we would have ended up with had we continued on the same path (which we did consider for a bit). It very well could have been something we, ourselves, would have been pleased with, but it was far better to please both ourselves and our partners.
I think it's great that these 222 students realized they learned that it's acceptable to "fail or start over." There's no reason to become so attached to a piece of work that you can't take constructive feedback, can't throw it out to start over, or simply become so stuck on an idea that you're missing something even better.
Yeah, I hope this lesson "sticks" with them. None had community partners or real external stakeholders. My hope is that when they get to the capstone (or a game studio course), they will have a tacit understanding of why they need to prototype, to sketch, and to not fear throwing things away!
Delete