软件工程师为了准备面试,常常需要花费大量时间练习编程问题,同时还需要完善简历。然而,当他们最终拿下创业公司、谷歌、亚马逊或其他公司的工作后,才发现辛辛苦苦积累的技能与日常工作所需的技能完全不是一码事......那么,究竟怎样才算是高效率的程序员呢?又如何贴合工作所需完善技能?
作者
SeattleDataGuy
译者
弯月,责编
郭芮
以下为译文:
我们团队受TechLead提出的高效能程序员的七项技能的启发,提出了一些自己的看法。以下是我们认为高效能程序员的七项技能。
学习如何阅读别人的代码
你总是会觉得,除你以外的每个人编写的代码都很糟糕。
因此,我们认为能够理解别人的代码是一项拥有诸多优势的伟大技能。
无论之前的工程师编写的代码有多么凌乱或考虑不周,你仍然需要读完这些代码。毕竟,这是你的工作。即便有时之前的那位工程师就是一年前的你。
这项技能有两个好处。首先,能够阅读别人的代码是学习设计上的反面教材的绝好机会。在浏览别人的代码时,你可以了解哪些代码有用,哪些无效。更重要的是,你可以了解到对于其他工程师而言,哪些代码容易理解,哪些代码不容易理解。
你需要确保尽可能多地阅读别人的代码。这样,其他工程师才能知道你是一名高级工程师。
你需要确保你提出的问题涉及重要代码的可维护性,并给出有用的评论。这可以彰显你在编程领域的主导地位。
你的代码应该设计得井井有条,因此不需要任何文档。实际上,如果你是一名优秀的程序员,那么你根本不需要给你的代码写任何文档。这只是浪费时间,你需要把时间花在编程和参加会议上。
能够阅读别人凌乱的代码,也方便你在有需要的时候修改代码。有时,你可以利用这种机会补足自己缺乏的经验。例如,我们的脚本曾经从Powershell换成了Python,然后又换成了Perl。我们的Perl经验非常有限,但是我们仍然有足够的背景信息来弄清楚实际的状况,并进行必要的改动。
这一切都因为我们了解所有的代码,以及对Perl脚本的理解。
阅读他人的代码可以提高你自身的价值,因为你甚至能轻易理解那些过度设计的系统。
感知有问题的项目
你需要花时间学习的技术非常多。我们认为值得了解的技能之一,就是了解哪些项目不值得做,哪些项目陷入了步履维艰。
在大公司中,无法完成或不具备影响力的项目往往很多。有些项目可能没有任何业务意义(至少对你而言没有意义),有些项目则有管理不善的问题。这并不是说如果你不赞同项目,就应该断了这种想法。但是,如果利益相关者无法正确解释最终的成果,那么该项目可能就不值得做。
此外,某些项目可能过于