1. 首先就是解决问题的能力。
什么是解决问题的能力?
一般包括4个步骤:第一步,明确和理解问题;第二步,拆分和定位问题;第三步,提出解决方案;第四步总结问题。
拆分和定位问题是其中很重要的一步,将一个复杂的问题分成若干个可以执行的小问题,然后提供一个完整的解决方案。
但解决正确的问题却是更重要的。
因为程序员不是来生产代码的,代码只是解决问题的副产品,写代码最终要解决的那个问题才是更重要的。
-------
2. 持续学习的能力。
他们对新的技术,新的方法,前沿知识保持强烈的好奇心,因为他们使用的工具,操作系统,环境,编程语言,以及使用的所有框架都在以超乎想象的速度迭代着。
优秀的程序员应该具备不断前进,不断学习,承认自己会犯错误,并且会从错误中学习成长的能力。每周留出20%的时间来学习新的知识。
-------
3. 读源码的能力。
在写代码时经常会遇到各种各样的问题,有些人可能没有兴趣去看源码,但是如果想要知道问题背后到底发生了什么,就一定要去自己读一读源码。
-------
4. 乐于分享。
优秀的程序员很乐于和其他人沟通,这样可以从别人身上学习新的知识,并且喜欢分享自己的经验和知识,愿意去帮助别人学习。
比如有很多程序员就非常喜欢参与开源项目,他们在为社区贡献自己的技能的同时,也能获得反馈并不断提升能力。
还有很多人会开博客,视频频道,用合适的展示方式为技术和非技术人员讲述他们积累的经验和知识。
-------
5. 硬实力。
当然编程能力还是得越强越好,这并不意味着一定要掌握好多种语言,而是能够独立地交付完整的解决方案产品。
优秀的程序员不仅能够使代码运行成功,还能够解释代码具体是怎样运行的。
-------
6. 他们享受 build a thing。
很多时候他们所做的东西并不是能够被广泛应用的,但是仍然能够坚持不懈的继续完善这个产品