发表日期:2019-03-22
想当程序员,那你就不能变成码农
—— 我读书少,你别忽悠我。程序员不就是写代码的吗,哪个程序员不是“码农”?
作者:Aussie Tech Tutor
所以,你也许是在好奇心的驱使下,点开今天的推送的。是啊,你可能会想,程序员不就是写代码的吗,哪个程序员不是“码农”?这怎么可能有区别嘛!
没错,很多人都是这么认为的。然而,在我看来,程序员和写代码的“码农”之间其实判若云泥,有着巨大的差异。
不相信?那让我跟你解释解释。
什么样的人是“写代码的”
首先,请允许我定义一下我认为的“码农”是什么样的。
对我来说,“码农”是一类专精于——是的,你猜对了——写代码的人。
他们通常掌握一门或几门编程语言。他们对所掌握的语言非常熟悉,几乎可以准确地告诉你这种语言工作运行的所有细节。他们对所有可用的库都了如指掌,也知道如何快速合并它们以构建出有用的东西。在高层管理人员眼中,他们属于效率超群的精英,因为他们总能简单地把工作“搞定”了。
你可以把编程任务丢给他们,他们几乎转眼之间就能把代码弄出来,构建出你想要的任何功能。
听起来“码农”很牛x啊?当然。在项目开发过程中,他们有着举足轻重的地位。
但是在软件工程方面,可不仅仅是弄出代码,将其放在服务器上运行或者打包成客户端_(具体取决于项目目标)_就完事了。
在我看来,“码农”们通常看不到、也不关心全局层面的东西。他们不关心用适当的用户体验来解决业务问题,不关心系统架构,不用费心了解运行其代码的服务器。对可用性、可扩展性、持久性、容错性,交付方式,项目管理等方面也不太在意。在性能方面,他们只关心自己的代码是不是足够优化了。
基本上他们所关心的只是编写代码本身,围绕代码进行一些单元测试,确保覆盖到绝大多数可能出现的问题。然后,他们将代码提交上去,申请一个 Pull Request 合并到分支里,就完事了。
说到这里,可能你会觉得我简直是吹毛求疵。然而我并不是对辛勤写代码的“码农”们有什么意见,毕竟在业务上,有一些专注于编写代码的员工还是颇有助益的。但只写代码的并不能算是程序员,程序员还有一些特殊的“用途”。
什么样的人是“程序员”
那么我认为的程序员是什么样的呢?
首先,也是对我来说最重要的特质在于,程序员能解决问题。
他们通常会分析某个技术问题所有可能的选项,以找到最合适的解决方案。在他们甚至还没碰到键盘,连一行代码都没开始打之前,这个过程就已经开始了。不仅如此,他们针对问题提出的每个解决方案也不仅由他们自己评估,而且还可能由若干名其他程序员共同参与评估。
程序员确实关心他们的解决方案的用户体验情况。他们将考虑系统架构在解决方案中起到的作用。他们还会思考未来在交付、维护和支持方面的做法。他们清楚地考虑过需要的服务器(或 docker 容器)数量,如何编配它们,如何将代码部署到服务器集群等等。他们确实关注可用性、可扩展性、持久性、容错性等。他们通常都精通各种包括基于代码、基于架构的优秀设计模式。
对他们来说,至关重要的是要设计好从架构到部署渠道等一系列问题,保证作为解决方案的代码能从设计到部署一路畅通。只有解决了所有这些问题后,他们才会真正坐下来,写代码。
与“码农”不同,真正的程序员通常没有办法超级快速地写代码,这是有道理的。他们将更多时间投入到软件部署等其他领域。这并不意味着他们在写代码方面有什么问题。他们可以而且经常这样做,只不过和“码农”的速度不一样。
高层管理人员通常不会马上就把程序员视为“高效”的化身,但通常他们的同行会更重视他们所花费的时间和精力,而且管理层最终也肯定会注意到这点。
你的看法又是如何呢?
那么,你觉得自己喜欢做哪一种人?单纯的“码农”还是程序员?
看了上面我说的这些东西,你们可能会觉得,我更偏爱程序员吧。
但老实说,对一个成熟的项目来说,两者都是非常重要的。一方面,你需要那些可以思考问题的解决方案,并评估所有结果的人,就像上面说的程序员;但同时,为了获得较高的开发速度,一旦完成这些技术决策,手头有一些快速的精英“码农”为项目服务,就相当重要了。
总之,在我个人看来,“码农”和程序员并不是一回事,但他们确实各有所长,也十分互相尊重。
你的看法又是如何呢?欢迎留言分享!
(本文已投稿给「优达学城」。 原作: Aussie Tech Tutor 编译:欧剃 插图来源:pixabay.com 转载请保留此信息)
编译来源: https://blog.usejournal.com/programmers-vs-coders-whats-the-difference-to-me-3c1dbe3b7747
标签:Udacity、Translate