Software Craftsmanship
Architects should not be coders, unfortunately that is an widely spread idea. An architect is the responsible for taking all kind of decisions in the project and a non coder architect usually takes decisions whith a negative impact in the project for all coders because they are so out of contact with that area. Craftsmanship: Learning theory for programs is important, am not denying the importance on attending conferences, reading books and analysis theory and code, but most programming students only learn theory and when they go out of school and go into a professional environment, they face new and completely different problems, for example pair programming, where knowing when to apply it or not is hard and it is overused. Programming skills should also be shared by real professionals in a similar way craftsmanship is learned. Teaching to program is not the only thing should be similar to craftsmanship. Another important point is when teams aren't well communicated, sometim