无论是码农也好,还是码工也好,无非说的都是同一类人,即程序员。程序员在英文里对应有三个单词:Coder、Programmer 和 Software Engineer。我觉得这三个词,生动形象地描述了程序员所需要经历的三个阶段,或者说三个境界:
Coder:只要求能够熟练使用编程环境,精通几种编程语言、开发框架和开发库,擅长写代码就可以了。这个阶段的程序员能够按照既定的设计完成编码。
Programmer:要求在Coder的基础之上,精通设计模式、算法实现和编码技巧,并具备熟练应用的能力,这个阶段的程序员能够独立编码解决现实问题。
Software Engineer:要求在掌握业务知识的前提下,理解为什么这么实现,在综合考虑架构实现,权衡开发成本后,为解决业务问题提出最优方案,并能与业务人员顺畅沟通,让业务人员理解方案。编码工作达到这个阶段,才能称得上是真正的程序员,才真正实现了从工作到职业的转变。
码农的称呼自嘲意味更强,身边的同事们也经常自嘲道:我们不生产bug(才怪),我们只是bug的搬运工。而码工颇具工程师的意味,感觉技术含量比码农更高一些,但是大家好像并没有叫顺口,不如称呼程序员或者工程师来的直接的多。
最后我想说的是,程序员的优秀与否不是一个称呼就能评判的。一个好的程序员不光只是考虑怎么去用代码实现功能,而是要考虑整体,模块之间关系,这个功能影响的地方有哪些,以及效率等问题。成为一名优秀的程序员,需要逐步积累经验和长时间的锤炼,不断丰富自我的知识体系,唯有如此才能配得上“优秀”两个字。