在软件和互联网行业从业20多年,发现很多的程序员不知道怎么提升效率,团队有团队开发协作的效率,但单兵来讲,也有个效率问题。本文就单单讲一下开发如果提升自身效率的问题,怎么样从一个搬砖的码农走向有创造能力的码皇。
代码阅读能力不强
很多情况下,我们需要持续开发一个项目,就是说,很少遇到完全新开的项目,即使全新的项目,也非常有可能需要对接老的系统,所以,快速理解现有系统变动至关重要。快速理解现有的系统是有方式方法的,不是靠蛮力的。
要快速看懂代码,需要先从业务逻辑下手。我看到很多程序员接收代码,直接进入看代码状态,典型的无目标作战模式。代码是为业务逻辑服务的,连业务逻辑都没有搞清楚,代码内部逻辑就搞清楚啦?最好的理解业务代码的方式是自己亲自使用软件,和产品测试沟通,当然人家也不会有时间为你讲课,所以要先靠自己。当有些困惑的地方,可以就单点去询问同事,而不是只懂占用人家时间,人家忙就抱怨团队协作不好。对业务的理解能力的培养也是一个长期渐进的过程,需要做到细致,比如多看看同类软件,平时可以多和产品运营同学沟通,所以不要把技术能力看狭窄了,只是撸代码的能力。
基础知识能力不强,复杂的软件一般会用的很多技术框架,如基础能力强,则快速看懂和理解新接触的框架,找到正确的网上资料。现在网上资料非常多,基础能力不行,导致很多人遇到新的东西,找到很多资料,无从下手。也有一些人不懂得怎么搜索,告诉我网上没有资料,然后我花一分钟时间找到几个合适的,发给他看,能看懂的都算是优秀的。为啥基础能力对一个开发至关重要,请您参看”基础能力决定了程序员发展空间”。
日志和开发工具的运用能力也会影响代码的阅读能力,我之前发现有些程序员不懂得运用关键词全项目查找,或者函数引用的查找,显然没有把自己的”枪”运用熟练。还有查看代码使用DEBUG工具,原始的逐步执行,单线程项目还会,多线程项目怎么办呀。深入掌握日志系统,学会使用日志批量查看关键点,是优秀开发必须具备的能力。当然日志系统的功夫不是几天就能练成的,需要持续的使用和思考,因为怎么写日志,什么点写日志,都是需要经验和思考的,不能乱打,太多了,海量日志怎么看,少了,线索太少。
很多人抱怨没有文档,代码质量不好,其实90%以上的代码都存在问题,前些时间,一些刚刚入职BAT的开发抱怨代码质量不好,代码像狗屎,但很多情况下,自己写的代码其实是狗屎不如。真正做到规范化是很难的,需要团队个人能力强,团队协作管理能力强,具体请您参看”敏捷开发怎么真正实现落地”。所以,还是要面对现实,把狗屎理清楚了。要做到高效的梳理清楚代码,必须要懂得怎么先结构后细节,先关联部位,后内部细节。比如看书,新手都是从前往后,一页一页看,高手是跳跃式看书,更加有目标性和针对性的看书。看代码的时候需要做些总结记录,最好能够自己画成流程图,帮助全局把握代码结构,当然画图能力也是程序员一个重要能力之一,具体论述,请您参看”为啥开发的文档能力是核心竞争力之一”。
开发时候需要懂得沟通和事前规划
多数程序员是一种直线思维,就是接收完任务,直接就杀入进去编码,不做些流程图帮助自己思考和理清思路,导致进入以后,到后期才逐步发现问题。这就和一般人下棋,可能只想一步或者几步,高手下棋可能会想几十步,而且都可以做到不看棋盘。这种能力是逐步培训出来的,如果有技术领导指导会更有效果。我常常建议后台人员在了解完成产品需求后,把数据库设计,关键表,关键字段,表的关系,还有重要的流程做个先期设计,做个图表给我看看,我可以帮助他来分析那些地方可能遇到问题,但很少有人能够做到这点,都是说自己太忙,又不知道怎么做,没有时间学习。毕竟创业公司,一个萝卜一个坑,有时候老板项目催得紧,也就放弃坚持了。下面这个图的故事每天都在很多开发身上上演。
如果规划设计的好,开发时候少走弯路,否则自己都把自己绕死了,如下图:
很多人你让他学习些东西,他总说没有时间,但下班了总是很快就走了。
开发的时候要多思考,能够去辩证的分析需求,发现产品设计中的不合理的地方,并且及时跟产品进行沟通和确认,起到一个双重验证的效果,当然能够做到这点,是需要程序员有一定产品思维的,不要只知道执行,不懂得思考。
学会管理自己时间,变成多任务操作系统
很多程序员是直线工作方式,不懂得在多个任务中切换,不懂得分清主次。很多时候,开发可能会接收多项任务,需要懂得在这些任务中切换。要优先做等级高的需求,但有时候团队协作可能会遇到等待,这时候可以去做一些其它任务,把空闲时间利用起来。即使下班了,也可以在路上思考一下问题,本人喜欢健身,平时跑步或者健身,常常会有突发灵感的情况。之前有些同事问我,怎么能写这么多深度文章呀,我就是利用了自己的很多空余时间思考,比如做火车时间,锻炼时间等等,平时就会收集素材,不会等要写的时候再去找,所以写东西效率也高了,平时工作当中遇到的心得,也会记录下来。比如,开完技术讨论会,发现有些地方存在问题,或者有亮点,就记录下来。有的人分享的东西不错,就是趁热看看,收集下来,其实做公众号写文章,也是对自己工作的积累和总结,否则后面都忘记了。
学习总结要自己养成习惯,不要让人打着走,我发现很多人缺乏目标感。下面一个文章讲了一个阿里员工哀叹,加班磨洋工,加班不知道干啥。
这种低效率加班当然是和团队管理有很大关系,因为很多事情的完成需要多个团队协作,你这个地方准备好了,他那边调试,你要等着,而且牵扯面越多,这种等待耗时越多。这种情况下,为啥不能准备些其它学习的事情呢,典型的缺乏目标类型,打一棒子走一步。很多人抱怨加班厉害,没有时间学习,很多时候是因为我们不会去利用分散时间,不会知道多任务切换,不知道科学安排自己的时间,就和上面抱怨的阿里员工一样。
记得,2001年入职世界知名的物流公司KN,入职2个星期,我就基本掌握了他们的系统和代码,当然刚毕业我阅读了TCP/IP的源码,代码阅读能力也锻炼出来了。老板也没有给我定任务,所以,二个星期以后,我说我看懂他们搞了2年的代码,他们都不相信。其实这种能力也是长期锻炼出来的,本科不是计算机专业,什么东西都靠自学,时间长了,就学会安排时间和高效的阅读代码了。
总结
工作的高效率不是天生,是自己不断磨练出来的,树立自己的目标,不要太懒,不要找借口,时间长了,自然就发现自己进步了。如果觉得好,请您关注公众号,持续分享干货,帮我转发哟。