What does "becoming a better programmer" mean? - Assessments Brainstorm Edition
The goal of every Hacker Schooler is to become a "better programmer." Given that I last wrote on Test-Driven Learning, and how could you assess yourself on it?" (Another wording, from Dave's post: "What qualities of being a 'good programmer' could you aim for, and how would you know if you had them?")
There is no one-size-fits-all assessment that would work for every Hacker Schooler -- everyone has such different interests, learning styles, experience levels, and a wide splay over every other type of spectrum imaginable for learning programming. (Typing speed. Language preference. Shoe size.) Making a single pre/post test and foisting it on everyone would (1) fail miserably at assessing anything and (2) work against the intentional self-directedness* of Hacker School.
So during my Hacker School residency, several Hacker Schoolers and I sat in Hopper (the big glass-walled room at the end of the space) and brainstormed on exactly that question. Here's what we have for starters, totally unsorted and only edited for spelling and clarity of terminology.
- length of Hacker School bio page
- number of git commits
- number of "merits" (a currently nonexistent, hypothetical arbitrary credit) given by other students
- list of acquired skills
- contributions to FOSS
- number of pairing experiences
- lines of code per project
- list of completed projects
- total lines of code blogged
- number of roadblocks overcome (subjective)
- happiness/satisfaction (subjective self-report)
- lines of code written without needing to consult external references
- how fast can you make this deliberately slow code?
- Project Euler time trials
- persistence
- number of job offers
- number of friends referred
- ability to explain concepts to novice coders
- number of people helped
- understanding of software docs
- number of blogs
- hackathons attended
- number of followers in (git) repositories
- time wasted browsing other stuff
- length of time paired
- number of presentations
- ability to improve own code
- usefulness of programming blogs
- refactoring time trials (rewrite code to run faster, as fast as you are able to rewrite it)
- how many lines of code produced
- number of projects done as an individual vs collaboratively
- assessment from peer partner
- ranking of comfort with (programming) languages
- number of times you had to use a search engine to complete a task
- cups of coffee
- number of tweets on technical topics
- how many ways you can think of to code the same function
- total time spent with facilitators
- presence of test suites with code
- number of keystrokes
- hours slept
- debugging time trial
- results of code reviews
- number of git commits
- number of presentations delivered
- number of seminars attended
- number of seminars given
- number of new tools learned
- reading pseudocode
- ability to follow directions
- writing a program from scratch
- alum application reviews vs facilitator observations
- average length of (git) commit
- number of alumni contacted
- independent rating of CV by HR people
- can someone else independently compile & run your project?
- on a scale of 0-5, how confident do you feel as a programmer?
- number of interviews
- frequency of git commits
- number of questions asked of residents and facilitators
- frequency of code revision
- how many errors can you spot and fix in this deliberately broken code?
- time to fizzbuzz solution implementation
- how many technical words on this list can you explain
- grade on open courseware CS class final exam
- Zulip (Hacker School internal chatroom) lines with ? (question marks) in them
- heart rate/stress response during Jess McKellar's most technical talk
Further ideas quite welcome.
*Tom also pointed out that a pre-test would "prime" students to learn certain things and could dramatically affect their pathway -- for instance, if the pre-test had a bunch of CS theory, students would think "oh, I should learn CS theory!" and veer off in that direction, which could be positive or negative (but would most definitely skew the study results). He wondered if we could make pre-assessments that "primed" for certain... habits of mind, for lack of a better term, rather than content.