Building technical systems involves a lot of hard work and specialized knowledge: languages and protocols coding and debugging testing and refactoring.