Software craftsmanship and the human factor