程序猿的执业修养(四)——全力以赴,做到最好
上回我们说到责任心,趁热打铁,我们说说执行力。一个人只对自己尚且无法实现的愿望着急感叹是没有用的,要达到目的、出人头地,必须付出行动、百般努力!只要肯干,就可以超越他人一步,从平凡中脱颖而出。然而要做到这些也并非人人皆可为之,有的人只会躲在安全港湾,不用承受太多的挫折,做一天和尚撞一天钟的过着平凡的生活。猴子们,你此时此刻在想什么呢?
懂得付出,学会吃苦
在上回当中,我们说过要适当的做一些分外之事,有很多朋友也说出了自己的看法。其实,分外之事并不是建议大家去抢别人的饭碗,我们推崇的是在帮助别人的同时获得双赢的效果。也有的朋友说,我做完自己的事情就可以了,至于额外的事情,做不做对我来说有多大影响呢?
好吧,来个demo吧!相信有不少朋友都爬过山吧!爬山至少有两种方法,一种是按照修建好的山路顺道而行,一种是开野路。走建好的山道,就如我们本本分分的完成工作。就算很快走到了山顶,我们也是在走别人已经设定好的人生,就如我们每天只是听命于上司的安排而已。开野路虽然有可能会多耗费一些体力,也可能会迟一点抵达山顶,但在开辟新径的同时也享受到了更多的乐趣(请注意,在实际项目执行的时候,时间是个关键因素,要根据情况而权衡)。
帮同事接水、倒垃圾、签收个快递啥的,也算是分外之事,这些看似平常的小事却可以活跃气氛、融洽两人之间的感情,这就是所谓的意外的收获。
懂得了付出还不够,我们还要学会吃苦。“天将降大任于斯人也,必先苦其心志、劳其筋骨……”这些句子对我们来说已经是倒背如流了,然而有几个人在现实生活中有过真真切切的体会?我们都希望拥有更加灿烂炫目的人生,那就得从此时此刻开始做好准备,做好接受比别人更多的挑战、吃更多苦头的准备!
尽心尽力,做到最好
成功是什么?有的人会说,成功是挣到很多钱!有的人会说,成功是能买得起房!有的人说,成功是有名气!有的人说成功是自我价值的实现,无论我们是否能够挣到很多钱、是否能买得起房、是否有名气,关键在于我们是否能够被认可。可换个角度来说,成功或者失败还是一种习惯。你习惯了把经手的每一件事情做到最好、尽心尽力,就意味着你拥有了走向成功的习惯;如果你总是平凡的、甚至马马虎虎的对待自己的工作,那就意味着失败会陪伴着你。
程序猿的常规工作是写代码,之所以很多时候,我们看到别人写的代码就能感知到该猴子的人品,就是因为每个程序猿都有自己的习惯,也就是编码风格。比如在逻辑较为复杂的地方没有清晰的注释,比如在面向对象的设计中总是夹杂着各种违背面向对象的代码,比如代码没有统一的格式化显得脏乱差,甚至是没有自己的编码风格。话说个人卫生要做好,代码卫生同样也很重要!
不了解各位是否见识过这样的代码:
1 switch (obj.Id) 2 { 3 case 1: 4 break; 5 6 case 2: 7 break; 8 9 // ... 10 11 case 98: 12 break; 13 14 case 99: 15 break; 16 }
不论您是否见识过,反正我是见识过!还好,该朋友没有使用if来处理这个问题,用了switch已经是人类很大的进步了(虽然实质相同)!但是如果我们能够使用面向对象编程的多态等概念来重构一下,就不用写这么丑这么长这么不直观的代码了不是么?
如果说如上代码还不能说明问题的话,那么我们来看看这个(这是个截图):
这个截图中存在多个问题:
- 由于架构的不合理,随着代码维护量的增加,单页代码量也在逐年累积,越来越长;
- 由于“bool bIsReadOnly = false;”的存在,使得“bIsReadOnly = false;”这行没有什么意义;
- “LoginHelper.IsReadOnlyRole()”本身就是返回Boolean类型的,在这里又if...else了一次,有意义吗?
这个方法的代码重构之后:
1 #region IOrderInfoReadOnly 成员 2 3 public bool OpenOrderReadOnly() 4 { 5 return LoginHelper.IsReadOnlyRole(); 6 } 7 8 #endregion
这个不只是代码量的精简,业务逻辑也更加清晰!这就是细节重构!把细节做到最好,那么整体看起来也应该不错!
我们知道,程序猿最好怕的并不是bug,而是多变的需求,因为这会打乱他们的思路。需求多变的主要原因就是沟通不到位。如果我们的代码不做到尽善尽美,该注释的时候不注释,该简单的时候搞复杂,该复杂的时候搞简单,这在团队开发过程中也会带来一堆一堆的沟通问题。我们的目的不是让同伴们去研究自己的代码,而是共同完成任务!
派生话题:关于加班
在本文尚未发布之时,一位朋友跟我谈起加班的事情,因为经常加班,他很累。其实,加班并不能说明你的工作是尽心尽力、全力以赴的,也更加不能说明你做的很好。“加班”是个什么概念呢?那意味着你每天的工作没有按时完成,而导致需要额外的时间去亡羊补牢。
诚然,由于需求突变、联调测试、升级维护等等造成的硬性加班是必须的,这个我们不排斥。下班后怕堵车所以晚走一会儿,或者想看会儿书什么的造成的晚点儿离开不算是加班范畴。由于每日任务超出预估,或者当天有其他事情造成的加班,很可能是沟通协调造成的,属于自身能力不足(不管是哪个方面的能力),这样的我们定义为“不合理加班”。
我个人带队的原则就是,让大家在白天工作时间把事情干完,谢绝加班!我曾经考虑过,如果我们的项目做大了,将来有了一定的规模,谁总是喜欢不合理的加班,那就要扣钱了!首先,工作量的控制在于沟通,不论是我带队还是我跟我的上司说,如果一件事情我3天可以完成,我一定会说成5天,以防不测。我们要不断的去调整和锻炼自己评估自身能力的能力!
如果你5天才能做完的事情非得说3天就可以,一方面是自己给自己挖坑,另方面就是自己对自己能力评估的不足!如果你提前完成了,剩余的时间内可以申请做点儿别的,也可以对自己的代码多测试、尝试重构。分外之事一定是别人的事情吗?不是的,在你完成正确的业务逻辑之后,再做做测试、做做代码重构,这也是分外之事!表面上看,公司不会因为你代码重构的比较好给你奖励多点儿钱(得分)。
偶尔加班可以理解,但经常性的不合理加班,就要自己好好反省一下,看看是哪方面没有沟通好,还是自己对自己过于自信了。总而言之,我不鼓励大家加班,长期加班给人带来的身心压力是非常巨大的!
总结
总是本着“差不多”就行了的观念,那么久而久之,你就差多了!要做我们就要认真的去做,应付了事、认为没有必要十全十美、不注重细节,那么我们离失败就不远了!
细节决定命运,认真做好工作中的每一个细节,全力以赴,在自己的能力范围之内做到最好,才能握住成功之手!