背景

程序员到底要不要懂业务_产品经理

每年会遇到不同阶段程序员在问,新入职场的,有过几年职场经验的,甚至还未毕业的未来程序员,总是会问“程序员到底要不要懂业务”的问题。

近几年,作为项目负责人做了几个0-1的项目,并作为团队leader在负责持续的迭代版本和架构演进。 这几个项目中,有的是作为技术团队的负责人,和产品经理相互协作来完成的;有的是直接作为总负责人,来组织整个项目的。在整个工作过程中,不管是前者还是后者,我发现都已经离不开业务。尤其是作为项目的总负责人,更多的视角都会基于业务,从数据的视角出发,数据驱动业务。关注对业务的支撑,关注业务的发展。
在这里结合我自己的经历和身边其他同事的经历,和大家聊聊这个话题。这是一个开放的话题,每个人在参加工作之后,因为就职公司的背景、文化还有自己的工作经历不同,都会有所影响和不同。 我们接下来会描述一些真实的职场情况,让大家能有所感受,给大家接下来的工作能有点启示,找到自己合适的工作方向。

现在流行这么几种说法
我是一个程序员,需要关注的重点是技术,并不需要知道业务。
企业以价值产出为导向,因此程序员必须关注业务。
因为程序员不懂业务,只能听产品经理讲方案,结果需求改了又改,甚至推翻出来。

先来回顾了解下互联网一个标准团队的成员组成和分工
一般一个团队包含这么几个角色:项目经理、架构师、产品经理、核心开发人员(TL)、开发、测试、运营(或业务方)。

项目经理: 一般是经由PMO发起项目后,由一个专人负责该项目的落地和整个后续推进工作等。项目经理直接对整个项目负责,并直接向CEO或PMO(项目管理办公司)汇报工作。

架构师: 负责整个项目的技术架构,技术实现,技术攻坚难点和统筹整个项目;并用技术实现项目业务内的所有需求。

产品经理: 负责整个项目的业务需求梳理,需求分析,输出产品原型PRD(也是项目的雏形)。

核心开发(程序员): 核心开发负责整个项目的核心模块和业务开发,或者负责项目的核心基础组件功能开发。除架构师外的一些技术难点攻坚,带领其他开发组员协同工作等。

测试: 负责整个项目的测试工作,测试用例编写,检验开发人员设计出来的系统或产品是否符合产品的业务预期,对产品的质量把关。

运营(业务): 负责产品上线后的日常运营和维护工作,包括用户增长、广告投放、用户资料维护等。这里公司分甲方和乙方不同,运营和业务区分也不同。

这里面不同公司,项目经理和产品经理谁起主导作用可能会有不同。

那什么是业务呢?
业务就是这个行业怎么发展起来的,现状如何,未来趋势如何,用了什么技术,有什么企业,商业模式如何,盈利能力如何,目前主要面临什么问题,消费者有什么特点,等等。

世界很复杂,单个细分行业的业务也很复杂。

一个过来人的看法

“程序员其实是要懂业务的”,这里有可能要被好多人吐槽了。但是近10年的技术经历让我见到了,如果你只会写代码,你不是不可替代的,而是可有可无的。尤其是现在更是大有趋近饱和的趋势。
但话也不是那么极端,除非你的技术很牛逼,在国内或者某个行业内能够排上号的。 但技术牛逼的人,也不是只是技术超群,还常常因为能够利用手中的技术解决某方面的业务问题,做了哪些突出的贡献。

从行业现状来看
实事求是的说,绝大部分人从事IT研发,只是把他作为一份工作的选择,不管是出于行业热门,好就业,还是说因为这个行业相对高薪,真正是因为对技术的执着追求而从事的相对是少数。
从事了IT研发的人,大部分又是从事业务领域的开发的,真正从事框架底层,中间件等纯技术工作的又是少之又少。我们出来混,也是要拿成果说话的,做过什么项目,有什么价值。这种价值往往就是针对业务而说的。
你看你在写简历的时候,一份好的简历通常说要有数据来展示你的成果,而这个数据恰恰又大部分来自于业务价值。

从个人发展来看

有人说,程序员只需要懂技术就好了,熟悉业务是产品经理或者需求分析师的工作。

先抛开这两者的协作问题(作为IT人懂得都懂),先说一个程序员在职业发展,和在公司的发展中,想多一些表现的机会,想拥有一定的话语权,在懂技术的背景下,再能熟悉业务,那你的不可替代性和话语权就会越来越大,否则,你就是作为后援部门(以前我们老板总是管研发部门叫成本部门)在后默默奉献的一批人,加之中国绝大多数老板不懂技术或者对技术一知半解。任由产品经理拿着天马行空的ppt,去和老板进行沟通汇报,反过来再压榨你的工期,频繁的更改需求。熟悉业务,可以用业务话语来和老板沟通,你也多了一个向上管理的途径。

CTO就不必说了,这个岗位的职责本身已经身处战略层级了。

我们来看阿里p8对于岗位的要求:

程序员到底要不要懂业务_android_02

这里可能又会有好多人说,能成为P8的能有多少。但是我想说,即便你成不了阿里的p8,但是至少在你的行业和你的公司,不可替代性总会是越来越大的,如果能成为某个领域的专家那就更好了。现在DDD理论中也有领域专家不是。咱们现在的民营企业中,不知道能有多少老板会忍受一个大龄程序员一直从事一些业务代码的开发。我们作为架构师,也要规划业务架构和技术架构的迭代与演进,也脱离不了业务。
chatgpt最近是持续热门的话题,他都可以在你准确的描述下,写出优雅的代码了。 这个世界,缺的是技术过硬又精通业务的工程师,缺的是真正能解决实际业务问题的人,缺的是复合型的人才。