Programmers should have two skills
1) Professional knowledge. For the industry involved, whether the system is driven, or the database application should be mastered: business logic, test standards, etc. Can only be programmed in accordance with the interface, can only be an encoder, not a designer.
2) Design capabilities. It mainly involves software architecture and interface, design mode, program principles, more need to consider engineering: scalability, reuse, security, etc. from overall aspects. The so-called COM, contractual programming should belong to interface. Design modules This is a combination between small members. The software architecture is the software architecture.
The design is branches, professional is leaf, work together, and there are programs. Consumption, it also needs to accumulate.