程序员的重复劳动陷阱

https://kb.cnblogs.com/page/627035/

同样是一样的计算机专业毕业,进入职场的职位和工作都差不多,为何有些程序员短短几年就成长为全能选手或领域专家,有些程序员还在做CRUD?

程序员的重复劳动陷阱

不知道大家有没有这样的感觉,每次加入一个新的公司/组,一开始总是要学这个学那个,可能会花很多时间看现有的代码,然后花一些时间实现一点点小的功能,等到经过一段时间后,自己对工作越来越得心应手,提来的类似需求马上就可以做,以做得多做得快为骄傲,觉的这样可以更受老板青睐,可以升职加薪。

我在毕业第三年的时候加入前公司,在加入公司的第一个季度,我主要再做一些边缘工具以及理解系统,从第二个季度开始在组里的核心业务上开发。当时自己为了能够快速的出成果,会从组里所有的任务里挑看着比较容易实现的做,往往一天就可以做完一个或者两个任务。做完一个任务后,发现backlog里面有相似的任务,我也“赶紧”抢过来assign给自己,然后快速的做完,提交code review。从那个季度开始我每个季度做的工单越来越多,超过组里的所有其他成员,自己也对自己的“高效”洋洋得意,觉的自己工作的非常充实,进步很大。

然而在这个过程中,我已经不知不觉得掉到“重复劳动”的陷阱中去了。

我们在写代码的时候,有一个原则交叫DRY(Don’t Repeat Youself)原则,简单通俗的说就是不要copy paste代码,能抽象成函数的抽象成函数,能抽象成基类的抽象成基类。但是程序员的工作本身也应该遵循一样的道理,那就是尽量不要做重复的工作。

重复劳动对程序员的危害

回到开篇的问题,同样是一样的计算机专业毕业,进入职场的职位和工作都差不多,为何有些程序员短短几年就成长为全能选手或领域专家,有些程序员还在做CRUD?

在这里插入图片描述

大部分的技术学习曲线类似于上图,经历过短暂的入门期和相对长一些的积累期之后,可能大部分技术都会进入到高效期。在入门期和积累期的时候可能技能使用的效率会低一些,进入到高效期之后,随着技能使用的效率大大提高,工作所产生的“输出”也越来越大。因此“高效期“给人以充实的假象。

一旦自己的某项技术进入到高效期,在此基础上的提升会非常困难,可能之前工作三个月所掌握的新知识,比之后一年在工作中积累的要多。有时候我们看一个程序员工作了5年,但是他可能第一年学习并熟悉所用的技术,接下来4年都在做相同的工作,解决类似的需求,那么他的5年工作经验等于1年乘以5。

而有些程序员,他每工作一段时间之后,都会钻研技术更深的部分,或者去学习新的技术,总是保持着在尝试自己并不擅长的领域,那么这样的程序员,他的5年工作经验会比前一种程序员要多。

如何摆脱重复劳动的循环

既然重复劳动的危害这么大,那么我们是否可以摆脱重复劳动的循环呢?

有的时候,程序员自己也不想老是重复的干类似的东西,但是无奈被派发的任务重复的很多,似乎自己可以选择的不多。

在我自己在第三年大量重复劳动之后,我的经理找到我谈话,说我不应该这样重复自己,同样的事情做一两次就好了,再重复的做对自己的帮助不大。我分享一下我是怎么样避免重复的劳动的:

找到Pattern,解决一类问题而不是一个问题。当你解决了N次类似的需求的时候,是否可以把这些问题抽象出来,是否可以去自动化的实现这类需求?改了N次bug之后,是否可以发现bug的规律,能够开发出静态分析工具来抓住这些bug?
尝试用新的技术解决同样的问题。**有时当项目的实现并没有多少规定的时候,我们可以在一定的自由度下尝试新的工具。**今年年初的时候我去尝试修改一个已有的内部工具前段,持着学习新技术的心理,我用Redux重新实现了前段,而不是在原有的jQuery的前段基础上修改。
**尝试换岗。**换岗位可以直接的让你接受不同的项目,做一些不同的事情。我在上家公司的第一组待了近三年才换组,现在来看应该更早的时候尝试不同的事情。换岗位也会带来一些其他的问题,比如到新岗位之后可能会影响晋升速度,需要重新建立自己的权威等等。
换工作。换工作是一个终极大招,它会带来很多其他的变化,不建议只是为了脱离重复劳动而换工作。如果没有养成良好的学习习惯,那么换一份新工作之后也很有可能陷入到新的重复劳动的循环中。

