“实效”实在是一个非常完美的词,本打算在加上一个批注,叫“如何成为一个高效率的程序员”,仔细想了想,高效率似乎和能出色完成工作还是有很大差距。读完这章,感慨颇深,好比只讲情怀不谈实际的人与喷子只是一念之差,一个好的程序员是该既保持高效,也要为整个项目负责的。
提供解决方案,而不是找借口
在所有弱点中,最大的弱点就是害怕暴露弱点。——J.B.Bossuet.Politics
如果你接受了一个任务,那就应切实负起责任。无论因为什么原因(所有人都会犯错或者叫失误),都应该诚实地承认,并快速给出弥补方案;而不是抱怨你的同事,或者其他各种各样的问题,他们可能确实在其中扮演了不好的角色,但是你可以提前做出解决方案,而不是等到最后才开始抱怨。
抱怨除了惹得别个和你一样生气,啥都没用。
- 如果你觉得你不需要为这个事情负责,或者超出了你的能力,那么无须为这些事情负责。及时提出来,让你的团队能有充足时间进行调整。
- 如果是你的责任,那么想想还可以如何力缆狂澜,你还需要哪些帮助,下一步如何进行。
想起去年刚毕业工作,一个人负责APP的开发和公司所有前端的东西,时不时处理下运营反馈的问题;经常是整个一天很难集中精力开发APP。一次开会,向老板反馈事情太杂效率太低,希望能把部分工作交给xxx后,老板很通情地让我专心开发APP。
每个人都很聪明,你的难处别人自然理解;而借口,谁也看得明白。
不要成为第一个弄脏代码的人
“破窗理论”在代码中似乎更加明显,给你一份格式混乱、变量随意声明、到处都是全局变量、毫无设计的代码时,你会咋办。好吧,我接手前公司广告系统时,我是这么干的
反正都已经这么乱了,要是动了代码出bug了调都没法调,算了,算了,不管了,反正不是我写的。有什么新的需求,就看情况怎么填塞进去,随便写写就好。
坚持了段时间,最后还是放弃了,老老实实花时间进行重构。糟糕的代码才真的会让你花费很多时间。
但是如果最开始,代码就十分漂亮——编写整洁、设计良好、并且很优雅,你就很可能会格外注意不去把它弄脏,而且你也不会想成为第一个弄脏代码的人。
所以,为了提高自己以及团队的效率:
- 不要成为第一个弄脏代码的人(其他人自然也不会)
- 不要容忍不好的代码,及时重构(珍爱生命)
仰望星空
有时候,你也许确切地知道需要做什么,以及怎么去做。但是请求许可去处理整个事情,你会遇到拖延和漠然,需要成立一个讨论组,然后大家开会发表意见,每个人都会去护卫自己的资源,事情越来越复杂。有个专门的名字形容这种情形“启动杂役”。
这个时候,你需要设计出你可以合理要求的东西,好好开发它,一旦完成,就拿给大家看,让他们大吃一惊,然后说:“要是我们增加……可能就会更好”。那个时候,他们会主动找到你开始合作。
让人们瞥见未来,你就能让他们聚集在你周围
同时,你还需要保持敏感,多观察新的趋势、周围的环境、新技术等等,温水煮青蛙就完蛋了!
我航校歌《仰望星空》确是真理~
敏捷开发,不要过度修饰
欲求更好,常把好事变糟——李尔王
一个无视用户需求,一味地增加新疼醒、一次又一次润饰代码的程序员,不是一个有职业素养的程序员。
所有的功能以及代码都是以产品为中心,而不是比谁写的代码炫酷。
非常抱歉,本月在开发微信公众号时,我花了大量时间去写看起来很酷的动画、用尽可能新的技术,但是三天的开发期限一到,连基本功能都是还有问题的——以此为戒
不要因为过度修饰和过于求精而毁损完好的程序,继续前进,让你的代码凭自己的质量站一会,它也许不完美,但不用担心:它不可能完美。
- 尽快完成基本功能,敏捷开发,快速迭代
- 预留充足的时间,而不是为了赶上最后期限而削减基本功能
持续学习,并保持多元化
既然选择了程序员这一行业,那就学会享受活到老学到老。
程序员是一个人神奇的职业,技术变化很快,你需要及时更上或者创造新技术,同时你还需要眼观六路耳听八方,要知道互联网的趋势,也要关注各种新科技,哦,可能还要会运营、设计什么的。。。
当然,代码写不好其他都是浮云。
这里有一些学习建议:
- 每年至少学习一种语言:不同语言以不同方式解决相同的问题。通过学习若干不同的方法,可以帮你拓宽思维,避免墨守成规。
- 每个季度阅读一本技术书籍: 读书时让你升华为高手的捷径,在你技术掌握后,阅读一些与项目无关的书籍,扩宽眼界。
- 也要阅读非技术书籍:计算机是由人——你在设法满足其需要的人——使用的,不要忘了人这一边。每一次去书店,都会很舒服,那是我最好的放松。
- 听一听讲座或者沙龙:看一看那些高手在做什么(并非他们说的就是对的或者合适,但是你要自己去发现合适或者不合适的才知道自己如何选择),去认识不同的人,程序员也要有社交。
程序员其实是很容易交流的
网上有很多调侃程序员的段子,大致都是说程序员木讷之类的,程序员要是真的难以交流,那些段子手哪能这么(好像)熟悉程序员的生活……
程序员大多专注,老实,所以大家印象还是比较好,这应该算是程序员的优势了
但是,表达能力可能却是稍差一些。我见过一个程序员,做工作汇报时,说了两句话,结束了,不知道老板有没有反应过来。。。
- 学会理解你的听众的水平
你的东西要让他们听懂,而不是自己一个人在那自言自语。其实没有什么特定要求,努力让自己多去说,不用怕说错,说得多了,自然就好了。 - 及时回复
如果你看到了邮件、微信、QQ的消息,希望能及时回复,即使内容只是“我稍后回复你”。你的时间很宝贵,别人的时间一样很宝贵, 随时通知别人,会让他们更容易原谅你偶然的疏忽,并让他们觉得你没有忘记他们。
学会感恩,而对于某些不会尊重别人时间的人,你可以考虑移除了。
做个开心的程序员
我相信每一个优秀的程序员都是追求完美的极客,尝试新的东西很好、深挖技术也对,只是时间有限,有了基础版本,才有可能不断去完善细节满足你的情怀。淘宝非一日之功,除了你技术,你还要对产品负责,学会敏捷快发。平时要保持学习的习惯,多看看新的东西,放宽眼界,程序员不要那么死板。
最后推荐一个github上Java程序员Shekhar Gulati的一个项目,《52-technologies-in-2016》,作者每周挑战并学习实践一项新技术,在写这篇文章的时候,作者已经完成了37个任务,你也可以尝试一下。
程序员的时间很宝贵,每个人的时间都很宝贵,节约生命,注重实效。