I do not like the "code Nong" "Code Workers" "Program ape" This kind of demeaning words.
My grandfather is a tailor, in my memory he relies on the home to make clothes for others to earn a living, is a craftsman. My career has been dealing with code, making a living by writing code, and being a craftsman. Of course, a good workman should be able to call it a code craftsman.
I like to refer to this group of code craftsmen as software designers. Why software designers, not software engineers, comes from my different understanding of software engineering.
The construction project can be divided into two stages, design stage and construction stage. Traditional software engineering is always used to analogy with building engineering, the requirements analysis, the overall design, detailed design into the design phase, and will encode, compile, test, release, etc. into the construction phase. As a result, coders naturally fall into the category of "engineers".
However, in the actual work, the software module design and coding is disjointed, the actual situation is: The detailed design can not fully guide the code, in the process of coding will often have a lot of new creations, and sometimes even need to rework the overall design. Therefore, I tend to incorporate the coding process into the design phase, which is the new software engineering. The idea is that code is design. So we became software designers.
So what does the new software project do in the construction phase? The answer is: Start with code compilation, this phase can be completely handed over to the machine to complete. We need to construct an automated process, we can also introduce distributed compilation technology to speed up, and then need to have automated test cases (of course, when the use case is written at the same time the code is completed) to protect the functionality of the software, and then it can be continuously released. Of course, manual testing at this stage is still indispensable, manual testing of the workload depends on the level of coverage of automated testing.
Therefore, the new concept of software engineering is: the design of the part of the people to carry out the stage of construction all to the machine. As far as I know, at present, only a few of the top companies are able to continue to release some products, it will become a new project of software engineering.