为初创公司修复软件熵的 5 种方法
已发表: 2019-01-21初创公司耗尽大部分资源以尽快进入市场
好的质量需要大量的时间和成本才能达到,而这正是大多数初创公司受苦的地方
编写和重写代码的一个组成部分,并在你前进的过程中养成这样做的习惯
“'初创公司'是一家对以下方面感到困惑的公司——1.它的产品是什么,2.它的客户是谁3.如何赚钱。” – Dave McClure,500 Startups 创始人
在其旅程中,一家科技初创公司拥有三个成功的杠杆:成本、速度和质量。
不幸的是,您一次只能选择两个。 所以,如果你选择速度和成本,你可能不得不牺牲质量。 或者,如果您选择速度和质量,可能会花费您数百万美元。 这种二比三的选择会导致软件熵,正如麦克白夫人所说,这是“已经完成的事情无法撤消”的情况,或者用技术术语来说,你会说,“在软件技术等封闭系统中,产品的消耗质量无法在一段时间内得到改善。”
我们将更多地讨论软件熵、导致它的因素以及可能的解决方案。 在此之前,了解导致软件熵的原因很重要。
创业的三个杠杆
速度
一旦你涉足初创公司的水域,你就会意识到时间是上述所有三个因素中最有限的资源。 在一家初创公司开始在收入方面看到一些吸引力之前,它从未被称为公司。
为了充分利用自举数量,通常称为“测试版”并且通常具有“低质量”(与目标产品相比)的快速产品会尽快发布以抢占市场。
初创公司耗尽大部分资源以尽快进入市场,全力以赴实现“速度”,这在大多数情况下是三者中最受欢迎的杠杆。
成本
与时间相比,成本在任何意义上都是有形的。 这是创业公司的心跳。
“创业公司只有两个优先事项:赢得市场和不耗尽现金。” ——本霍洛维茨
您帐户中的余额越多,您生存的时间就越长。 在初创公司的初始阶段,大部分资源都用于为您的组织安排重要资产(也包括负债),例如支付办公室、家具、互联网、工资等等。
通常情况下,由于预算限制,初创公司很难负担得起业内顶级开发商的费用。 通常,高级程序员或高级管理人员会留到以后,以便在资金流入时雇用他们。
质量
好的工作是昂贵的,伟大的工作更昂贵,而高质量的工作需要付出非凡的代价。 质量是最难达到的。 好的质量需要大量的时间和成本才能达到。 这也是大多数初创公司受苦的地方。
大多数创业公司都是从有限的资金开始的,力争尽快盈利。 他们的目标是在资金耗尽之前做好生产准备和销售。 在公司处于成长阶段之前,企业家会努力快速生产并打入市场。 这使这些初创公司能够获得市场份额并协作以建立客户反馈。
大多数公司从“测试版”开始,这可以产生一些吸引力并为他们的需求提供资金,因为他们在一个以产品竞争激烈为特征的市场中向上发展。
初创公司通常会聘请新的开发人员和工程师(很少有预算聘请高级开发人员),他们了解他们的需求,有一定的开发意识,并且可以用最少的资源创建产品。 毫无疑问,这些开发商的成本更低。 它们很容易成型,并且经常可以轮班工作。
Urbanclap 联合创始人/首席技术官 Raghav Chandra 说
“质量通常被视为速度(更长的冲刺、更多的代码编写/测试等)和成本(更多的工程师、更好的基础设施等)的折衷。 然而,在年轻的阶段,良好的质量是对速度和成本的巨大推动。
质量有多个方面:它的架构设计(!= infra)在早期发挥了最大的影响力。
最大的耗时要么是发现错误(通过调用链),要么是在设计糟糕的代码上构建功能——这都是糟糕的隔离和软件维护的产物。”
随着公司开始成长并开始盈利,构建稳定产品的需求就出现了。 创建的产品的先前版本需要改进,并且必须重新编写代码。
随着客户开始出现,质量很快成为重中之重。 为了提高这种质量,团队中增加了一名经验更丰富、对市场更了解的员工。 聘请成本更高的高级开发人员来开发现有产品。 这些开发人员大部分时间都在改进旧代码行,同时也在快速开发新的、高质量的功能。
修复旧代码行以开发新功能,大多数开发人员都在努力获得所需的结果。 但随着时间的流逝,在团队努力改进产品的情况下,质量却没有提高。
这个因素被称为软件熵。
什么是软件熵?
根据维基百科的定义,关于封闭系统(没有输入或输出)中的热力学第二定律,在一段时间内无法减少无序。
即使在软件系统的情况下,这条定律似乎也是相关的; 当一个系统在一段时间内被修改时,它的无序度只会随着努力而增加而不是减少。
随着新开发人员尝试改进现有代码以提高质量,产品质量与预期结果相差甚远。 随着对现有代码行的修改进行修正,“熵”不断增加,导致更复杂的代码难以修复。 这通常会导致开发人员和软件工程师感到沮丧。 大多数时候,成长中的初创公司采取从头开始编写代码来修复这种熵的艰难路线。
为你推荐:
Andrew Hunt 和 David Thomas 在 The Pragmatic Programmer: From Journeyman to Master 一书中写道,
“软件熵具有传染性,如果不加以控制,就会成为一种流行病。”
那么,我们如何解决这个问题,以及聘请能够在更少的时间和预算内完成高质量工作的开发人员的最佳措施是什么?
那么,创业公司应该关注成本、速度还是质量?
Intelliphi 首席执行官兼创始人 Anand Thaker 说,
“系统的质量应该达到最低限度,这样它就不会给用户体验带来持续的麻烦”
在系统运行关键或生死操作的情况下也有例外。
在这些早期阶段,初创公司仍在寻找产品与市场的契合度。 在嘈杂且竞争激烈的基于 SaaS 的世界中,产品与市场的契合度决定了创业公司的成败。 此外,团队的活力和领导力也处于快速发展阶段。 出于这个原因,精益创业快速失败是一种合理的哲学。 将其视为第一个熵挑战。
随着产品市场的固化,一家初创公司要么计划对零件或整个平台进行质量改造。 在这一点上向前发展,转化为更好的客户体验的质量努力会影响增长。 良好的增长提供了更多的资金和客户保留。
就个人而言,我更喜欢以产品为主导的初创公司和初创公司创始人。 通常,解决方案和愿景是稳健的,他们的方法结合了弹性……他们的退出和倍数要大得多(是其他典型初创公司的 3 到 5 倍)。 对于这些类型的初创公司/创始人,他们很可能尊重熵,但是,即使他们对早期阶段的理解也是关于速度和适合获得关键初始动力的。”
初创公司如何降低软件熵?
从最少的技术开始
UrbanClap 首席技术官谈到使用最少且可重用的技术是“无法正确分离关注点,这会导致糟糕和臃肿的团队设计以及过度膨胀的基础设施成本。 要很好地解决这个问题,最大和最重要的杠杆就是掌握有意建筑设计的文化。
- 强大的设计审查文化,专注于模块化和重用的有意设计
- 框架高于指导方针——对于小团队,传播最佳实践是一个缓慢的过程。 最好通过工程师构建框架和工具来“自动化”最佳实践,以标准化不同的工程部分。”
大多数创业公司都是从一个特定的想法开始的,它会在一段时间内发展,添加新的想法、功能,有时它会变成一个全新的产品。 确保您在成立初期使用的技术 A 与技术 B 兼容,后者可以与您将来可能使用的技术 C 合并。
随着公司愿景的发展,产品也在发展,在此过程中引入(或中断)各种技术。 确保您使用最少的技术,直到您的产品稳定并可以使用。 优化你的代码。
考虑代码优化
编写和重写代码的一个组成部分,并在你前进的过程中养成这样做的习惯。 这可以帮助您跟踪在光泽产品后端上线的所有代码。
编写代码的一个组成部分有助于新员工在提交新提交之前修改重要部分。 整体部分有助于区分代码的好部分和坏部分。
重新检查提交
曾经提交过代码吗? 如果没有,把它放在你的遗愿清单上。
它是对开发人员投入组织的努力和承诺的衡量标准。 大多数初创公司都会庆祝第一个提交的代码。 是时候重新检查这些提交了。 不是第一个,不是最后一个,而是全部。
强制要求同行完成所有代码提交,以确保不遗余力地获得最优质的代码。
招聘时不要忘记评估工具
一段时间后,您会意识到您无法向客户证明代码质量差,将其归咎于时间和成本。
从您的第一个雇员开始使用技术评估软件可确保您与了解您的要求并能够在压力下产生结果的员工打交道。
初创公司的每一次错误招聘都会花费近 18,000 美元,从工资和津贴到招聘所涉及的所有流程——最重要的是,一个小团队在重要项目上花费的面试和评估时间。
技术招聘软件具有多种编程语言、自动测试创建和详细的候选人报告等功能。 广泛的抄袭功能可帮助团队摆脱通常的“密切关注”的麻烦。
诸如“Java 项目”(作为作业共享的现有项目的一部分)之类的任务可以与在真实编码环境中工作并提交实际代码的候选人共享,这可以正确地描述必须完成的工作。
做你的作业
最后但并非最不重要的一点是,做好功课。 关注有影响力的人,阅读书籍,与类似领域的人联系。
有很多人在他们的组织中努力提高软件熵。
Anand Thaker 说,
“知识和沟通对于改进熵至关重要。 当一个对系统的某个部分有深入了解的团队成员离开时,我们经历了熵。
另一种情况是软件的某些部分几个月或几年都没有受到影响。 确保定期重新访问这些功能和底层代码/逻辑。
此外,考虑为发展理念设定基调/文化。
熵将永远存在,但限制它的增长也是一门艺术。 作为技术或行政主管,您可能已经知道这一点,但软件开发是一个有纪律的过程。 优秀的团队成员为他们的工作感到自豪。 同行对这种努力的认可大有帮助。” 谈论并讨论人们随着时间的推移所学到的知识。
结论
在初始阶段,初创公司是否应该关注质量?
糟糕的代码质量一直是许多初创公司失败的主要原因。 在一段时间内改进它已经损失了大量的时间、金钱和努力。 像“代码不好”这样的简单评论来“改进这一行”总比什么都不做来改进代码要好。
初创企业是一种开辟新天地并改变世界的经济现象。
Raghav Chandra 对遭受熵之苦的初创公司的建议是:“对于较小的团队,我发现拥有更多团队和保持组织扁平化、每个人都可以参与的更好的杠杆作用。
作为技术主管/经理,重要的是要培养团队更好地“思考”。 努力思考更好是有帮助的,这会减少以后解决问题的时间。
实施前的头脑风暴和深入思考并不是在时间或成本上的妥协——它确实是构建系统级质量的最便宜的方式。”
是时候关注熵并聘请最优秀的开发人员来帮助减少我们构建的产品中的熵了。