牛耳LOGO

招生电话图

程序员VS码农:我们不一样

发布日间:2018-05-16   浏览次数:130

IT时代的膨胀已经让编码工作如同文艺复兴时的印刷匠一样,编码门槛越来越低,遍地《一周XX速成》、《20天XX精通》,仿佛会写代码就成了程序员,这让很多人认为从事编码工作就是码农。其实,印刷匠很多,成为大师的不多;码农很多,但程序员并不多。程序员不是码农,码农也不是真正的程序员。

程序员在英文里对应有三个单词:Coder、Programmer和Software Engineer,我觉得这三个词,生动形象地描述了程序员所需要经历的三个阶段,或者说三个境界。


Coder:只要求能够熟练使用编程环境,精通几种编程语言、开发框架和开发库,擅长写代码就可以了。这个阶段的程序员能够按照既定的设计完成编码。


Programmer:要求在coder的基础之上,精通设计模式、算法实现和编码技巧,并具备熟练应用的能力,这个阶段的程序员能够独立编码解决现实问题。


Software Engineer:要求在掌握业务知识的前提下,理解为什么这么实现,在综合考虑架构实现,权衡开发成本后,为解决业务问题提出最优方案,并能与业务人员顺畅沟通,让业务人员理解方案。编码工作达到这个阶段,才能称得上是真正的程序员,才真正实现了从工作到职业的转变。


不可否认,这个世界上有一些天才的程序员,他们喝着咖啡,哼着歌,便完成了上面三个阶段的修炼。但绝大部分人,都需要为此付出巨大的时间和精力。能否成为职业的程序员,影响因素和方法论很多,各种学习类、技术类的总结遍地都是:主动思考、及时总结、制定规划等。但我认为其中最重要的是能否做到专注。


许多没有达到第三个阶段的程序员,就是因为受到各种因素诱惑,变得心猿意马,不够专注。因为不够专注,他们不在意做好自己本职工作,不在意锤炼自己的技能,不在意学习新兴的技术。慢慢地,他们会认为从事编码没有出路,进而毫无例外地把编程看成是体力劳动,只会拷贝粘贴代码,知其然而不知其所以然,导致技术停滞不前。在这样的状态下工作5年、10年,对于他们来说,没什么区别,若是如此,这些程序员真的就是吃青春饭的码农。

要避免程序员变成码农,必须对编码保持热情,并持续学习;必须保持好奇心,乐于探求事物本质;必须对所做的工作及时总结,主动优化代码,让系统变得更加有机;必须主动尝试更好的开发方式、更先进的工具,来提升开发效率,并想办法避免重复性的工作;必须不断改进设计,将编程变成创造性的工作。只有通过这样逐步地积累经验和长时间锤炼,知识体系才能构建完备和丰富,才能避免沦落为码农。


几年前重构过一个模块,从外部看模块所在的系统,都是类似这样的,简洁而漂亮:

但从程序员编码实现的层面看,它实际上是这样的:

这个设计在最初的版本没有任何问题,使用继承扩展管理对象的接口能力,但仅仅过了两个版本,项目组PL说实在撑不下去了:增加一个接口,需要修改200多个地方,如果再过一个版本,估计要修改400多个地方了。


后来改成这个样子,使用聚合消除了耦合:

从代码实现层面看,在功能刚开始开发时,这两个设计区别不是很大,但随着系统演进、越来越多的功能加入,继承关系带来的耦合会导致模块之间关系越来越复杂,牵一发而动全身,终究有一天哪怕只做很小的改动,也将成为压死骆驼的最后一根稻草。


这次重构的成果是代码量由43K减少到15K,扩展新的接口能力不再需要修改已有代码。我想,这或许就体现了码农和程序员的区别吧。


这是一个业务复杂度极高的行业,要想从码农成长为程序员,需要经历更多的煎熬,需要发挥更多的创造力,同时也意味着,我们比以往任何时候都需要越来越多的码农成长为程序员。


既然我们选择了编码作为职业,注定会经历各种心劫:枯燥、沮丧、迷茫,甚至浮躁……然而无论处于哪种心境当中,我相信,只要想起自己曾经满怀惊奇、兴奋与真诚敲下的那个程序——“Hello,World!” 我们就会充满渴望和力量,因为那是程序员最初的梦想:改变世界。

点击了解牛耳 TEL:400-0731-835
相关新闻
经验之谈丨不来牛耳读书的骚年都不是好工程师 !2017-04-23
经验之谈丨你之所以不就业,因为你选的学校不叫牛耳2017-04-23
经验之谈丨学Java是自学好还是培训好2017-04-23
趣味IT丨有趣的IT词组,快来认识吧!2017-04-23
相关新闻
IT行业为什么还这么火 你知道真正原因吗?2018-05-25
大数据时代,这些专业人才最吃香2018-05-25
程序员这样面试,拿到offer的几率是80%2018-05-24
参加软件测试培训班 能顺利找到好工作吗?2018-05-23

加入牛耳,距离您的IT梦想更近一步,填写报名表格,我们期待与您在牛耳相遇!

您的姓名:

联系电话:

联系QQ:

培训课程:

给我留言: