前谷歌技术主管亲述:程序员请避开这几大雷区


前谷歌技术主管亲述:程序员请避开这几大雷区

文章插图
图片来源:Unsplash/摄影NESA by Makers
 
软件工程师的技能发展都会经历一个自然的过程——经验从无到有,最后变成老手 。而一旦到了经验丰富的阶段,他们对代码就不那么感兴趣了 。恰恰相反,他们会把更多的精力放在文件设计和代码重构上 。
 
奇怪的是,不管任职于哪家公司,大多数经验丰富的工程师都会表现出同样的特点 。他们缺乏对代码的关注,和其他工程师相比,他们写代码的速度较慢 。这是因为和仅仅编写代码相比,他们会将更多的时间花在设计上面 。
 
从一个新手到经验丰富,这个转变过程不是一蹴而就的 。但一般而言,这些工程师会用几年甚至几十年的时间,逐渐成为领域内资历很高的人 。
 
他们似乎在每个公司都是一样的——不断地处理新出现的需求,进行不必要的繁忙工作——这无疑会让他们感到沮丧 。本文将指出工程师们可能表现出的一些抑制其发展的特征 。
 
1. 在代码重构上浪费时间
 
@techleadhd作为目前在世的经验最丰富的工程师之一,在推特上透露了他关于编写代码的真实想法 。
他显然不相信编写代码的意义 。相反,他暗示称删除和重构代码是有价值的 。
但这项工作并不是软件清理,而是做软件工程 。
 
前谷歌技术主管亲述:程序员请避开这几大雷区

文章插图
 
 
这就意味着工程师需要设计代码,而不是维护代码 。维护代码是其他人的工作,兴许实习生就能做到 。
 
软件工程师们应该花时间对那些陈旧低效的代码进行编程,而不是试图改进旧的基础结构 。只要工作正常运作,就还可以用尚有不足的代码 。然而,不少经验丰富的工程师似乎认为维护旧代码具有很重要的意义 。
 
2. 关注整体情况而不是代码
 
值得明确的一点是,整体情况和业务方面的事情并不重要,重要的是代码!
 
经验丰富的软件工程师有一个坏习惯,就是把注意力集中在整体情况而不是代码本身 。他们喜欢提出这样的问题,比如“这个项目将对谁产生影响”“最终用户将如何与代码交互”以及“工程师将如何维护代码” 。
 
他们花费很多时间试图去了解项目的范围以及它对于公司的影响 。有时,他们甚至会用他们认为的“更好的解决方案”来挑战领导阶层 。那么,当他们专注于诸如“影响”和“优先次序”之类的琐事时,他们如何抽出时间来完成所有代码?
 
把所有的时间都花在会议、巩固、度量跟踪和代码审查上,会导致代码编写不再纯粹 。
 
优秀的程序员不应该质疑他们正在做的事情 。相反,无论是什么请求,他们都应该低下头来编码 。在任何时候,企业都确切清楚什么样的行为将会对公司产生影响 。作为程序员的工作职责,就是做好本职工作,而不是弄清楚他们做的事情是否值得,或者是否符合公司的战略 。
 
希望经验丰富的工程师们记住:你是程序员,而不是领导者 。
 
3. 总是想要一个设计文档
 
出于某种原因,经验丰富的软件工程师们总是想要一个设计文档 。其实,在不考虑设计文档的情况下,无论项目规格多大,直接开始编写都要快得多 。
 
人们不会用一个稍微不同的对象或任何东西去重复功能 。那么,为什么经验丰富的软件工程师偏要如此在意呢?
 
最后,如果不需要花时间考虑设计文档,工程师很可能将以快十倍的速度编写代码 。
 
4. 不喜欢“复杂性”和“设计过度的工程”
 
前谷歌技术主管亲述:程序员请避开这几大雷区

文章插图
 
 
在某种程度上,有些资历颇深的工程师不再愿意深思其他人的代码 。
 
因此,当创建一个模块时,他往往把在学校学到的所有知识都融合到一个面向对象记忆体中,并通常声称这是过度设计的代码 。
 
其实他们只是不想深思别人的杰作 。
 
花时间去理解如何从对象B中得到对象A,然后调用函数C,调用函数D,有时选项F和选项G从配置文件E提取,配置文件E用函数F从数据库G中来解析数据,然后将日志存储在Hadoop、 CouchDB和S3中,这会很困难 。


推荐阅读