Zymergen的代码审查

如何成为最好的dang代码审阅者和受审者 在Zymergen,我们认真对待代码质量,因此代码审查是我们流程的重要组成部分也就不足为奇了–我们编写的每一行代码都会得到审查。 但是任何编码已有一段时间的人都知道,代码审查因有点杂乱而闻名。 如果做得好,代码审查可能是快速,合理的,并且是及早发现问题的有用工具。 但是,如果做得不好,它们可能会很慢,无用,并且是与同事一起消除恶意的好方法。 没有什么比花上几天时间在10,000行拉取请求上争论变量名更糟糕的了。 那么,软件团队应该做什么? 我们如何才能最大化善与恶呢? 对于Zymergen,答案是创建内部准则和培训,以说明我们为什么进行代码审查以及我们如何进行代码审查,并与团队的所有新成员共享。 在此博客文章中,我们将研究该培训的一些更广泛适用的部分。 我们将更深入地研究代码审查背后的动机,并在一些老朋友的帮助下(稍后再介绍),我们将研究如何成为最好的dang代码审查者和被审查者。 目标与反目标 在深入探讨执行代码审查的“方式”之前,让我们花一点时间来更好地理解“为什么”。 首先,存在进行代码审查的“明显”理由。 这些是我们在考虑代码审查时通常会想到的与可维护性和正确性有关的好处。 简而言之,当您更多地关注代码时,可以增加早期发现错误并确定降低复杂性的方法。 更多的眼睛也意味着更多的可读性反馈。 如果同事在查看代码时听不懂一段代码,那么他们在使用它时就不太可能理解它。…

Wealthsimple的工程学:RailsConf 2017(亚利桑那州)—经验教训

我和其他五位财富创造者一起,有幸参加了在亚利桑那州凤凰城举行的RailsConf 2017,了解Rails,参加了不同的技术和非技术研讨会并进行了演讲,最后看到了现实生活中的巨型仙人掌(最后一个可能是一直是一个自私的理由)。 这是一个代表Wealthsimple,与Rails社区的其他人会面,并吸取了很多教训并接触到了很酷的技术的好机会。 我对Rails还是很陌生,自从2017年1月加入Wealthsimple以来就一直与它合作。这也是我第一次参加RailsConf(也是第一次举办大型开发者大会)! 这是对社区的一个很好的介绍,并且有机会了解如何在野外以及某些“开箱即用”的应用程序中使用Rails。 对于那些不熟悉RailsConf的人来说,这是一个为期3天的会议,每天有两个主题演讲,并且许多讲座和讲习班同时在之间进行。 我敢肯定,其他与会者也从中学到了不同的教训,但是最引起我共鸣的信息是: 创建一个环境,其中卓越是阻力最小的途径。 这是来自“ 代码是人类”的演讲,但我发现它是我参加的许多会议的主题。 在粗糙到精妙的会议上,编码和木工之间有相似之处,主题是“可重复性提高了速度和一致性。 ”创建可重复的过程,例如为要切割的工件创建夹具,将确保高度精确的切割,并允许您快速而准确地生产许多工件。 在软件中,拥有可重复的过程来将代码投入生产,使您可以随着时间的推移更快地完成该过程。 它还允许您通过A / B测试进行一些小的调整,以查看更改是否使流程变得更好。 在“ 管理不可管理的复杂性”中…

雇用软件开发公司的陷阱(来自前任所有者)

