1

业务开发的价值

 3 years ago
source link: https://lichuanyang.top/posts/40071/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

业务开发的价值

发表于 2021-03-12

| 0

| 阅读次数: 46

说一下我个人的经历,其实在我刚毕业的第一家公司里,做的就是底层的中间件开发。但是做的过程中,觉得并不喜欢这种远离实际业务的感觉,所以后来换工作的时候就有意的选择了业务部门。所以,今天想讲一下为什么会做这种选择。

我为什么不做底层开发

首先,我想说一个很多人的认知,就是认为做底层的开发更容易学到东西,成长更快。我觉得这就是业务开发同学的臆想而已,底层开发没有大家想的那么利于学习,业务开发也没有大家想的那么不利于学习,原因我会在后边展开说。而之所以很多人有这样的认知,很大程度上是因为底层开发的招聘标准通常会高一些,所以这些人本身的学习能力和意愿就是要好一些。

其实底层开发的日常和业务开发也没有太大区别,都是在做需求。只是业务需求的来源是产品经理,底层需求的来源是其他开发,或者底层开发者本人的思考和想法。这里,我要说自己为什么不愿意做底层开发的第一个原因了,就是需求的来源不科学。首先,如果只做底层开发,而脱离了实际业务场景的话,对于技术的认知很可能是有偏差的,这样导致自己想做的一些事很可能是在自嗨,并没有实际应用价值。而如果从其他那些搜集需求呢,也会有类似的问题,业务开发的同学提出的意见可能也就是他自己的非常浅的想法而已,不一定经过了很完善的考虑;再者,业务同学对基础组件究竟该干什么也未必理解准确,他可能分不清楚什么事应该基础组件解决,什么事应该自己解决。

在这,引入了我不愿意做底层开发的第二个原因,就是职责边界不明确。这个和配合的业务方的能力强相关。有时候,自己有些事没做好,业务方也能找到办法解决;而有时,明明和自己没关系,也要被迫处理一些上层的逻辑。

大家也可以看到,上边两个问题都极度依赖同事的能力,所以,如果你一定要做底层开发的话,一定要去技术能力储备强的公司,这个直接关系到你的工作幸福度。公司的选择还影响一件事,就是工作内容,简单的说,就是要造轮子,还是完善开源工具,两类工作可以说是天差地别。造轮子,需要对各种底层知识很熟悉,确实是很能促进进步,这个也是“做底层有利于成长”这种想法的来源。但是这种事仅存在为数不多的几家大公司中。其他大量的完善开源工具的工作,其实和业务开发没有任何区别,只需要了解一下开源工具的边边角角,就可以完成大部分工作,既没有深度,也没有广度。我开篇的时候说底层开发并不能帮助学习,原因也就在这。

所以,要做底层开发,公司的选择至关重要,大,技术能力强,两个条件缺一不可。大家肯定会问,我去这样的公司做不就行了吗。话是这么说没错,但这带来的问题也就来了,这也是我不想做底层开发的第三个原因,职业选择面太窄。国内java底层做的好的也就某里某团两家而已,这两家的企业文化大家也都清楚。所以,不想去这样的公司,是不是就不干了?即使你能接受,巨大的供需量对比,也会带来疯狂的内卷,就像算法岗那样,你是否有足够的把握赢得这场内卷游戏呢?而对于业务开发来说,大厂经历只是一段必要的学习经历和自己简历上的一个亮点,当你对大厂的整个规范流程熟悉了之后,就可以自由的选择想去的公司了。

业务开发的价值

前边讲底层开发说的太多了,下边进入正题,就是业务开发的价值。在我看来,业务开发带给我的能力提升主要在三个方面:业务知识的积累,技术广度的提升和综合能力的提升。

先说业务知识,业务知识其实就是对现实世界的理解。对于我个人来说,工作之余,了解一下其他行业的运转模式,首先就是一个很有意思的事情。其次,不断的去了解不同行业的行业知识,我是完全能感受的到对我认知能力的提升的。这种能力能不能变现?当然是可以的。比如去炒股,工作中的积累让我有了分析一个公司商业模式的能力,对于什么样的是好公司好股票,显然可以比一般人理解的深一些。当然,这儿扯的太远了,大家看看就好,关键是看自己的兴趣,有没有意愿去了解一些技术之外的事情。

接下来是技术广度。业务开发和底层开发的最大区别,其实就是底层开发对深度要求更高,而业务开发对广度要求更高。业务开发需要对各种各样的框架、中间件都有所了解,并且不能了解的太浅,也需要一定的深度,要能够理解它们能解决什么问题,又会带来什么问题,适用于什么场景;面对复杂的业务场景和复杂的系统,要能够全面理解;发生问题时,要有能力快速定位到问题在哪。这些除了需要知识的积累,也需要实际场景下经验的积累。

然后说一下综合能力的提升,相比底层开发,业务开发对人的通用基础能力会有更大的锻炼,比如沟通能力、分析解决问题的能力、权衡取舍的能力。这些能力可以说和技术有关,但关联也没那么大,极端的讲,即使你将来转行了,这些普适性的能力也会很有帮助。我时常在想,学着用一个开源工具,和打王者荣耀,究竟有什么区别。作为新手,参考着现成的例子做一个demo, 就相当于第一次接触这个游戏,随便打打。而随着对这个逐渐熟悉,有的人可能就成了没有感情的调包机器,而有的人就可以逐渐去了解底层的实现。就像游戏里,有的人一直浑浑噩噩,打了几千场连电刀和无尽战刃有什么区别都不知道,而有的人就会去探索伤害的数值机制。所以,我觉得大家别把程序员看成一个多特殊的职业,它和其他职业并没有什么本质的区别。大部分职业事实上都是在用不同的方式解决问题,比如律师是依靠法律,基金经理是依靠对市场和基本面的认知,程序员就是靠代码。我们在不断的工作中,锻炼的是解决问题的能力,而解决的方法并没有人要求你一定要限制在技术之内。

我们在业务开发中,就是要不断积累上边三个方面的能力,这样才能滚起雪球,从而从容的应对中年危机。我写这篇文章,当然也并不是要说业务开发就是好,主要还是想帮大家分析清楚业务开发和底层开发的区别,从而做出一个理性的选择。

如果大家有什么想法,也可以来和我沟通。

原文地址: http://lichuanyang.top/posts/40071/

wechat
订阅公众号

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK