大数据文摘出品
来源:medium
编译:张大笔茹、宁静
前不久,文摘菌曾报道过,“Python之父”GuidoVanRossum,一位荷兰程序员边看电视边撸代码,历时三个月开发出了现今广泛应用的Python语言,就有人在后台问了:“同样是程序员,我也喜欢宅在家里,为什么收获的只有身体的横向发展?”
那些号称“代码教科书”“程序不通过编译器都会道歉”的高级开发人员和在搬砖边缘苦苦挣扎的码农有什么不一样呢?难道真如学习一门乐器,管类乐器,老师会看你嘴唇薄厚,丝弦乐器,可能会看你指节长度一样,编程也需要有天赋吗?
开发人员的技能范围是很广的,不能仅根据工作年限来评价一个人的才能,五年、十年甚至十五年所谓的“工作经验”并不一定是有能力、高效率开发人员的佐证,有些人往往年龄大而能力低,那么是什么让有些人能在同类中脱颖而出呢?
文摘菌通过观察周围一些高级开发人员,发现他们身上都有相同的特质,到底是什么样的特质使得他们开发出来的代码复用性好,漏洞低呢?可能他们都具备如下品质吧。
编程模式
程序化面向对象、功能编程与面向对象设计、清晰编码技术的SOLID是编程模式的“三重奏”,它们很大程度上决定了代码创建背后的思维模式。
大多数初级开发人员在编码过程中并没有意识到编程是一种超越了语法规则的问题,可以把它看作可以多种方式完成的通信工具,好的编程模式有助于优化代码间的通信方式。
任何人都可以写代码,正如任何人都可以在豆瓣上发短息和写书评一样,当然这肯定不能与斯蒂芬金的小说比拟。编程模式作为高级开发人员代码背后的指导力量,就像小说结构对于其整体情节的反映一样,所有的语言都是有其内部架构的,高级开发人员可以在内部层面理解并应用,这是许多初级和中级开发人员做不到的。
创造力
当我们在for循环和ifelse语句中开始编程时,我们往往更喜欢用复制和粘贴的方式解决代码问题。然而,理解代码的方式决定了你是低级还是高级开发人员。
走一步,再走一步,更进一步,可能会发现另外一番风景,与其复制粘贴代码,倒不如整理好自己的思路,创造出有“灵魂”的代码。
高级开发人员之于普通开发者,是他们有创造力,而不只是依靠Google知识库的帮助。他们知道自己的代码要解决的问题,看得到风险,或者说至少预测得到代码运行时候的问题,能看得到代码中的潜在漏洞并想好如何改进它们。如果发现知识方面的盲点,他们不单单会看表面,而是对工具箱中的所有内容进行更深入的了解,总之,高级开发人员的眼中能看到一个更加深邃的代码世界。
保持客观
每个人是用自己已有的知识来看待现有的问题,这也是初中级开发人员的共同点,他们更倾向于根据个人经验而不是代码本身的问题来解决问题,他们的个人偏好、风格、命名惯例和思维方式是他们提供评估和建议的出发点。这是成长过程的一部分,没什么不对的,但是没有绝对正确的代码,只有适用于情境和场景合适的代码。
高级开发人员能意识到这一点,接受他们的代码可能不是最好的,永远还有改进的空间,面对不同的处理任务和问题时都能够保持乐观,整理和改进出不同的代码以解决不同的问题。同时他们也是有效的代码管理员,能指出同行所做架构中的弱点和逻辑思维混乱之处,能高瞻远瞩,不受任何一种编码或范式的束缚,从突发事件中看到问题,同时根据实际情况做出最优选择。他们着重点在于解决问题而不是选择工具。
追求卓越,优秀还是好用?
作为开发人员,写代码是本职工作,一些人写完即止,打卡下班,不会考虑代码复用性和简洁性,而高级开发人员则会追求完美。
多数老板只