Lab Wiki

> Qualitative Analysis

Codebook & Team Coding

Consolidate codes, write a codebook, then code as a team and reconcile. · 12 min

This is the codebook / coding-reliability path. The goal: a shared, well-defined codebook that different people can apply consistently (Hsieh & Shannon, 2005) (Gale et al., 2013).

How the codebook gets built

The codebook doesn’t arrive fully formed — and it isn’t one person’s draft handed to the team. It’s built collaboratively from the first cycle: two coders develop in parallel, then reconcile. Here’s the whole loop at a glance (the sections after it zoom in):

  1. Assemble a starter subset. Pick a few transcripts that look maximally different, so early codes have to stretch to fit (Guest et al., 2006).
  2. Agree on the coding unit. Together, decide what a “chunk” is — a line, a sentence, or a meaning unit — and apply it consistently across coders (Krippendorff, 2018).
  3. Each coder open-codes the subset, independently. Both work the same transcripts alone, generating first-cycle codes inductively from the data and/or deductively from a framework or research question (the reasoning stances from the previous lesson) — producing two parallel draft codebooks, which guards against anchoring on one person’s view (Thomas, 2006) (Hsieh & Shannon, 2005).
  4. Reconcile into one shared codebook. Compare the two drafts and consolidate them; give each surviving code a name, definition, anchor example, and apply / don’t-apply rules — the structured shape shown in Write the codebook below (Guest et al., 2006).
  5. Apply the shared codebook to the next set. Where codes don’t fit, add, split, or merge them (the Consolidate redundant codes step below) — the codebook is a living document, not a fixed list.
  6. Version and log. Bump the codebook version and record every change in your audit trail, then repeat on new transcripts until it stabilizes (constant comparison) (Saldaña, 2021) (Gale et al., 2013).

The rest of this lesson zooms into the three moves that matter most: consolidating redundant codes, writing transferable entries, and reconciling across coders.

Consolidate redundant codes

A generous first pass across the full set of interviews produces overlapping codes — more than the few excerpts you saw earlier. Group ones that mean the same thing and give the group a single clear name. Click through the logic:

"think I was dumb"embarrassed to askfear TA judgmentfelt stupid
fear of negative evaluation

Four initial codes all name the same affective barrier — worry about how others judge one's competence. Merge into one well-defined code.

trial-and-error debuggingprint-statement debuggingrandom changes
improvised debugging strategy

Different tactics, one underlying idea: self-taught, unsystematic strategies for finding bugs.

Write the codebook

Each consolidated code gets a definition, an anchor example, and explicit apply / don’t-apply rules. This is what makes a code transferable to another coder (Krippendorff, 2018).

Code Definition Example (anchor quote) Apply when Don't apply when
help-seeking delay Waiting a substantial time while stuck before seeking help from a TA, peer, or instructor. "I sat there for like an hour before I asked" There is an explicit gap between getting stuck and asking. Do not apply to delays caused purely by external factors (e.g., office hours closed).
fear of negative evaluation Reluctance to act (esp. to ask for help) driven by worry about being judged incompetent. "didn't want the TA to think I was dumb" Affective concern about others’ judgment of one’s ability. Do not apply to neutral statements of not knowing something (that is "low knowledge").
improvised debugging strategy Self-taught, unsystematic tactics for locating a bug (trial-and-error, scattered print statements). "changing things and re-running it until something worked" Strategy described with no clear hypothesis or systematic method. Do not apply to deliberate, hypothesis-driven debugging.
cryptic error messages Tool output (errors, stack traces) experienced as opaque or meaningless to the student. ""segmentation fault" and that means nothing to me" Student names the message as unclear or unhelpful. Do not apply when the student understood and acted on the message.

Code independently, then reconcile

Once you have a working codebook, the team-coding loop tests and refines it on fresh transcripts — distinct from building it above, and now iterative (Saldaña, 2021):

  1. Code independently. Two+ coders apply the codebook to the same transcripts, alone.
  2. Compare. Find where you agree and where you don’t.
  3. Negotiate. Discuss disagreements; the fix is usually a sharper definition, not a winner.
  4. Revise the codebook and log the decision in your audit trail.
  5. Re-code with the revised codebook; repeat on new transcripts until stable.

Here are two coders’ independent assignments on our excerpts. Agreements are green, disagreements amber, with the negotiated outcome in the last column:

Segment Coder A Coder B Negotiated
"before I asked" help-seeking delay help-seeking delay help-seeking delay
"think I was dumb" fear of negative evaluation low confidence fear of negative evaluation
"print statements all over" improvised debugging strategy improvised debugging strategy improvised debugging strategy
"means nothing to me" cryptic error messages cryptic error messages cryptic error messages
"gave up for the night" disengagement cryptic error messages disengagement

Raw agreement before discussion: 3/5 (60%). Disagreements (amber) are resolved by discussing the data and refining code definitions — not by averaging or seniority.

Where this path lands

Consolidated codes cluster into categories, and categories into themes — now backed by definitions and (next lesson) a reliability statistic:

Help-Seeking Anxiety

Students delay or avoid seeking help because asking feels like exposing incompetence. Seen in P3 (the linked-list wait) and P7 (not wanting to bug the TA again).

Affective barriers
fear of negative evaluation
Help-seeking behavior
help-seeking delayrelief after help
Improvised Debugging

Without systematic methods, students fall back on self-taught trial-and-error tactics. Evidenced across P3, P7, and P9.

Strategies
improvised debugging strategygoogling the error
Error Messages as Barriers

Opaque tool output stalls progress and can end a work session. Seen in P7 (type-mismatch error) and P9 (segfault, stack trace).

Triggers / tooling
cryptic error messagesreading the stack trace
Outcomes
disengagementdreading the next bug

In Lesson 6 we quantify that agreement with inter-rater reliability. (The reflexive path in Lessons 7–8 reaches themes very differently — and deliberately skips IRR.)