你加班太多是因为你的代码写的烂

作者: 六更读书 | 来源:发表于2016-11-23 22:58 被阅读14595次

作为一名程序员,我渴望我加入的应该要是一支“30%的时间在写代码,而70%的时间在喝着咖啡讨论着如何将产品做好”的团队。我觉得软件工作应该成为一项技术和艺术融合的高智力活动,我们的项目经理应该是一个高度理解质量、范围和进度客观规律的明白人,“高效工作,快乐生活”才应该是我们的座右铭。

可现实情况却是,团队在一边超负荷的做着需求,一边改着没完没了的Bug。过点前夕,项目经理熬着通红通红的眼睛盯着我们整晚整晚的加班,质量专员一遍一遍的催促质量数据还不够,软件工作已经无可挽回的沦落成了体力劳动,别说快乐生活,生活都没了。

好吧,以上可能都对,项目经理和质量专员是一个不懂客观规律并且毫无同情之心的大魔头,让我们程序员们毫无尊严卑贱的活着。

只是,有句话憋了很久了:“醒醒吧,所有的这些,都是因为你的代码写的太烂,你制造了太多的Bug!”。你可能会抱怨这分明是需求变更太快,领导计划太紧导致的。嗯,听着挺有道理,但是要知道需求变更本身就是软件的客观规律,而领导要求进度,呵呵,你也可以认为是客观规律。

这不是一篇证明谁导致程序员加班太多的论证文,也不想给大家灌鸡汤,让大家一夜之间都变成编程高手,但是至少说一些实实在在的经验和方法。总之让大家多看一点就多获得一点实际的价值。


01 不要一上来就开始写代码

你可能性子急,也可能早已按耐不住跃跃欲试昨天刚学会的一个编程小技巧,我想要告诉你的是,不急,收起你那磨刀霍霍的表情,在你拿到需求准备写出你第一行代码之前还有更重要的事情要做。我想怎么强调这件事情的重要性都不为过,在我以前写的自己非常满意的代码经历中,我都采用了这个方法,它能消灭原来可能会被测试提的90%的Bug单,甚至做到零缺陷,当然做到这点可能需要一个过程。

拿到需求之后你首先要问下自己对需求是不是已经充分理解了,得到肯定的回答之后,我们就可以开始了:

1)先在你忙碌的工作中,找出你能完全掌控的一个小时时间段,这一个小时完全属于你自己,保证这一个小时不会有任何打扰,或者任何能影响到你执行不下去这个方法的打扰。要记住这一个小时非常重要,比你后面要执行的所有活动的时间都重要,它绝对值得。

2)在第一张白纸的上方写下“该需求特性的正常流程和影响范围”,然后在白纸下方逐条开始写下该需求特性正常流程包含的内容,大概会使用到哪些库函数,会提供出哪些接口,是否会影响版本升级,是否影响资源文件,是否影响原有的接口等等。

3)在第二张白纸上方写下“该需求特性所有的异常场景和本人以往经常会犯的一些错误点”,然后在白纸下方一条一条的开始往下写。

4)不断重复第2)、3)步。

你可能会觉得这不就跟写的需求澄清材料差不多吗,我要告诉你的是这是两回事,它不是一项质量专员要求你做的质量过程活动,这是你自己和自己之间的一次深层次对话,这不需要告诉任何人,不需要向其他领域输出任何交付物,这是对自己要写出优秀代码的一次自我驱动。

一开始你可能会觉得很难,写几条就写不出来了,或者闪过“这玩意儿是不是真的有用”的念头,不用着急,起身去窗户边呼吸一口新鲜空气或者去打杯水喝,总之不要中断,除非办公室着火了不要去干让这件事继续不下去的事情。当你慢慢往下写到第20或者第30条答案的时候,你可能突然会有一种“这么隐晦的一个异常点都被我发现了,简直太牛了!”的情感涌出,这个时候你会暗暗惊呼有点难以抑制自己的兴奋,这说明你快要接近成功完成了,后面每写出来的一条都会让自己感动。记住,中间不要放弃,你坚持下去的决定会将这一个小时变成你整个需求实现当中最重要的一个小时。


02 忘掉后面还有该死的质量活动

