优秀程序员的历练之路
昨天看了一篇帖子《“软件王”申力华——到60岁,我还想每天坚持编码》,主人公“软件王”其实并非科班出生,只是大学里接触了代码,发现这玩意儿能做的事情很多,简直让人欲罢不能,于是兴趣,从和网吧网管“斗法”开始了。
为了在代码的世界里自由驰聘,图书馆和网吧成了学业之外的“常驻地”,从Pascal,到C/C++,Windows API/COM,再到Java,只要看下去,就停不下来。05年毕业后,直接入职了大厂,17年接任了传送网的首席程序员,成为传送DU的首席committer。
这种既能写代码又能有高职的程序员,可是很多人羡慕的对象。
从“软件王”的经历里,可以看出优秀的程序员,需要兴趣来做奠基石,热爱是点燃激情的火把!
衡量程序员的优秀程度,没有固定的标准,因为岗位级别不同,工作任务不同,衡量的标准也就不一样了,软件开发有研发级别,有应用级别;软件测试有中高级,专家级别。每个级别都会有相应的技能要求。
优秀的程序员就是无论在哪个级别都做得很好,且能不断得到提升,这里面就有个持续投入,不断学习、总结、提炼的过程。
优秀的程序员,一般需要具备以下一些能力。
1、相关职业技能的熟练掌握
软件开发是一个跨度很大的技术工作,在语言方面,有C、C++、Java、Python、Ruby等等,在环境方面,又分嵌入式、桌面系统,企业级、WEB应用、移动app等等,每个方面的职业技能通常决定了一个程序员的级别,能否用好这些技能,直接关系到了程序员的职业生涯。对于优秀的程序员来说,拥有一套完整的知识体系和技术体系,才能在职业生涯中大放异彩。
2、系统的编程能力
优秀的程序员具有系统的编程能力,能写出高质量的代码,什么是高质量的代码,复杂、漂亮?这一定是外行人的观点,高质量的代码应该是“编写简单、有用可读的代码”让人读了赏心悦目,易懂,即使有比较难的地方,也有清晰的注释。
优秀的程序员,会了解所写代码实现的功能、所在场景上下文,业务流程等,做到知其然,且知其所以然。没有软件架构的思维而只会堆砌代码,将会把自己代入噩梦中。
3、缜密的逻辑思维
具有缜密的逻辑思维,能让工作更加高效。无论是编写代码,解决问题,还是沟通交流,都需要有缜密的逻辑思维。清晰地把控好工作步骤,梳理好工作流程,能避免很多重复、无用的付出。优秀的程序员,是不能让自己的时间和精力被白白浪费了。
4、解决问题的能力
解决问题的能力,就是能逢山开路,遇水搭桥。这不仅需要见过很多的场景,犯过或处理过很多的错误,同时需要不断地自我总结,提炼出一些解决问题的方法,或者是梳理出一些解决问题的流程。
5、迅速的学习能力
持续学习,是优秀程序员必备的习惯,然而,在持续学习的基础上,还要不断培养自己迅速学习的能力。信息时代,唯一不变的就是变化本身,软件技术在不断迭代,所以迅速的学习能力,是优秀程序员需要具备的重要能力。
一个人不可能深入了解每个知识点,知识的广度和深度本来就是一个矛盾体的存在,且相辅相成。先解决深度问题,在解决广度问题,因为在解决深度问题的时候,也是一个储备学习能力的过程,利于之后的高效学习。
6、准确的理解能力
准确的理解能力,即能够准确得理解上下级传达的各项信息,程序员一般不是单独作战,而是团队作战,如果没有准确的理解能力,将会大大降低工作效率。准确理解需求,才能做到准确地实现各项目标。
7、良好的沟通能力
程序员的沟通能力除了通常意义上所讲的交流,还更多的是技术层面上的沟通。沟通包括程序员团队内部的沟通,与其他团队的沟通,与Manager的沟通等等。开发需要和产品经理、客户、测试沟通,测试也需要和产品经理、开发、客户沟通,这其中的沟通需要从专业知识角度考虑,准确地使用专业术语,沟通内容要有理有据。
秀的程序员,需要具备良好的沟通能力,高效的工作既能得到大家的认可,更能促进成长!
安德斯 海尔斯伯格(Delphi、C#和TypeScript之父)曾说过,“程序员是最好的职业”。因为热爱,就会愿意作为一辈子最大的事业!
优秀的路上很艰辛,但是沿途的风景也很美丽!