Apprenticeship Patterns (Guidance for the Aspiring Software Craftsman)