优秀程序员的三大核心素养:意识、理解与责任

本文深入探讨成为优秀程序员必须具备的三大关键要素:技术意识、深度理解和责任担当。通过具体代码示例和工程实践案例,阐述如何通过提升技术敏感度、深入理解系统原理以及主动承担代码优化责任来提升编程能力,适用于所有层次的软件开发人员。

优秀程序员的三大核心素养:意识、理解与责任

作者:Max Kanat-Alexander | 2017年12月20日

成为优秀程序员需要具备三个关键要素:意识、理解和责任。

意识

意识是理解的一种特殊形式,意味着你能够感知到某些事物的存在。在编程中,意识体现在多个方面:

最直接的例子是:如果你没有意识到某个bug的存在,就永远无法修复它。有些人会利用"不知者无罪"的心理逃避问题,但问题的存在与否并不取决于你是否知晓。当系统存在影响数百万用户的bug时,你应该主动发现它。

更微妙的意识形式包括代码复杂度感知。有些程序员意识不到自己编写的代码很复杂,或者不了解其他程序员阅读这段代码时的感受。他们可能忽略代码缺少注释、可读性差,或者存在更好的解决方案。

提升意识的最简单方法是主动阅读超出日常范围的代码。如果你负责视频编码,但视频上传环节出现问题,就应该去了解上传代码的工作原理。虽然这听起来简单,但对许多人来说存在心理障碍。

意识还包括了解可用的库、框架和工具。作为Web开发者,至少应该知道最新Web开发库的存在,这样才能在需要时做出明智的技术选型。

通过接触新的编程语言、设计模式、测试理念和框架,可以有效提升技术意识。了解不同的解决问题方式,能让你在面临困难时有更多选择。

理解

理解得越深入,做得就越好。意识只是第一步——知道某个事物存在,之后需要通过理解来掌握它。

考虑以下伪代码示例:

1
2
3
4
function print_hello() {
   clear_screen()
   display_hello()
}

这个程序看起来会清屏然后显示"Hello",但如果不查看clear_screen和write_hello的具体实现,就无法真正理解其行为。可能clear_screen会将整个屏幕变白,而write_hello会用15种语言和颜色显示"HELLO"。

理解带来简洁性、稳定性等优秀编程品质。其他有用的技能如快速打字、良好沟通等固然重要,但理解才是关键。没有理解,即使你是世界上最快的程序员,也只能写出糟糕、难以维护的系统。

责任

这里的"责任"不是指"为错误承担责任",而是"愿意对某些事物保持控制权"。就像愿意打扫自己的房间一样,这种意愿必须是真实的。

在编程中经常遇到这样的负面例子:“我不想重构那段代码,因为不属于我负责。“这是荒谬的。如果你能编辑代码、阅读源码、向维护者提交修改,理论上就能修复它。

这并不意味着你要修复世界上所有代码,但需要考虑时间投入的合理性。人们常用这些借口逃避代码清理:“清理依赖代码会延长项目时间"或"这不属于我们团队的目标”。

这些想法存在两个缺陷:

第一,依赖糟糕代码通常会使开发更耗时。重构后实现功能往往比在混乱库基础上开发更快。关键在于区分"完成"和"真正完成”——真正完成意味着代码可工作、易于维护、不会消耗开发者全部精力。

想象用劣质砖块砌墙:底层砖块破碎后用劣质木材修补,墙开始倾斜再用生锈铁条支撑。最终你会花费一生来维护这面墙,或者留给他人一个无法理解的烂摊子。

在依赖代码上"打补丁"就像这样砌墙。虽然程序没有物理结构会倒塌,但复杂性叠加的原理相同:通过增加复杂性来解决底层问题,只会让系统更复杂;解决底层问题才能降低复杂性。

重要的是,最初是谁造成复杂性的并不重要。“别人做的"不能改变上述规则。你有选择权——可以负责地修复问题。有时需要请他人修复,但更多时候需要自己动手。

另一个缺陷是:你属于一个群体,即使是全人类这个群体。修复他人代码是在帮助整个公司或编程社区。作为库或API的使用者,你往往比作者更清楚如何改进它。至少应该提交bug报告,否则作者如何知道存在问题?

总结

要成为更好的程序员,需要问自己应该提升意识、理解还是责任,然后专注改进。如果不确定,从意识开始,然后是理解,最后是责任。

  • 提升意识:阅读新代码、关注编程博客、与其他程序员交流新技术
  • 提升理解:阅读文档、理解函数原理、向同事请教、阅读技术文章
  • 提升责任:决定承担更多。遇到问题时主动解决,跨团队困难时协助解决

不需要一夜之间掌握所有知识。从小事开始,循序渐进,最终你会成为理想的优秀程序员。

享受编程吧! -Max

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计