Programming magic: Rituals and habits of effective programmers