你是开发工程师、程序员仍是码农?

Developers are from Mars, programmers are from Venus, so where are coders from?
程序员


不论是CPPer,Javaer,仍是PHPer等等,很多开发人员经历过这样的困惑:我究竟是工程师(SDE,or Developer),程序员(Programmer),仍是Coder(编码员)呢?编码


这个问题看上去彷佛没有什么意思,甚至不过是一次无聊的名词解释。可是,咱们以这里做为全部话题的起点,是由于任何观点并无绝对的对与错,决定最终选择的偏偏是看问题的角度——身份固然是其中的一个重要影响力。屁股决定脑壳,这样的道理无需赘述。spa


好吧,仍是先回到这个话题上来。翻译


软件开发工程师(SDE,or Developer)是咱们大多数软件开发人员的职业称呼。既然是一个职业称呼,其身份与职业天然有密不可分的关系。做为一个开发工程师,其主要职责是在有限的时间内开发出具备实际实用价值的应用程序。设计


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


这里面至少包含两点。code


其一,开发目标。开发工程师的开发目标是使用,没有使用价值的程序是没有意义的;ci


其二,开发成本。既然是职业称呼,开发工程师的工做每每由商业因素驱动,其开发特色突出表现为大量的功能需求和有限的成本。所以须要开发工程师具有在各类需求(包括时间成本等等)之间寻求平衡的能力。开发


程序员(Programmer)经常被简单地被归结为一群追求技术的狂热分子,他们更多地由兴趣驱动,开发一些有挑战性的东西。这样说也许并不确切,但毫无疑问,程序员这个名称给人更多的技术感和理想色彩,以致于不少人把他做为本身引觉得豪的称号。我也喜欢自夸为程序员,甚至不少IT公司那些数年未写一行代码的技术主管也喜欢自夸为程序员。it


程序员开发习惯的一个显著特色是追求极致:最新潮的方法,最小的二进制文件大小,最少的代码量,最强大的功能……时间?唔,开发时间历来不是程序员工做的决定因素,它甚至根本不被考虑;执行时间却是个重要因素,全部程序员听到这个就像猫闻到腥味同样。class


看上去,软件开发工程师和程序员是多么大相径庭的两种人。难怪有人说,软件开发工程师来自火星,程序员来自金星。


另一些人给两种称呼设置了等级,彷佛程序员通过一段时间的成长才能成为一个软件开发工程师。固然,我不认同这样的说法:不一样的追求致使不一样的发展而已。


尽管咱们给两种称呼映射了两种大相径庭的行为,然而实际上,这两种行为经常同时出如今同一我的的身上:你可能上班时像个开发工程师,下班则更像个程序员;他可能对待一些问题时像个开发工程师,对待另外一些问题时则更像个程序员。


不少软件项目开发周期过长,一个重要缘由就是因为软件开发工程师在开发当中融入了过多的我的乐趣,开发出了不少我的认为很酷其实没必要要的功能。而一个程序员哪怕是捣鼓一个只有他本身才用的软件,他也须要在他力所能及的范围(成本)内开发出本身满意的功能。


与上面两种称呼不一样,Coder(编码员)经常被称做软件业的蓝领工人(戏称“人肉编码机”)。没有人愿意作这样的蓝领工人,由于软件业里的体力劳动者几乎就是笨蛋的代名词。


其实,绝大多数开发人员会经常扮演编码员的角色。想一想你拷贝一大段代码,修修改改完成一个功能,而后又拷贝另外一大段代码,修修改改完成另外一个功能的经历,这不正是个Coder的角色么?要将这些“体力编码”的片断跟“脑力编码”的片断分割开来,派给两种开发人员去作显然是不切实际的。


即使存在Coder这样的职业,只是从事将设计翻译为代码的“体力”工做,他们的工做也仍然是举足轻重并值得尊敬的。任何一个成功的软件项目,除了得益于其成功的设计,编码的质量同样不可或缺。


若是你真的领导着一些商业性项目开发,你应该会深深体会到编码质量对一个项目举足轻重的影响,而一个编码质量使人放心的开发人员在任何组织里都不会是简单的Coder角色。


再次强调,不论是SDE,程序员,仍是Coder,我尝试作出一些定义并非为了让你从无数开发人员当中区分出谁属于哪一类型。偏偏相反,我认为对于绝大多数开发人员而言,他并非一直扮演某一种角色,而是在不一样时候,不一样的方面,表现为不一样的角色。


咱们区分这些类型,只是为了阐述观点时,有一个角色的定位。可是,你知道,世界是复杂的,而人不会是一成不变的。


公众号内回复“1”带你进粉丝群!

0?wx_fmt=gif