写业务代码一般就是完成业务应用的功能,天天写业务代码的程序员也被戏称为CURD程序员,CURD就是增(create)、改(update)、查(read)、删(delete)的意思。CURD程序员每天的工作内容就是根据业务逻辑需要对数据库数据进行增删改查,这在很多人看来是没有技术含量的,尤其是工作了多年的程序员,认为这无法提高他们的技术能力,写了十年的业务代码,却和写一年业务代码的年轻人差别不大,可能对某个框架更为熟悉一点罢了,此外,少有其他方面的优势。
实际上,每个能正常被使用的业务系统都需要CURD的工作,但仅仅是CURD也是无法完成一个比较复杂的业务系统的。一个业务系统除了需要编写功能代码,还要有需求分析、架构设计、详细设计、功能编写、测试、集成部署等等工作内容,CURD顶多是功能编写的子集。因此,如果你的任务只是CURD,那时间长了以后确实可能会厌烦,并且觉得技能得不到提高。也因此,论坛里常有人求助于高手,问怎样才能脱离这种CURD工作:
高手们的答案也不一致,有的说写业务代码同样牛逼,CURD是核心竞争力呢,有的建议换工作,摆脱CURD,也有的说要做个有心人,多解决实际问题,自然就会提高,等你水平到一定程度了,就可以不做这类工作了。
而在我看来,不写业务代码的人,也不一定有多牛掰,他们也不过是根据需求实现一些东西,也需要领域知识和编程技能,只不过有些领域知识和我们常见的上层应用业务知识有比较大的区别。即使是内核开发人员,如果只是负责实现某个模块,而且他并没有多少进取心,每天只是读读文档和协议,调调接口来实现功能,没有深挖原理,也不关注其他方面的技术,没有全局视角,那他其实顶多也算是一个搬砖的,离高手还是有很大的距离。
而做CURD工作的,也并不是完全学不到东西。CURD从小的方面来说,是老板的需求,从大的方面来说,是社会需求,需要大量的人来从事这个工作。CURD程序员离业务比较近,有机会可能也必须去更多地理解业务,而业务知识也是一种领域知识,具有深刻的领域知识的人,在职场中是有竞争优势的。因此,你可以在CURD的同时,多了解业务知识,或者多思考怎么把CURD做得更好,比如制作一些模板工具,想办法通过各种方式来提高工作效率,这样面对同样的工作时,你会更轻松因而也更具有竞争力。如果你真想摆脱或者基本摆脱,那么在平时就应该注意积累其它方面的知识,能完成其他CURD程序员难以完成的任务,在工作中,你要懂得合理地越俎代庖、份内份外!
越俎代庖本来是个贬义词,指的是越权办事、多管闲事的行为,但在这里是褒义词。其他同事遇到难题时,你主动帮忙解决,在你自己任务已经完成的情况下,可以研究其他人的工作内容,这样可以在其他同事只有不太好的实现方案时,适时给出你自己的方案,这样也不出现抢活邀功的现象。即便你的方案使用不上,你有过自己的思考研究,对自己的成长也是有利的。
可能有同学会说了,你这是站着说话不腰疼,平时加班加点才能完成任务,哪有时间去做这样的事情。如果是这样,那你的确难以摆脱这种境况,要不你就安心地每天CURD,要不就换个更适合自己的工作。就我自己而言,工作这么多年,和行业里其他人相比,加班真的很少,不过我花在学习上的时间,可能会比大部分人都多。这个学习,包括工作的时候去学习其他人的任务所涉及的技能、整个项目的架构原理,以及其它自己认为有用或感兴趣的技术。一般来说,工作上的事情,我工作时间就解决可能也顺便理解其原理了,而要拓宽知识和技术面,一般就靠下班时间。下班时间学习的东西,有时候也是跟工作内容相关的,即便是不相关的内容,可能也会在你工作时给你带来灵感,或者有助于你更快理解工作上的事情,这样的话也使得你能更快速完成工作任务,于是又有更多的时间去学习和扩宽技能,形成一个良性循环。关于良性循环和恶性循环,可以参考我之前的文章:停止无谓抱怨,构建你的良性循环系统。
总之,如果你觉得自己目前就是CURD程序员并且不满足于此,那你可以先思考如果把CURD做得更好更高效更少出bug,同时尽可能地熟悉业务,争取在某个业务方向上比普通人更熟悉。因为你最熟悉CURD,可能在换工作时,人家还是倾向于给你提供CURD的岗位,因此如果要摆脱这种境况,就需要你在业余时间加倍地学习、实践新技能,然后在机会到来时,才有可能抓住它。“机会永远只留给有准备的人”,以我的亲身体会,这句话在99.9%的情况下应该是正确的,希望我们都记住它!
原文发表于:听说你在为天天写业务代码而烦恼?
欢迎关注公众号: