全文共1898字,预计学习时长4分钟
开发人员拥有广泛的技能,资历往往不能决定一个人的能力。那是什么让一些人比同龄人更优秀呢?是什么让他们从平庸的人群中脱颖而出?
拥有5年、甚至的“工作经验”的并不一定是一个有能力的高级开发者,甚至称不上高级开发者。在成功的高级开发者中肯定会有一些不太好的代表——但在高级开发者的梯队中,有一些特征和知识是共享的。
这不是一个商业秘密,而是一种可以开发知识点和思维方式的办法。以下一些特征可以容易帮助区分真正高级开发者和只是有高级职称的开发者。
编程范式
SOLID、面向对象和函数式编程三种编程范式形成了大部分代码创建的思维模式。
许多初级开发者在编写代码过程中忽略了编程是一种语言,也就是说其超越语法规则。编程是一种通信工具,可以多种方式构成,且编程范式有助于在代码通信方式上创建一个特定立场。
任何人都可以编写代码,就像任何人都可以在亚马逊上写文本邮件或简短的书评一样。但这种编写和斯蒂芬·金的小说并不相同。编程范式作为高级开发人员代码的指导力量,正如情节结构对于小说家的作用。所有语言都是由公式组成的,高级开发人员能通过内在化的水平进行理解,这是许多初级和中级开发人员还未体验过的。
创建能力
图片来源:/@lee-campbell-18167
当开始使用for循环语句和if else语句时,会通过复制和粘贴代码来找到答案。如何理解区别于新初级开发者和低水平中级开发者的技能不同。
然而,高级开发者会更进一步。在没有谷歌强大的知识库帮助下,他们会在沙箱中创建类似于mini-gods的功能。高级开发者清楚自己正在做什么,明白行为会意味着什么,也见证或至少预测出突发事件,知道如何完善代码中的漏洞。
对于高级开发者来说,如果知识水平有差距,则会看得更远,而不仅仅是表面。对工具箱中的所有内容都会有更深的理解,属于代码的世界也是不同的。
客观评判
每个人对此都有偏见。初级和中级开发者会根据个人经验而不是与代码相关的论证来表现各自的极端偏见。个人偏好、风格、命名惯例和思维方式是可能遇到的任何建议或评价的核心。
这并没有错,因为这是成长过程的一部分。真正的客观性是在有一系列足够的相反经验给开发者提供一个中心效果时得到的。没有正确的编码方法,只有基于不同情况下的有效方式。高级开发者明白并承认其代码并非最佳,还有改进的空间。
高级开发者往往是有能力的代码看守者,标注同辈造成的麻烦和结构中的薄弱部分。能够退一步看到未来可能发生的更大情况,根据最意想不到的负面影响做出选择,并且不受任何一种代码风格或范式的约束,而是侧重于解决方案而不是工具。
好的软件和工作软件之间的区别
开发者编写运行代码。一部分人会终止于编写运行的代码这一步。另一些人则会更进一步,想办法收拾残局。最好的资深开发者是在编写代码时不断进行编辑和重写——因为他们知道好的软件和工作软件之间的区别,会接受出现的问题和失败,并且尽快改进。
大多数老板只关注软件是否正常工作,但是好的高级开发者知道得更多。他们了解技术债和代码异味的隐藏成本,懂得如何平衡工作软件和好的软件之间的需求——在项目按时交付和扩展协商中维持平衡点。
知识的广度和对结构和语言的理解使其成为区分好的软件和工作软件的专家——以及如何创建两者——并且有能力在情况需要时提出创造性的解决方案。
教学能力
普通的老师只讲述事实,好老师解释事实,优秀的老师展示事实,伟大的老师激发学生去思考。
威廉·亚瑟·沃德
真正的高级开发者会有一定的热情,这激发了在该领域里经验较少的同辈,帮助打磨下一代。
图片来源:/@josh-hild-1270765
编程本身就是想法的集合,高级开发者有能力将这些想法转换为简洁易懂的东西。在不同接口和媒介间进行通信和翻译代码的能力表明了对其选择的语言的真正掌握度。
成为一名教师需要一定的熟练程度。虽然“经验”可能通过简历上的项目和在不同公司的工作时长的形式展现,但教学是一种技能,只有真正了解自身行业的人才能掌握。
真正的高级开发者具有多方面技能,有时在主要工具包领域外用语言伪装成初级或中级开发者,但在编程哲学上有很强的基础。
然而,上述特征体现在个性和知识的深度,会比一般程序员更快熟知未知的代码领域。这些人往往是考虑大局的人,以明智心理看待代码。
在不形成破坏导向力的情况下,会提倡并引导同辈养成干净的代码习惯,正确看待他人错误,并坦然接受个人错误——旨在教育和学习,而不是摧毁自我。
所谓真正的高级开发者不在于任何年龄、背景或“经验”,而是具有解决问题和长远思考的能力。
留言 点赞 发个朋友圈
我们一起分享AI学习与发展的干货
编译组:杨雨心、王书晗
相关链接:
/better-programming/the-marks-of-a-true-senior-developer-d5f3b11c3375
如需转载,请后台留言,遵守转载规范
推荐文章阅读
长按识别二维码可添加关注
读芯君爱你