所有编码之外的质量活动,都是基于公司对于你写代码水平的不信任产生的。也就是说公司花了大量的钱招来质量专员、网元测试、解决方案测试这些人都是因为你没把代码写好造成的浪费。

常见一些开发人员,刚来的时候对质量专员安排的质量活动颇有微词,“我以前公司做项目根本不需要做这些东西还不是一样能把项目做完”,“这些质量活动,简直就是对编码时间的侵占”。说这些都没问题,但是你一边说着这些一边写完代码后Bug就乌泱乌泱上来,是不是有点不要脸?质量专员设计的这些活动,就是为了不让你的烂代码一泻千里的冲到客户面前设计的一个个检查站,当你对于“写出好代码”什么事都没做,只想着取消这些质量活动的话,就只能理解为耍流氓了。

那么,做好质量活动就能“写出好代码”吗? 答案是不能。质量活动只是质量专员的监管手段,它既不是目标甚至也不是方法,你写代码的目标不是要满足质量活动标准,而是要追求零缺陷,也不会因为你Wbit测试做的好就能写出好代码。你要做的一个是“不要一上来就开始写代码”,另外一个就是掌握尽量多的重构方法,重构思维方式,掌握重构并不一定是要对原来代码的重构,而是下笔之前就知道好代码该怎么写。

我让大家忘记质量活动,不是让大家不听质量专员的话,而是大家在写代码的时候要心中存有敬畏,代码写完之后所有的活动都是你造成的浪费,你要为消除这些浪费而竭尽全力。


03 记住,你写的代码是给人看的

我之前听一位同事讲他上一家公司的一件听来十分惊悚的故事,他原来公司的一位同事离职了,留下的是一堆十分复杂,看了会让人神经错乱的C++代码,他走了之后,发现整个项目组的人没有一个人能接手得了他的模块,项目经理不得不高价加请客吃饭的方式让他过来给全项目组的人讲两天他的代码。 这个家伙大有“看吧,只有我才能搞定”的“衣锦还乡”姿态。我好奇的是这个项目经理为什么没有尽早的开除他,简直就应该报警啊。

好的代码是让人看来赏心悦目的,任何能力不够或者炫技成分的增加人的阅读障碍的行为都需要被改进,你能不能三两句话就能说清楚你自己写出来的代码的脉络,当然这同样涉及到你要掌握尽量多的重构方法和重构思维方式。

另外还有一个自我评判的标准,就是你扪心自问一下,“你写了这么多代码,你曾经为之动心过吗?”你是否写完之后会忍不住的反复阅读自己写完的代码,并连连暗暗惊叹代码之美?

作为一名程序员,希望在你某天离开公司后回想起的若干个开心时刻中,有一个会是因为你面对自己刚刚出炉了一份让自己心动的代码的那份感动,而不要成为上面提到的那个“离开后,公司才知道他有多么重要”的家伙。


04 现在开始,刻意练习

你是否发现自己长期维持着“刚刚好能完成story”的代码水平,写了好几年代码仍然会被测试人员追着屁股提单?种种疑惑是因为代码能力的提高跟你写了多少年代码没有直接关系,你需要做的是刻意练习。

比如把我前面提到的01、02、03中提到的方法反复练习,或者把你自己琢磨出来的方法分解成一项项的环节,刻意的去练习,从测试那里得到反馈,然后不断加以改进,慢慢你就会从一个整天被测试人员追着跑的人,变成发现自己很容易就能达到质量过程标准的人,再慢慢就会发现你写出来的代码测试人员越来越难发现问题,最后只要你状态好点就能经常性的写出零缺陷的代码。

其实有些道理我们貌似都知道,但是我觉得离真正懂得还差了两步,第一就是你需要亲身去经历、践行这些道理和方法,第二就是你要能够转述并让其他人也能够明白。所以最好的学习方式就是亲身经历,然后写下来分享给大家,这样才能让你真正懂得那些你原来认为懂得了其实未必懂得的道理。

