如何成为一个优秀程序员

为什么同样的工作年限,不同的程序员的技术差别有那么大呢?换言之,一个优秀的程序员应该具备怎样的品质?

答案1


  1. 要有足够的热情,浓厚的兴趣
  2. 不断学习新技术
  3. 学会高效利用自己的时间
  4. 学习设计模式
  5. 经常重构你的代码
  6. 学会看源码
  7. 学会与人沟通
  8. 持之以恒,十年如一日

答案2


  1. 他们做研究
  2. 读错误信息(并以之行事)
  3. 他们会去看源代码
  4. 他们说做就做
  5. 他们防患未然
  6. 他们善于交流
  7. 他们激情四射

答案3


我觉得优秀的程序员,不仅优秀在代码上,更重要在思维等方面。

  1. 谨慎,在有新的需求时,会不断澄清,多次确认
  2. 清晰,脑海中有详细步骤
  3. 细致,先研究问题出在哪里,思考缘由,而非头痛医头
  4. 编码习惯,命名规范,注释清晰

答案4


这是《构建之法》的一部分,用于工程师自我评价

  1. 保持高标准,不要受制于破窗理论
  2. 主动解决问题
  3. 经常给自己充电
  4. Don't Repeat Yourself——别重复
  5. 消除不相关模块之间的影响
  6. 通过快速原型来学习
  7. 设计要接近问题领域
  8. 估计任务所花费的时间,避免意外
  9. 善于用脚本构建各种组合命令
  10. 有很多代码编辑器,请把其中一个用得非常熟练
  11. 理解常用的设计模式,并知道择机而用
  12. 代码版本管理工具是你代码的保障
  13. 在debug的时候,不要惊慌,想想导致问题的原因可能在哪里
  14. 重要的接口要用形式化的“合同”来规定
  15. 只在异常的情况下才使用异常,不要用异常来传递正常的信息
  16. 善始善终,谁申请,谁释放
  17. 采用松耦合的配置模式
  18. 把常用模块的功能打造成独立的服务
  19. 在设计中考虑对并行的支持
  20. 在设计中把展现模块 (View) 和实体模块 (Model) 分开
  21. 重视算法的效率
  22. 在实际的运行场景中测试你的算法,不要停留在数学分析层面
  23. 经常重构代码,同时注意要解决问题的根源
  24. 在开始设计的时候就要考虑如何测试
  25. 使用代码生成工具前,要确保你能理解它们
  26. 和一个实际的用户一起使用软件,获得第一手反馈
  27. 在自动测试的时候,要有意引地入bug,来保证自动测试的确能捕获这些错误
  28. 如果测试没有做完,那么开发也没有做完
  29. 适当地追求代码覆盖率,确保程序覆盖了不同的程序状态和各种组合条件
  30. 如果团队成员碰到普遍性bug, 应建立测试用例抓住类似bug
  31. 测试:多走一步,多考虑一层
  32. (带领团队)了解用户的期望值
  33. (带领团队) 不要停留在被动地收集需求,要挖掘需求
  34. (带领团队)把所有的术语和项目相关的名词、缩写等都放在一个地方
  35. (带领团队)不要依赖于某个人的手动操作,而是要努力做成可运行脚本
  36. (带领团队)要让重用变得更容易
  37. (带领团队)在每一次迭代之后,都要总结经验

参考目录:

  1. 好的程序员到底好在哪里?
  2. 一个Android程序员的自我修炼
  3. 优秀的程序员和一般的程序员差别在哪?
  4. 软件工程师能力自我评价表
2016-10-29 11:467