tdd for hiring: crafting precision in recruitment

package hiring

type Job interface {
    Define() []Test
    Evaluate(candidate Candidate) bool
    Adapt(feedback Feedback) Job
}

hiring is broken. vague job descriptions. gut-feeling interviews. misaligned expectations.

what if we treated hiring like code? write tests first.

traditional:  job post -> interviews -> gut feeling -> regret

tdd hiring:   define tests -> evaluate -> adapt -> improve

write tests for what matters before you need them. no more “must be a team player” bullshit: define what that means. make it measurable.

func NewEngineerJob() *EngineerJob {
    return &EngineerJob{
        Title:      "software engineer",
        Skills:     []string{"go", "git", "microservices"},
        CoreTests:  []Test{CodeQualityTest, ProblemSolvingTest},
        Alignment:  []Test{Teamwork, LearningAgility},
    }
}

when candidates fail? that’s data, not rejection. some failures are warnings. others are blockers. know the difference. each hire teaches you something. adapt the tests. improve the process.

test-driven development saved your code. now let it save your team.

related: contributions beat resumes on what actually proves competence. reviewing prs on challenging what we’ll regret later.