“ 职业程序员 ” 不必那么 “ 职业 ”

  

“ 职业程序员 ” 不必那么 “ 职业 ”

 

  编者按:本文作者余晟,文章首法于其微信公众号“余晟以为”(微信号:yurii-says),欢迎交流探讨,授权 36 氪发布。

  我刚工作时,怎么也搞不清楚为什么求职信息里要有 “行业” 的选项,还要有 “职业” 的选项,很多时候 “行业” 和 “职业” 还是重叠的,比如行业是 “软件开发”,职业是 “软件工程师”,这不是一回事?过了好些年,这个谜团才真正解开。

  好玩的是,我本来以为只有自己不清楚这个问题,慢慢才发现不是这样。工作的时间长了,不少年轻的朋友们和我聊工作的问题,我发现不少人对自己职业生涯的困惑,都来源于对 “行业” 和 “职业” 的理解。看来,值得为这个问题写篇文章,谈谈我的看法。

  所谓 “行业”,通常是就公司而言的,指的是公司业务所在的领域。比如 “运输”、“零售”、“电商” 等等。

  所谓 “职业”,通常是就个人而言的,指的是个人所从事的具体工作。比如 “货车司机”、“营业员”、“平面设计” 等等。

  以上的例子看起来很简单,但生活中时常会发生混淆。因为行业与职业既不互斥也不重叠,每个人既有自己的职业也有自己的行业,而且职业和行业的名称还有可能非常相似。行业有 “软件开发”,职业也有 “软件开发”,两者还是有区别的。如果行业是 “软件开发”,往往指的是这个人所在的公司负责开发和销售软件产品;如果职业是 “软件开发”,往往指这个人自己就在编码开发软件。延伸开来说,软件公司里不只有开发软件的人,还有测试、财务、行政、销售等等各种职业。做软件开发的人也不一定在软件公司,电商、科研等等行业的公司里也需要这种职业。

  搞清楚了行业和职业的大致关系,就可以来谈职业生涯了。

  基本上,任何一份工作能给人的新鲜感都不会超过 6 个月,之后就只是简单重复的劳动。从公司的角度来说这是合理的安排,熟练工效率最高最保险。从个人角度来说很可能就不满意了,有心人总会想着自我提升。可是,力气该花在哪里呢?时间是有限的,谁都不想白花工夫。

  这时候,行业和职业代表了发展的两个方向。选择行业,就要拓展自己知识的广度,去接触上下游的人,了解整盘生意、整个业务链是怎么玩的。选择职业,就要加深自己技能的熟练程度,寻找比自己更专业的人和资料,加以学习。

  通常我们说的 “向专家学习”,其实是没有明确方向的,因为专家既有行业专家,也有职业专家。假设你在一家在线商店做程序开发,那么你的行业是电子商务,职业是程序员。选择行业作为发展方向,就应当侧重了解以下问题:电商的应用有哪些特点,在系统的选型和使用上有哪些讲究,哪些问题适合使用什么框架和中间件解决…… 选择职业作为发展方向,就需要侧重了解以下问题:现有的编程语言和框架有什么功能,什么特性,系统有哪些技术指标各表示什么意思,系统大概会出什么问题应当怎么解决……

  注意上面我说的是 “侧重”,极度 “偏科” 的组合是没有市场的。仅仅关心行业而不能动手就只能夸夸其谈,仅仅关心职业而不了解背景和规矩同样寸步难行。所以,大多数职业通常都对行业知识和职业技能有入门要求。但是,个人在成长时应当如何选择方向,把重心放在行业知识上还是职业能力上,很多人未必清楚这个问题。

  可以肯定的是,至少相当多的程序员选择的是 “职业”。无论什么行业的程序员,大家愿意愿意争论什么语言好、什么框架好之类的问题,把自己定位为 “中立” 的技术人员,所谓 “中立”,指的就是 “和具体问题无关,与具体领域无关”。这种职业生涯的选择,美其名曰 “职业程序员”。

  但是这种 “职业程序员” 工作起来往往会有很多问题。典型表现之一就是业务人员常常会大喊 “你怎么连这个都不懂,这不应该要我说啊”,因为他们确实 “不懂”——我见过不少开发仓储系统的程序员真的不理解什么是库龄,也搞不懂标品和库存的区别等等 “入门问题”;典型表现之二就是我经常在面试时遇到来自完全不同行业的程序员,对要应聘的行业没有理解也不做功课,看到 “程序员(开发工程师)” 就直接投简历了。你问他 “NoSQL 和 SQL 有什么区别” 通常还能答上来,问他 “电商、SNS 的什么特性决定了它们要大量用到 NoSQL”,往往就答不上来了。如果再问问他之前行业的典型问题对应着软件科学里的什么模型,能答上来的人就更少了。不过很多 “职业程序员” 觉得这不是问题,本来就不必操心这些问题嘛。