在客观世界中,有很多事物存在非黑即白,我们很容易去区分 。例如女人与男人,老虎与狮子,汽车与自行车等等,但对于众多IT从业人员,外界的人们很难一下找出他们之间的区别 。提出此问题,目的在于从外界和IT人员自身的角度去探讨开发者和程序员之间的差异和关联,为想要踏入IT行业的求职者和企业招聘者提供一些个人的看法 。也许你会觉得该问题会很搞笑,不管是开发者还是程序员他们都是程序员,就像男人和女人都是人(你也可以说都是动物) 。首先,开发者和程序员都是程序员没错,这就像下面这个小故事一样:
“驾购狮,射鸡狮,攻城狮和程序猿一起走进酒吧”
酒保:——程序员们来了!
文章插图
对于非IT行业的人们来说,他们只能对IT从业者只有一个模糊和呆板印象——他们都是程序员,会修电脑,头发很少 。如果你是一个IT行业的从业人员,则需要细品开发者和程序员之间的差异(我探讨的目的并不在于界定谁比谁好) 。例如,如果你是IT公司负责招聘的工作人员,则必须搞清楚两者之间存在的差异,不然可能招募不到合适的人才,浪费公司的时间和金钱;如果你是一个想要从事软件开发的人,理解两者之间的差异,对你的职业规划也大有帮助,因为只有了解了差异,你才知道什么角色适合你,将来该往什么方向发展 。
一、程序员为了便于理解,我先将程序员比喻成一个技艺高超的厨师(注意强调烹饪技术),他们能够按照菜单上的信息,在既定的时间范围内,烹饪出色香味俱全的菜肴 。能完成这样一项任务,这得益于厨师们在刀工,时间和火候上的精湛技艺 。
文章插图
同样的,程序员在既定的时间范围内,按照开发任务(菜单)将别人的想法转化为可执行的软件代码,他们负责编写,测试,调试/故障排除和维护计算机源代码,能胜任这样一类工作,这得益于他们能理解各种计算机编码指令,能熟练使用各种库函数或框架 。
如果要用一句简单的话来概况,那就是:和厨师一样,程序员是面向任务/指令型的角色 。他们都是根据任务/指令行事 。二、开发者如果将程序员类比为技艺高超的厨师,那么开发者更像是一个专业的美食家 。就像美食家也是一名厨师一样,开发者也是程序员,但区别在于,他们不仅能够烹饪出美味的菜肴,还可以从0到1创造新的菜品 。于程序员相比,开发者在创造性和概念性上更胜一筹 。
对于同样一个产品,程序员的工作是从任务/指令下达的时候开始的,而开发者的工作是从和客户谈论需求时开始的 。开发者需要不断的同客户交谈以获取原始的需求信息,然后对需求进行分析,定位和抽象并找出其中埋藏的问题,最后针对客户的问题,寻求可行的解决方案 。
文章插图
在实际情况中,程序员和开发者并没有很明确的界限 。例如,在小规模的公司,一个开发者既要承担需求分析,系统设计,项目管理的工作,又要承担编码,测试,调试/运维的工作 。但不管界限如何模糊,他们之间终究有区别,例如,从工作的范围来看:
程序员的工作始终伴随着编码,而开发者的工作更多是处理需求,设计和管理的事情 。
如果从工作的时间周期来看:
程序员的工作时间周期是从任务下达到调试完成,而开发者的工作时间周期是从需求谈判到产品落地 。
从工作范围和时间周期上来看,我们可以得到第一个直观的概念:
开发者程序员都是程序员,开发者和程序员所承担的角色是整体与部分,全集与子集的关系 。程序员只需关注自身任务的时间周期,而开发者需要关注整个项目周期 。
三、程序员 VS 开发者首先,不管是系统架构师,软件工程师还是软件设计师,他们都是程序员 。
在接下来的内容中,我会从工作的职责,时间,能力和领域这四个方向探讨开发者和程序员之间存在的区别和联系 。
文章插图
3.1 工作职责程序员: