程序员加班太多,是因为你的代码写得烂

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

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

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

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

程序员加班太多,是因为你的代码写得烂

程序员加班太多,是因为你的代码写得烂

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

④ 现在开始,刻意练习

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

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

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

…………………………………………………………………………………………………………

感觉在打自己的脸,

毕竟前几天才写了加班的猝死的文章,

然后今天就说加班是怪自己…………

最后,

做了一个决定,公众号转型,(就当我怂了吧)

头条将不会再放技术性内容,将移到二条。

头条将更关注于程序员的生活。

需要学习型内容的请多关注二条内容,

不要光看头条哦,二条有惊喜。

未经允许不得转载:杨永博客 » 程序员加班太多,是因为你的代码写得烂

赞 (1)

评论 31

  • 昵称 (必填)
  • 邮箱(必填)
  • 网址(选填)
  1. 新用户525103这个真心不好说吧,我怎么会告诉你我数学考过64分呐?你以为及格了是不是?那更不应该告诉你,满分是150.回复
  2. 新用户727066据点连个人都没有,换成我朝阳区城管据点,你敢门口停个自行车都出来一帮人给你抬到卡车上去。明明只要下来几个人干掉司机就好了的事儿回复
  3. 新用户298728没毛病,艺术源自生活!回复
  4. 新用户177489对,其实最左爽了,裤子很宽松回复
  5. 新用户082597想一想,为什么公民权利被政府剥夺?为什么官员不敢公布财产?为什么不让讲文革的十年浩劫?宪法为什么说信仰自由却由国家暴力推行“主义”信仰?为什么现在的大大小小的官员贪腐数亿?这是犯罪集团在统治的国家!回复
  6. 新用户574113好吧,PK是初中电脑课永恒的回忆,英语是一生永恒的痛苦回复
  7. 新用户102693好猖狂的邪教徒!(︶︿︶)回复
  8. 新用户172973我没猜错的话大概活蛊人就是攀雅的爸爸回复
  9. 新用户979727这几天脚盆总是强烈抗议呀,这是天朝曾经的招数最近不用了,因为我们知道然并卵了回复
  10. 新用户844871大概可以增添9000+條留言喔 回复
  11. 新用户599777一叨二叨。你们天天不准时更新你们老板造吗?回复
  12. 新用户397288以前的网友真的太没素质了。。。回复
  13. minecraftHi, I check your new stuff regularly. Your humoristic style is witty, keep doing what you're doing!回复
  14. minecraftSweet blog! I found it while searching on Yahoo News. Do you have any suggestions on how to get listed in Yahoo News? I've been trying for a while but I never seem to get there! Appreciate it回复
  15. minecraftHowdy! Someone in my Facebook group shared this website with us so I came to take a look. I'm definitely enjoying the information. I'm bookmarking and will be tweeting this to my followers! Outstanding blog and outstanding design and style.回复
  16. minecraft free download 2018Hi mates, fastidious piece of writing and nice urging commented at this place, I am really enjoying by these.回复
  17. minecraft free download 2018I believe what you published made a lot of sense. But, what about this? what if you were to create a killer headline? I ain't suggesting your content isn't good., but what if you added a title that makes people want more? I mean 程序员加班太多,是因为你的代码写得烂-杨永博客 is kinda vanilla. You might glance at Yahoo's home page and see how they create post headlines to grab people to click. You might try adding a video or a pic or two to get readers excited about what you've got to say. In my opinion, it would bring your website a little bit more interesting.回复
  18. minecraft free download 2018It's remarkable to pay a quick visit this site and reading the views of all mates concerning this piece of writing, while I am also eager of getting know-how.回复
  19. minecraft free download 2018Attractive component to content. I just stumbled upon your blog and in accession capital to assert that I get actually enjoyed account your weblog posts. Any way I'll be subscribing to your feeds and even I fulfillment you access constantly quickly.回复
  20. minecraft free download 2018Great post. I was checking constantly this blog and I'm impressed! Very helpful info specially the last part 🙂 I care for such info a lot. I was seeking this particular info for a long time. Thank you and good luck.回复
  21. minecraft free download 2018Hmm it seems like your website ate my first comment (it was super long) so I guess I'll just sum it up what I had written and say, I'm thoroughly enjoying your blog. I too am an aspiring blog writer but I'm still new to the whole thing. Do you have any recommendations for novice blog writers? I'd certainly appreciate it.回复
  22. minecraft free download 2018An interesting discussion is definitely worth comment. I do believe that you ought to write more on this issue, it may not be a taboo subject but usually people do not talk about these issues. To the next! All the best!!回复
  23. minecraft secret free downloadHi there to all, the contents present at this web page are truly amazing for people experience, well, keep up the good work fellows.回复
  24. Health Benefits of Coconut OilHi there, I enjoy reading all of your post. I wanted to write a little comment to support you.回复
  25. Coconut OilI quite like looking through a post that can make men and women think. Also, thank you for allowing for me to comment!回复
  26. Coconut OilBecause the admin of this site is working, no question very rapidly it will be famous, due to its feature contents.回复
  27. Coconut Oil BenefitsPretty nice post. I simply stumbled upon your blog and wanted to mention that I have really enjoyed browsing your weblog posts. In any case I'll be subscribing for your feed and I'm hoping you write once more very soon!回复
  28. Coconut Oil BenefitsI have read so many content regarding the blogger lovers except this article is genuinely a pleasant paragraph, keep it up.回复
  29. Coconut Oil BenefitsCan you tell us more about this? I'd like to find out more details.回复
  30. http://twitter.com/descargar_hqDescargar facebook Thank you, I have recently been looking for information about this subject for a long time and yours is the best I've came upon till now. However, what about the bottom line? Are you positive about the supply? Descargar facebook回复
  31. quest bars cheapHave you ever considered about including a little bit more than just your articles? I mean, what you say is valuable and all. Nevertheless imagine if you added some great visuals or video clips to give your posts more, "pop"! Your content is excellent but with pics and video clips, this blog could undeniably be one of the very best in its field. Fantastic blog!回复