专家程序员的蛛丝马迹
在我编程生涯的早期,我很幸运有机会与一位资深程序员共事,他悉心指导我。(我更喜欢用“专家”而不是“资深”,因为“资深”这个词含义模糊,让人难以准确定义“资深”程序员的真正含义。)
作为一名年轻的程序员,我经验尚浅,所以并不觉得我的导师特别出色。当然,他做得确实很棒。但由于没有可以比较的对象,我当时只是觉得所有程序员都差不多。我当时真是太天真了。
在接下来的12年里,我接触过许多程序员——有些很优秀,有些则不然。尽管如此,与不同水平的程序员共事让我能够更全面地看待最初的经历。此外,我开始注意到一些关键特征,这些特征几乎在我遇到的所有优秀程序员身上都存在:
工艺
优秀的程序员对待工作如同古代的工匠:质量至上。普通工程师编写的代码浩如烟海,而优秀的程序员写出的代码更像是诗歌而非代码。他们的代码具有真正的美感,他们相信“完美并非无所增益,而是无所删减。”——安托万·德·圣埃克苏佩里
责任
优秀的程序员真正对自己的工作负责。他们不会坐等“迭代计划会议”、任务分配或别人编写“用户故事”。他们会主动承担问题,立即投入工作。这还体现在他们不会盲目地遵循既定的需求,也不会只是机械地执行指令——从而将责任推卸给他人。相反,他们会不断挑战现状,力求彻底解决问题,并交付正确的解决方案。他们坚信应该为客户提供真正需要的东西,而不是自以为客户想要的东西。
优秀的程序员和其他程序员一样也会犯错。但他们不会把代码错误归咎于天灾人祸,而是会立即着手解决问题。他们不会把错误当作“一次性故障”而置之不理,更不会(天哪!)编写权宜之计来掩盖问题。相反,他们会找到问题的根源并将其彻底消除。
敏捷
有趣的是,这几乎与直觉相悖,但专业程序员往往能非常迅速地从问题找到解决方案。尽管他们在设计、编写和测试解决方案上花费的时间更多,但他们的交付速度通常比普通程序员快得多。这是因为专业程序员很少从零开始。他们的软件通常以易于重用和扩展的方式构建。
专家级程序员的另一个优势在于,他们认识到绝大多数问题早已被其他程序员反复解决。这些解决方案通常以代码库、文档和最佳实践的形式存在。普通程序员会尝试用他们现有的工具和知识来解决问题,而专家级程序员则会寻求其他视角,即使这意味着要探索未知领域。
热情
资深程序员是我见过最有热情的人之一。他们热爱自己的工作,在我看来,他们的工作更像是玩乐而非苦差事。因此,他们下班后也不会把编程抛诸脑后。他们通常会花费大量空闲时间阅读、练习和提升自己的技能。正是这种勤奋刻苦的练习,常常让资深程序员看起来天赋异禀。而那些通常被认为是天赋的东西,实际上是长期坚持不懈的学习和练习的结果。
临别赠言
如果你遇到这样一位编程大师,我只有一条建议:像抓住救命稻草一样“依附”他们,尽可能多地学习。任何书籍都无法取代一对一的指导和在资深程序员手下学习所获得的宝贵经验。
另外,如果您有相关的经历想要分享,我很乐意听听。
文章来源:https://dev.to/acoh3n/tell-tales-of-the-expert-programmer-1k5m