开发人员如何提高自己的产出?
前言
- 在软件行业下行阶段,普通的程序员应该如何应对未来?我2017 年入行就听到各种互联网寒冬和裁员的消息。因为我是从小公司慢慢向上攀爬的,所以基本上都是我遇到瓶颈后主动离职。但是 2024 年我感觉这个行业确实发生了很大的变化,于是我也开始思考,未来的趋势到底是什么样子的。
背景
-
从事软件一线开发 5 年。最近 2 年写的代码极少,大部分时间都在开会、沟通、组织人员处理各类问题,干的都是管理岗位兼职项目经理的活,我常跟同事说自己是个打杂的。在职期间集团有任何棘手的事情大概率我都会掺合进去处理,而源头是我刚入职期间看不惯有问题不处理,当时产研内部存在严重的互相推诿现象,自己主动组织处理过几次相关事件后就陷入了一个怪圈,解决的问题越多找我处理问题的人就越多,而且需求方职级越来越高,CTO、COO、CHO、资金总监、财务总监以及其他大部门的负责人、主管都会联系我,让我去处理问题,然后就开始做各种项目的技术 PM、项目总 PM 推进处理各种复杂的事物。实际上内心很希望能回到编程的岗位。
-
偶然的机会开始接触财务报表相关问题,专注数据部门纠察报表质量问题,同时又被安排协助财务审计相关事项。在解决问题期间发现了非常多数据问题,根据问题的影响面排序并处理;简单设计了 SOP:抽查数据、评估数据、反馈问题、组织处理、检查结果。期间感受到数据部门对研发部门的满腹怨言。听到最多的话就是底层数据乱七八糟的,导致数据部门连最基本的描述性分析都难做,需要做大量的数据处理才能完成数据报表,而业务方是不关心底层数据结构和数据质量的,数据分析师卡在中间各种为难。起初自己不是很理解数据部门的痛苦,直到自己做项目用数据收益分析的时候,我真是忍不住想骂人,这都是些什么破玩意儿。于是我反思自己;在我做开发的时候好像也没有过多关心数据丰富度问题。
-
感觉自己认识有了突破口,开始反思普通的应用开发人员到底是创造什么价值?
- 工作 1~2 年的时候;能快速完成领导安排的代码编写任务并通过测试快速上线很爽,掌握了新的框架使用方法和同事津津乐道。世界上最好的语言是PHP但是我写Java。
- 工作 2~3 年的时候;能快速理解产品经理的需求,在开发期间能找出产品设计上的缺陷并建议优化的时候很爽,开始负责某个应用的开发工作,高效交付是我的高频话题,我的交付速度最快。
- 工作 3~5 年的时候;基于微服务的架构理念,主导单体架构进行升级,在架构升级期间不断解决问题并指导团队做代码最佳实践,spring cloud也不过如此,会用就是懂了。高频话题就是最佳实践,公司的应用架构是我在负责。
- 工作 5~7 年的时候;上班期间不能写代码了,甚至都不怎么参与研发内部事项。制定故障评级标准并实施、制定产研工作流程标准并实施、制定技术支持工作流程并实施、制定项目实施流程并实施、制定数据清理流程并实施、紧急事项问题处理流程。我一直被事情推着走,疲惫不堪。不停地制定工作SOP,不停的承接新的工作任务;越来越多问题被解决了。可是我一点也不开心,我想回去写代码;人心换不来人心。计算机比人好相处。
什么需求
- 需求是什么?需求是产品经理的需求文档?是技术lead的工作安排?还是是项目的目标?我感觉这些都不是需求,这些只是现实中最原始的需求被拆解后的任务清单。结合过去工作期间同事对工作的评价,大家更多只是在完成工作,能够按时交付,顺带摸鱼就更好了;需求是什么一点都不重要,重要的是完成上级的任务。
什么是价值
- 很长一段时间,我都不能衡量自己的产出价值,写代码的时候只是单纯地追求业务交付速度、代码质量、系统稳定性。做管理的时候也更多的是关注事情处理的过程和结果,至于处理完之后会有什么价值也不清楚。总体上一直在做执行层工作。通过解决各种需求和问题体现自己的岗位价值。实际上价值的体现就是工作行动后现状与目标距离变化,通常用指标进行量化。
所以如何提升工作的产出呢?
好好表达自己
-
常说“累死累活干不过写PPT的”、“老板只喜欢会说的,不关心真正干活的人”。为什么会出现这个情况呢?我认为本质是需求满足的问题,PPT大多时候都是用来汇报工作的,而汇报场景多数是在向上管理、信息传递。如果我们只从需求和满足需求的角度思考,那么我们应该重视自己的表达能力。脑子想的100%,写在纸上60%,自己说出来10%。这就是普遍的情况,信息的衰减非常严重。同时专业的内容需要翻译成朴实的信息才能好的被理解。比如以下工作周报内容演变过程:
- 我做了什么工作 → 我发现了什么问题,解决了什么问题,需要什么帮助? → 统计个人工作清单内容,描述性分析工作内容价值、反思做的不好的地方,以及需要的帮助。→ 分类统计不同工作内容,量化现状和目标的差距情况、预测未来工作的产出情况、当前工作中的风险事项,以及风险处理措施和所需的帮助。
多一点同理,少一点同情。
- 本质上工作环境是一个竞争的环境,大家都是竞争且合作的关系,所以我们从竞争和合作的角度看来。快速理解他人的意图,避免情绪的传递这很重要。人的能量是宝贵的资源,工作内容频繁的切换或者重复都会消耗能量,而且情绪是乘法。好的情绪会提升心情和积极性,差的情绪会降低心情和积极性。这点非常关键,因为我们不能规避掉烂人、烂事,这些都是需要正面应对的。好好保护自己,培养自己的边界意识、领地意识;保护好自己的利益,千万不要害怕发生冲突;掌握好处理冲突的方法就可以了。
工作不是目的,工作只是达成目标的手段。
-
首先我们要清晰的定位自己,绝大多数打工者都处于社会的最底层,不要怀疑,杭州晚上炒面赚的钱未必比你少,杭州菜市场卖菜的大妈大多比你有钱;绝大部分从事软件行业的人员,基本上都是薪资福利吸引进来的。但是软件行业头部效应明显,2%的人掌握80%的利润或者更多。既然大家都是为了赚钱,那么请将注意力放在赚钱这件事情上(这也是我想对自己说的,什么技术情怀都是借口),只做对收益提升有帮助的事情,任何多余的事情都不要做。所有不重要也不紧急的事情都可以全部丢掉比如:没事干就去打游戏娱乐(如果打游戏本身可以产生收益那么可以做,但是要注意收益的可持续性)。可以增加收益或者维持收益的动作要多做,不增加收益和减少收益的事情全部丢掉。这里要注意的是收益不单是指金钱,收益的部分可以是自身的提升。
- 比如普通上班只做四件事情:发现问题、解决问题、提高效率、降低消耗。一天只有24个小时,所以需要合理分配精力和时间。
- 比如激进的打工只做八件事情,发现问题、解决问题、提高效率,降低消耗、管住自己情绪、管好人际关系、做好目标量化,目标价值驱动。专业能力强并不代表工作能力强,很多开发人员被提拔上去后,管理方面做得一塌糊涂。能把代码写明白,只是代表能解决部分问题,而工作能力才是能够协同拿结果的催化剂。
-
我们要识别自己在公司所处的位置,在一家公司里面的工作内容只是公司运转中的一个流程一个环节而已,公司本质上就是一个不断促成交易的集体;因此写代码也只是为了达成交易的一个流程或者环节而已。
最后送大家一碗大鸡汤
- 只有立场不同,没有对错。当决定权在第三方,不要浪费精力争论对错输赢。
- 成年人的世界,利益高于一切,职场就是交易场;永远不要低估人性的阴暗面,尤其是同事的嫉妒心。
- 打工不是为了老板,而是为了自己的履历和交易资本;你能拿多少工资,是由市场决定的。
- 老板派下来的活,可以干的不好,但不能不接不干,不服管的人再优秀,要是上了老板的黑名单,就没有了出头之日。受委屈和挨骂,都是工作的一部分,这关键看这个钱到不到位。
- 写代码的时候不要把自己局限在代码上,别忘了我们写程序是为了处理现实里的问题,不论你代码怎么写,如果能用现实逻辑解释通,那就没问题,如果和实现逻辑不符合,你代码写的再漂亮也会出问题。