您的公司是否已经淘汰了现成的应用程序和电子表格? 专为公司的许多独特需求而构建的定制软件似乎是完美的答案。 但是,如果现在有更好的选择怎么办? 请继续阅读,以发现今天从一家公司的前所有者那里聘请一家定制软件开发公司的陷阱。 每当您想要构建自定义软件时,都需要确保您获得了许多不同公司的多次报价。 您可能会惊讶于响应在时间和成本方面的差异如何。 弄清楚投标公司是否真的了解您要寻找的东西,还是低调,尽可能多地挤牛奶,或更糟糕的是……两者。 您会看到,有时一家软件开发公司会提供较低的出价,因为他们知道您将来会希望进行更多开发,或者他们引用了完成工作的最低限度功能集,但并未真正完成工作需要。 相反,较大的出价可能会包含根据您明确表达的需求的完整解决方案,但是到最后,它们仍然需要管理更改,就像开始出价一样,这些更改将同样昂贵。 当我拥有软件开发公司时,我始终确保我们正在为客户的最大利益而努力,但是如果我们在进行此项合作之前从未合作过,他们将如何真正了解或相信这一点? 那就是每个公司都会说的,因此请检查回头客的推荐,因为他们希望至少能够证明自己的经历。 无论您计划或以何种方式传达了要求或需求,都将总是会发生更改。 当您构建自己的系统时,这就是野兽的本质。 世界是您的牡蛎,新的想法将在您只需要的开发过程中就可以实现。 这不一定是一件坏事,但是最终您将需要对额外费用做出决定; 它将花费更多,或者将来您会逐渐使用该功能。 而且,当某些功能以较低的成本插入时,如果设计或体系结构与所请求或构建的新功能不太匹配,便会弯腰。 对于那些不符合预算或时间表约束的更改,您将需要有人来构建这些更改。…

如何停止成为一名优秀的软件开发人员,而是成为一名出色的软件开发人员

截至2016年,成为软件开发人员是一种比11年前刚开始时凉爽的工作。 我看到越来越多的人加入我们的行列,并选择了“轻巧的军刀”(在此处插入选择的语言)来构建更大,更好的应用程序。 如今,面对这些才华横溢的新移民的涌入,仍然有些像我这样的“老”笨拙的家伙可以摆上餐桌。 以下是我几年来学到的一些技巧,以及年轻开发人员犯的一些最常见的错误。 这篇文章是我停顿了两年后的第一篇文章,所以当我尝试重新构图时,请与我保持联系。 1.不要强调 工作日结束后,您将不会在办公室看到很多高级开发人员。 好吧,也许如果发生了可怕的错误,但通常它们是准时离开的人。 原因很简单。 疲倦的人编写可怕的代码,这条规则也不例外。 您在2:00 AM编写的创新性修复程序,第二天再看,看起来仍然具有创新性吗? “但是我的经理会注意到我付出了120%”。 不,他不会,甚至,即使他这样做,他也将为您的救助而感激,并在下次他需要一个男生加班时记住您(相信我,这是一个永无止境的圈子)。 最后,您的代码质量和构建质量是证明自己的更好的方法。 2.保持范围 在我的整个一生中,都没有遇到任何大型应用程序,也没有遇到过使用干净的代码库成功完成启动的情况。 即使是最严格的编码标准也无法防止垃圾代码以某种方式渗入代码库。…

基本软件工程特征

是否想知道哪一位软件工程师的性格特征会使其他人脱颖而出? 它不是最新的编码语言的速度或专业知识。 虽然这些技能很有用,但可以肯定的是,真正出色的开发人员具有更有价值的东西:同理心。 软件开发全部与最终用户有关。 想想看,如果您是一家软件公司,而您的客户不信任您的产品,或者您觉得自己没有最大的兴趣,则几乎可以删除所有其他内容。 围绕优秀软件工程师人格特质的文化 在我的爱国者软件公司(Patriot Software)中,我们鼓励开发人员紧跟最新趋势和技巧,但还要竭尽全力营造同情心。 我们希望这里的人能够编写出好的代码,并在代码破裂时说:“我想知道这个问题是否影响了其他任何地方的任何人?”然后去发现。 没人问他们。 没有投诉或错误日志会提示他们。 他们只是自己做,因为他们对坏代码所带来的挫败感很同情。 在这里,同情心在开发Patriot的质量会计和薪资软件方面发挥了重要作用。 不幸的是,同理心不是最常见的软件工程师个性特征之一。 为什么? 好吧,让我们面对现实吧,软件开发并不便宜。 优秀的开发商需求旺盛,雇主知道他们必须多付钱才能得到他们。 如此高的进入门槛强调了削减成本的需求,这通常是在前端进行的,在前端,人们最期望的软件开发人员特性被视为奢侈。…