相关文章

  • 你加班太多是因为你的代码写的烂

    作为一名程序员,我渴望我加入的应该要是一支“30%的时间在写代码,而70%的时间在喝着咖啡讨论着如何将产品做好”的...

  • 五句话克服选择困难症

    老板让加班,我去还是不去? 去! 你不想去无非是因为这次加班可能没有加班费,给你的工资大概也不足以支付你太多的劳动...

  • 你不幸福是因为计较得太多

    你不幸福是因为计较得太多 这句话好像是毕淑敏说的,你不幸福是因为计较得太多。写这篇...

  • 如何低成本测试你的创业idea 可不可行

    如何测试低成本idea很多人觉得资金创业失败,是因为代码写的不好,或是请来的工程师代码写的烂,才导致失败。但软体创...

  • 日签——day612

    01 烂人烂事之所以烂,是因为你越在乎它,它越烂,让你跟着它一起烂,永远陷在里面。 即便最后你搞赢了它,你所耗费的...

  • 这么烂的代码谁写的?

    最近看到一个问题,叫做「你们会因为代码烂,而入职两三天选择离职吗?」。 其实早先有过一些关于代码质量的讨论,比如「...

  • 人心

    你累,是因为你做的太多;你做的太多,是因为想的太多;你想的太多,是因为你一相情愿、自作多情…… 你努力了,不一定得...

  • 不要在烂事上纠缠

    烂事之所以烂,是因为你越在乎它,它越烂,让你跟着它一起烂,永远陷在里面。即便最后你搞赢了它,你所耗费的时间...

  • 趣图:你的代码是我运行过的最烂代码!

    「你的代码是我运行过的最烂代码!」 「但还是能运行呀!」 ...

  • 你怎么看待加班?

    你怎么看待加班?我怎么看待加班不重要,因为看不看都得加班。但我也不悲伤,因为我回家的休闲活动也是在家写代码,现在不...

网友评论

  • 0975c35d689b:学习了。学习了。
  • 73fddcac0b17:至于需求这个问题,个人观点,仅代表个人,只想说一点:客户就是上帝,人家想怎么改,这是身为程序猿的我们没办法决定的,只有两种办法,要么照做,要么不做!所以,如果选择了做,那就别抱怨那么多,没卵用。权当练手吧,让自己的技术和能力更好更成熟!
  • 73fddcac0b17:认同作者的观点,本人现在做java后台,虽然我现在也还是一只代码界的小菜鸟,但是我们技术经理一开始就教我,接手一个项目之后,不要急着写代码,先理思路,走流程,需要哪些实体类,实现哪些接口,怎么实现,等等一系列问题。可能完全理顺这些问题需要花费半天,一天甚至几天时间,但是这都是值得的,因为当你完全理顺这些问题的时候,你的项目其实已经完成了一半了,剩下的就是把你想清楚的这些东西实现就行了。还有就是代码的封装问题,不仅是为了简化和美化代码,减少代码重复和代码混乱的情况,关键是为了代码的可阅读性,和后期维护,如果乱七八糟的话,那可能自己写的代码过段时间连自己都看不懂了,更别说是换个人看了。所以现在做项目很注重这两点,尽自己所能的做到,不过有时候还是会遇到一些很蛋疼的技术问题,这可能是因为本人的技术太菜吧,经验和知识储备太少吧,继续努力学习,争取早日成为大神的一员!
  • 832d1f8c169b:有点道理,不过这标题起得有点SB,加班太多(有可能)是你代码写得差,还行“是”就一杆子打翻一群了哈,所以骂骂作者SB一点不为过。
    加班在国内是正常的事情。你代码写得很牛B?一点BUG没有?“哦?这么快就搞完了啊?赶紧下一个任务“。。
  • David_Cap:有点笼统,可以来一个例子。
    不过方法我赞同。
  • ichengzi:这个要求经验。没有经验,谁知道这个会出这样的bug。
    有的代码不写出来,是根本发现不了bug的。
    ----------------------------------------
    当然,写代码的第一步是理清需求,大家不都是这个干的嘛。
  • a010e53cdeec:不这么认为。
  • kkkore:主动加班的朋友,抱紧我。
    当然如楼主所言,不断进行总结,注意以往错误,提高工作效率,提升自身能力,是非常重要的事~ :+1:
  • 3b31b6bbdd30:不敢苟同,java项目突然变成PHP项目。一个人三个月做完。这也怪我代码写的烂咯。这锅我不背。
  • 碎念枫子:哈哈哈 你同样写一篇标题:你的员工加班太多是因为你的管理能力烂,我也觉得你可以说的很有道理。 结论怎么说都对,但是方法还是可以学习的
  • 往事一块六毛八:我们老板接外包直播两个月,你说代码能写多好
  • 徐绍殷:学习了,准备毕业,以后要努力写出工业级代码 :smiley:
  • 点柈:不过有时候,加班是因为需求都是在下班的时候提出来。。。。。。比如现在的我
  • 布客飞龙:光代码写得好是不够的,还要学会合理怠工,延长必要劳动时间。现在觉得马哲和毛概真是太有用了。
  • faf8133706fc:理论上 理论上,现实太骨感啊兄弟,当然我们完全可以这样要求自己没毛病
  • bycall:很多时候,都是前人挖坑,后人埋坟
  • 嘿嘿_小于同学:不错,受教了!
  • 匡风含情:错误观点,误人误已。何时程序员也喜欢搞这种以偏概全的想法。
  • 3a1c014415e5:果然,猝死的程序员都是因为代码写的太烂
  • 天口三水羊:标题就是欠骂 内容懒得看 什么玩意
  • 木条加水:一般吧。
  • 96db8da4796a:在公司足够好的情况下, 你说的对,但是很多公司 由于人员流动快, 产品迭代快,等不确定因素,这个就得另外说啦
  • 黑夜躲墙角:完美主义
  • Link913:搞得你写完了就不加班似得?标题未免说的太不靠谱了些
  • d7fad868029f:算一点点总结,鼓励支持。
  • 冰三尺:写出好的代码除了要看个人能力之外,也需要有时间思考如何设计代码。可是产品那边无休止的提需求,完全没有工作流程,想起什么就加什么需求。连需求文档都没有,只是嘴上说说,完不成任务还要扣你工资。在这个时候,还管得了那么多,烂就烂吧。按照我的性子,本来我想写好点,我还特意写烂点。
  • 任怂:大家不要纠结标题好吗?标题只是为了吸引眼球,文章想说的意思是写代码前多做规划,注重规范。虽说作者是个标题党。 :yum:
  • HoyaWhite:一本正经的胡说八道.... :smirk:
  • 超级无敌赛亚小能人:作者应该是想说关于代码质量的问题,不过这个标题起的有点大了。
    加班除了自己代码写的不好,还有很多是项目工期紧人手不足,人员协调不好,或者突发状况。而且很多公司都有制度性加班,在大公司里这很常见。
  • 可乐乐过了秋天:一门心思写代码的程序员就是个工具
  • 小lola:卖时间
  • 4e1106bf7e9f:不断总结自己踩过的坑,反省,好的编码状态不是你改进了多少问题,而是能提前预知会出现的问题,并将其扼杀在萌芽中。
  • 拘谨的小人:作为一名程序员,我渴望我加入的应该要是一支“30%的时间在写代码,而70%的时间在喝着咖啡讨论着如何将产品做好”的团队。我觉得软件工作应该成为一项技术和艺术融合的高智力活动,我们的项目经理应该是一个高度理解质量、范围和进度客观规律的明白人,“高效工作,快乐生活”才应该是我们的座右铭。

    文/敏捷力(簡書作者)
    原文鏈接:http://www.jianshu.com/p/61163bc6f772
    著作權歸作者所有,轉載請聯繫作者獲得授權,並標註“簡書作者”。

    第一段 深度击中 应该是每个程序员
    但是 但是 我要给你说说我们的产品是个什么·样子
    eg. 商品销量统计 没文档 直接画个 原型 说这一列 要销售金额 ok sum一个
    测试a以我的经验要 -退货金额
    产品 改改吧 ok
    运营 这个要销售金额 退货金额 分开列
    产品 改改吧
    我就直接怒了 上周去掉 这周加上 你逗我呢 改来改去浪费时间 你们确定好了再给我说吧
    我知道自己处理的可能不妥当 但如果你碰到了 会不会揍他 要不是我满了18岁 指定键盘盖他
    向钱冲啊:@拘谨的小人 我也会帮你盖他的
  • luax:说的是客观事实,程序员的普遍水平又是一回事。此题无解。
  • 臭牛牛:装B贴,鉴定完毕!!!
  • link也不过是个傻瓜:自从不做了程序员以后,看到这类的文章心里就舒服多了...... 加油啊,我还是很敬仰你们的 :relaxed:
  • 新海岸:理想状态吧 人是复杂的动物
  • 7P_LonG:可以的,自省大于监督。
  • 364b0ff01b8f:你还比较单纯。再工作几年看看.....
  • Miles_miles:有意思
  • 郑明明:就玩
  • 郑明明:该学习的时候就学习,不该学习的时候就不学习
  • 郑明明:要高效工作,做一个会享受的人
  • 浮勒各夸:学到了,我还是学生慢慢培养好习惯
  • 郑明明:对啊
  • lltobe:跟我们现在的开发模式很像,之前不能理解为什么这么繁琐,看了此篇后觉得很有道理
  • 潇潇荷的荷塘:昨天还在3ms上看到了这篇文章,大神。
  • hauibojek:给程序员的几点建议写的很好👍
  • 勤劳的小盛:现在还有几个程序员是认真写代码的?都是从网上CTRL+C和CTRL+V,然后改改就了事了。
    向钱冲啊:@精益阅读 你能复制粘贴一个项目也真流弊呀。
    赵家小妹: @精益阅读 总是有认真的人😑💻
  • 王果果侯:扯!!!
  • 恋猫月亮:有时候加班也是因为团队需要协助,实际工作中,一个人再优秀,不如一个和谐的团队来的好。
  • 18ce9f6925e6:不断给人挖坑 不断替人埋坑
  • 溪石iOS:不能赞同太多,领导不会故意整你
  • 一蓑烟雨啊:我就是那帮搞质量的……之一:sob::mask::mask:
  • 一蓑烟雨啊:受教了:+1:多谢多谢
  • captainary:说的倒有道理,只是标题不敢苟同 。
    实际上就像前面那位仁兄说的,你压根不知道有些公司是怎么压榨你的。
    而大公司,进去本身就要有实力,代码并不会瞎到那里去
    死命加班的往往是那些压榨人的公司,项目开发流程异常混乱,工作量异常之大,此时谈什么代码之美都是瞎的
    向钱冲啊:@四叶花 看到这里,终于看到三观比较正的。重点还是看公司。。。没有人性化的公司,什么代码之美,代码质量都是瞎的。完全就是瞎搞,瞎忙
  • 在路上的JavaCoder尹骑:熟悉软件的周期很重要
  • xiaolei123:你有考虑过小公司的工作量吗??????
  • dongjunkun:恶性循环,想要改变现状,代码重构才是关键,架构虽重要,但再好的架构也会被后期的需求,修改变得千疮百孔,不断的重构也可以保证代码不变质,两者相辅相成吧,相互促进
    dongjunkun: @py5504 我之前公司也是,公司的流程上也有很大问题,抱怨太多也没用,把自己做好吧,其他的能争取就争取一下,实在不行可以尝试换个环境
    py5504:@dongjunkun 不但但简单的代码重构, 而已有很多不合理的需求也要重新梳理, 创业公司,基本算是领导说什么就什么了 ,根本就没有考虑系统的兼容性 和合理性
  • 衡剑:对这点我很有发言权,对于一个互联网公司来说,产品迭代非常迅速。需求与功能都在不停变化,这给技术员们的工作任务已经非常大了。而且互联网公司员工流动大,大部分程序员修改的BUG并非自己造成的,而是由很多以前的老员工造成的,所以整体来说是这个行业和团队让他们不得不持续加班。另外,告诉你一个秘密:你如果代码写的好,你也不会轻松,因为你会有更多的需求或功能要开发,有更多的BUG要改!当然,你的薪资也会增加。这都不可能成为你能不加班的资本~~
    py5504:@衡剑 这点我比较赞同, 能力越强,所负责的功能就越多,加班是自然的
  • xwp:good job
  • 10467f277107:自己能做到的这方面说得很好,想好了再写代码。但是加班太多的原因太多了,你遇到过没有项目经理或者项目经理能力不够,需求做的不好频繁变更需求,这样的公司吗? 这样的公司有很多!
  • d4303076835d:标题有错别字,强迫症不能忍呀,写得烂
  • 38faf480efd2:在白纸上写好目前需要的类库等内容这是一个点,也要保证系统有弹性,耦合度低才能更好的应对新的需求。你是C++开发吗?
  • PowerQuery:不能赞同更多。加班无外乎三个因素:工作太多做不完;能力不行搞不定;态度有问题故意拖延。根据我的观察,大多数加班都是后面两种因素导致的。
    PowerQuery:@SilvesterChiao 哈哈哈,不好意思不好意思,漏了被队友坑之后被加班这个场景了。
    1016f8abb9a8: @PowerQuery 也不赞同你,你这三条没有坑队友都,说明你没有坑队友?
  • 孤独之旅:说起来容易做起来难
  • 夏妍妍:遵命,主子大人
  • 01a109586104:收藏
  • e72b8f0365d7:感觉很牛逼。很抱歉我听不懂,但是我觉得你很厉害
    牧馬放飏:恩 厉害了
    4ea6a4acda19:@呼呼卡 我觉得你的回复也很厉害呀
  • iOS_渔翁:做好架构才是王道啊,要不然后期该需求改到自己想死
    1acbae95cfe6:@渔翁可可 +++
    严重加
    4ea6a4acda19:@渔翁可可 架构师也需要从写代码搞起啊
  • 再美也只是回忆:加不加班跟自己代码有关系,也跟整个团队有关系。
    再美也只是回忆:@敏捷力 我们大多数人都在写烂代码,希望我们都可以共同成长
    4ea6a4acda19:@再美也只是回忆 刚刚加完三个星期班的我,现在抽出点时间跟你回复了这句话,哎的确烂
    六更读书:恩,这个主要是从开发人员角度看如何改善代码,加班的不可避免的,但是不要让自己每年都在重复自己。//@再美也只是回忆
  • 清晨傍晚单着:太片面了,加班主要是工期紧,比如今天晚上出设计,明天上线。这跟代码质量有毛关系。
    前端老夫子:我表示,我们一直工期紧。。从来没轻松过
    六更读书:@清晨傍晚单着 是的,但是“这不是一篇证明谁导致程序员加班太多的论证文”,主要讲的是有些方法可以改善代码质量,bug越来越少。标题只是个引子。
  • github加星点进来:老板才不管那么多。2周或3周出项目...不要求项目完美。
  • wuliMark:说的有道理
  • 道道明明白白:好代码 可能开始费一些时间,但是后期的修改或者变更会变得容易的多。
    一嘉一:@道道明明白白 同意这个观点
  • snowdream:难道华为那帮人加班也是因为你所说的代码烂???
    96db8da4796a:@snowdream 谷歌 Android 官方文档 有的代码不加 if 做严谨性判断,我们平时都会加 if 判断, 那么.谷歌的工程师水平如何?比你不完爆你? 但是这个不谨慎也是谷歌的工程师写的,所以啊, 华为的人这么牛么?写出的代码一定很吊?
    snowdream:@心灵咖啡屋 那本文也是标题党而已。
    电饭煲炖海带:@snowdream 原因可能很多,但是加班太多,应该不是什么好事儿
  • 陈钢镚学财:好文,受教了。
  • p了个f:是啊
  • Nenezsnp:我开始了
  • af8dff7911ea:加班是因为代码写的太烂,然后加班又很容易写出一堆烂代码。如此循环。
    af8dff7911ea: @darcyCHs 哈哈,应该如此
    darcyCHs:@无畏的coder 死循环 是时候break 了! :sunglasses:
    鲁克巴克诗:@无畏的coder 有道理
  • ios肖:这个可以说是一个好的工作总结
  • 543257d46d5f:对又不对
    1acbae95cfe6:@DoubleShawn
    对头。。。。
    今天做了8小时,已经完成了别人10个小时完成的工作。结果还要加班,这个绝对不是代码写太烂了。。。。

    每天稳定的产出有效代码在100行以上的我都认为是很nb的程序员了。。。算起来,好像敲代码的时间只需要10分钟,剩下的全都是思考、理解、重构再造。。。。
    DoubleShawn:@nicolesky 是的,一部分是对的。。但是分析的太过笼统了。。就这三言两语,就把全部程序员加班都涵盖了,未免些许牵强。。创业公司的工作量大,大公司前人挖的坑,自己不熟的领域,产品那边的重复修改,短时间的产品的迭代等等。一概而论,不能赞成。

本文标题:你加班太多是因为你的代码写的烂

本文链接:https://www.haomeiwen.com/subject/mnzvpttx.html