重复劳动不可以完全避免

重复劳动是否可以完全避免呢?

我觉的是不可以避免的。以上的内容都是基于程序员成长的角度去分析问题,重复劳动是有害的。但是将程序员的劳动视为价值输出的话,熟练的价值输出确实也是程序员的价值之一,可以争取到更高的薪酬。

我们站在组织的角度上来看,**重复的需求永远存在,这些重复的需求需要被完成。**如果在人员配置有限的情况下,不可避免的单个个体成员需要去进行一定的重复劳动。而由于时间上的紧迫性,可能必须要用高效粗暴的方法来实现。

如果你是公司的初创成员,需要在初期做大量的重复工作来从无到有的实现新的产品,那毫无疑问这是应该做的,因为这样的重复劳动带来的收益可能是巨大的。

希望大家在工作中都可以正确的认识到重复劳动的陷阱,让自己能够保持持久的成长

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147591.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

leetCode 121. 买卖股票的最佳时机 贪心算法

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。…

SpringBoot注册web组件

目录 前言 一、注册Servlet组件 1.1 使用SpringBoot注解加继承HttpServet类注册 1.2 通过继承HttpServet类加配置类来进行注册 二、注册Listener组件 2.1 使用SpringBoot注解和实现ServletContextListener接口注册 2.2 ServletContextListener接口和配置类来进行注册 …

Linux shell编程学习笔记6:查看和设置变量的常用命令

上节我们介绍了变量的变量命名规则、变量类型、使用变量时要注意的事项,今天我们学习一下查看和设置变量的一些常用命令,包括变量的提升,有些命令在之前的实例中已经使用过了。 一、 echo :查看变量的值 语法格式:ech…

PCL 计算点云中值

目录 一、算法原理2、主要函数二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 计算点云坐标的中值点,首先对点云坐标进行排序,然后计算中值。如果点云点的个数为奇数…

【iptables 实战】07 iptables NAT实验

在上一节中,我们将两个网段的机器,通过中间机器的网络转发,能达到互通。再来回顾一下这个网络连接的图 上一节我们在防火墙实验中,设置了主机B的的转发规则,我们先清空主机B的转发规则 [rootlocalhost ~]# iptables…

springboot整合es

springboot整合es 1.引入依赖&#xff08;springboot2.3.x版本可以兼容elasticsearch7.x版本。&#xff09; <parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.3.6.R…

记录:Unity脚本的编写2.0

目录 前言控制方法键盘控制鼠标控制虚拟控制器控制 平移和旋转 前言 前面记录了一些简单的unity脚本用来控制unity中对象模型的移动&#xff08;或者不能叫控制&#xff0c;毕竟它是开启之后自己在跑的&#xff09;&#xff0c;那么让模型可以根据用户的操作来进行变化的方法自…

vue 使用 创建二维数组响应数据 渲染 echarts图标

目前我遇到的情况就是用动态的二维数组数据渲染echarts图标&#xff0c;我们从后端收到的接口一般是个一维数组&#xff0c;需要手动构建并且保证响应式。接下来我做了个案例 一、案例总逻辑 1. 先创建一个vue项目 2. 添加 echarts依赖 3. 模拟数据请求&#xff0c;构建二维数组…

串口数据包收发

数据包 把属于同一批的数据进行打包和分割&#xff0c;方便接收方进行识别 HEX数据包 思路&#xff1a;一个数据规定四个字节&#xff0c;以0xFF为包头&#xff0c;0xFE为包尾&#xff0c;当检测到0xFF时&#xff0c;接下来四个数据就是数据&#xff0c;接收到0xFE时&#x…

Win10系统中GPU深度学习环境配置记录

运行环境 系统&#xff1a;Win10 处理器 Intel(R) Core(TM) i7-9700K CPU 3.60GHz 3.60 GHz 机带 RAM 16.0 GB 设备 ID A18D4ED3-8CA1-4DC6-A6EF-04A33043A5EF 产品 ID 00342-35285-64508-AAOEM 系统类型 64 位操作系统, 基于 x64 的处理器 显卡&#xff1a;NVIDIA GeF…

pycharm一直没显示运行步骤,只是出现waiting for process detach

pycharm一直没显示运行步骤&#xff0c;只是出现waiting for process detach&#xff1b;各类音乐免费软件&#xff1b;最棒的下载torch-geometric-CSDN博客&#xff08;不太推荐&#xff09;我强烈推荐这个&#xff1a;_waiting for process detachhttps://blog.csdn.net/weix…

2023年汉字小达人市级比赛在线模拟题来了,四种练习助力好成绩

2023年第十届汉字小达人比赛区级自由报名活动已于9月30日结束&#xff0c;尽管最终晋级市级比赛的名单还需要在11月初发布&#xff08;有一些学校的校级选拔还没结束&#xff09;&#xff0c;但是许多小朋友已经开始准备市级比赛了。 根据往年的经验&#xff0c;实际比赛也是在…

Android 活动Activity

目录 一、启停活动页面1.1 Activity的启动和结束1.2 Activity的生命周期1.3 Activity的启动模式 二、在活动之间传递消息2.1 显式Intent和隐式Intent2.2 向下一个Activity发送数据2.3 向上一个Activity返回数据 三、补充附加信息3.1 利用资源文件配置字符串3.2 利用元数据传递配…

国庆加速度!新增功能点锁定功能,敏捷开发新增估算功能,助力项目快速突破!

大家好&#xff0c;CoCode开发云旗下Co-Project V3.6智能项目管理平台正式发布&#xff0c;平台新增功能点锁定功能、敏捷开发模式新增估算板块和两种估算方式。 功能点锁定功能进一步提高了项目估算的灵活性和准确性&#xff0c;有利于提高项目估算效率&#xff1b;而敏捷开发…

数据分析:人工智能篇

文章目录 第三章 数据可视化库matplotlib3.1 matplotlib基本绘图操作3.2 plot的线条和颜色3.3 条形图分析3.4 箱型图分析3.5 直方图分析3.6 散点图分析3.7 图表的美化 第四章 数据预测库Sklearn4.1 sklearn预测未来4.2 回归数据的预测4.2.1 回归数据的切分4.2.2 线性回归数据模…

【小尘送书-第六期】《巧用ChatGPT轻松玩转新媒体运营》AI赋能运营全流程,帮你弯道超车、轻松攀登运营之巅

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…

云原生数据库TDSQL-C

数据库系统核心模块 云原生数据库要解决什么问题&#xff1f; HTAP 云数据库VS云原生数据库

《C++ primer plus》精炼(OOP部分)——对象和类(8)

学习是一项持续的投资&#xff0c;永远不会白费——本杰明富兰克林 文章目录 第13章&#xff1a;类继承一个基类和派生类公有继承的逻辑关系&#xff1a;is-a多态公有继承 第13章&#xff1a;类继承 一个基类和派生类 从一个类派生出另一个类时&#xff0c;原始类称为基类&am…

怎么通过portainer部署一个vue项目

这篇文章分享一下今天通过docker打包vue项目&#xff0c;并使用打包的镜像在portainer上部署运行&#xff0c;参考了vue-cli和docker的官方文档。 首先&#xff0c;阅读vue-cli关于docker部署的说明 vue-cli关于docker部署的说明https://cli.vuejs.org/guide/deployment.html#…

信创办公–基于WPS的EXCEL最佳实践系列 (数据整理复制粘贴)

信创办公–基于WPS的EXCEL最佳实践系列 &#xff08;数据整理复制粘贴&#xff09; 目录 应用背景操作步骤1、数据查找与替换2、复制或粘贴数据3、使用自动填充工具4、将数据拆分到多列5、应用数字格式 应用背景 数据的整理复制粘贴等在日常的工作中经常使用。本章内容主要学习…