如何 做点兼职挣钱

3种良好的技术债务

“技术债”是软件工程领域一个肮脏的字眼。人们常常说随着遗憾的空气;过去的错误,这将需要进行最后救赎随着重构。

金融债务没有普遍以同样的方式唾骂。把你的朋友出去买房子抵押贷款和你说什么?恭喜!债券是基础设施和公共工程提供资金的标准形式。企业使用各种债务和华尔街显示了其股价走高的形式信心。

所不同的是意图。如果高科技债务并不总是发生事故,由不正确的假设和意外情况所造成的?你将如何度过一个高科技的抵押贷款债务?

如果我们定义为债务科技工作将必须在未来做,我们可以跟踪的时间方面的开支,会在这也就是说今后的工作中度过的。我们还可以在现在所做的工作“投资”的时间。

心理ESTA模式已经帮助我避免愚蠢支出与维护系统我买不起支付,它的方式,我给看看高科技机遇债务故意使用。这里有一些情况下承担债务高科技在哪里帮助我的项目中取得成功。

脚手架

当我决定如何一个大项目的主要部分的优先级,我的目标是首先确认该项目的最危险的部分。通过危险的,我的意思是最容易的部分得到错误的,因为他们是复杂的,难以界定,不深知,或有其他异味那“这里是龙。”这些组件是因为在最困难的部分项目打造,我先建立他们,而代码库是小,更容易发展。

这是不够的,只是建立危险成分,但是。我需要知道我这些危险的部件正确建立。你永远不知道,直到你尝试一下,所以我试图让我的现实世界中的代码到的情况下尽可能快地。通常ESTA找到一种方法,手段使一些具有高风险部分有用的移动上构建应用程序的其余部分之前。

当我们的团队正在开发 squarespace电子邮件活动,这意味着建设的第一个电子邮件编辑器。 squarespace是著名的顶级设计和强大的内容编辑工具,我们想建立一些荣登竞争。几个月后,我们有一个编辑器,我们表现出兴奋的同事,但尚未我们已经建立的系统发送电子邮件卫生组织。我们不会得到我们需要的,如果编辑只是一个玩具应用程序,无法发送电子邮件的真实世界的反馈。

成品是要需要发送数以亿计的电子邮件快速,可靠的性能,但我们并不需要这种功能 马上.

所以我们问自己,“什么是这将使编辑有用到我们的同事最简单的事情吗?”只有squarespace数百名员工的时间和内部测试人员可以容忍一点点的不可靠性。东西发送几百个电子邮件不可靠更简单的方法是建立比我们一直在考虑系统的鲁棒性。我们可以建立的东西,我们意识到,我们便宜不介意扔掉后,脚手架才能解锁用户获得反馈越快。

一些自我强加的指引我们的帮助下脚手架实施顺利:

  • 我们致力于为我们的估计。如果我们无法完成的估计时间。脚手架,这是一个迹象,表明我们承担太多的复杂性,并重新思考我们的方法需要。
  • 它的目的是要被扔掉,并告知如从一开始就。该代码是很好的控制,我们没有浪费过小的细节实施时间挑剔。
  • 我们理解脚手架的限制,在这样一种情况:失败会造成伤害使用它可以避免的。我们会被深入到债务,如果我们花时间清理由脚手架导致的错误,低于预期,所以我们都非常有意的关于测试是在脚手架使用的情况。
  • 知道我们的利益相关者故意采取的债务。我们吹嘘这些限制与利益相关者和用户,如果他们特性 - “看看我们所节省的时间!” - 并在此过程中确保我们需要他们知道以后投入时间来建立真正的邮件传递系统。

脚手架可以帮你调整,你在填写依赖关系构建应用程序的部分的顺序,这样你就不会停留在你面前建筑构件有一种方式来验证它们。我们扔掉的电子邮件发送者得到反馈意见的电子邮件编辑器,而代码仍然是在我们的脑海中记忆犹新,帮助我们更快地迭代和完善我们最困难的问题。当它来到的时间来建立实际的电子邮件发件人,我们做到了从建筑脚手架的经验教训。

硬编码的东西

一个产品,我最近在弄的仪表盘区设有季节性消息,例如区域,“希望节日快乐对你的用户。”每两个月,我们的团队会安排新的内容在仪表板的那个区域显示。

我们需要一个内容管理系统(CMS)让我们的产品经理(PM)和设计师来更新显示板消息本身。 squarespace是一个CMS公司毕竟!此外,PMS通常希望仪表板更新在特定的时间和工程师不想时间生产的排放在反应手工这些请求。

一种方法将已建立一个数据库支持的CMS,让我们团队的各个成员能够即时,没有工程师干预更新内容的仪表板。

不幸的是,这种方法有以下费用:额外的前端,验证和数据管理。这些隐性成本都是烂种高科技债务,备马未来的开发人员提供更多的维护工作比特征是值得的。此外,我们预计我们的仪表板消息的内容去周没有变化,所以从溶液中提供的即时更新,我们将不会受益。

而不是采取在这么数据库支持的CMS的开销,我们保存我们的内容在文件中并重新使用YAML现有工具来提供CMS功能。用户界面更改仪表板消息的文本编辑器,并成为一个git而不是浏览器的用户界面。其他团队成员将验证码通过回顾这些改变,所以我们并不需要花时间写验证和错误处理程序。内容变化是由我们的CI现有的工具不同环境中自动同步。

在特定的时间,让新的内容是有成就有了更进一步硬编码。套用:

if now >= NEW_CONTENT_DATE
  显示新内容
其他
  老节目内容

我考虑了几个因素在决定是否硬编码的东西:

  • 是不是好更改生效几个要几个小时?硬编码带有明显的局限性:变更需要部署新的代码来生产。不承认限制可以提示一些为维护头痛,创造高科技坏账。
  • GIT中是可接受的更新用户界面?随着更新将需要你的团队交互工具的版本控制系统,也许是CI。不引入更多的协调和培训费用,我们使用的测试:有没有人在谁知道过程的Git已经参与?
  • 有现有的用户界面,验证和数据模式?硬编码带来最大的好处时,它可帮助您避免定义新的图案。如果你的应用程序已经干净你解决你的模式,问题,硬编码可能不值得的弊端。

允许清单,窗体域选项和功能标志等图案,你可以考虑通常硬编码。

不是固定所有的边缘情况

我曾经建立一个功能允许用户创造多达10项,但不允许超过10个。有一个普遍的竞争条件在这里:如果我们两个请求在同一时间创建项目的问题近,这两个请求将数项现有的数量,然后将请求创建两个项目。当我们这样做,如果有ESTA已经九个项目,我们可以击败的极限,最终有11个项目。

MOST QA测试人员将这种错误考虑,和错误只是高科技的用户可以看到这些债务。

数据库事务可以帮助,但我们使用的是不支持交易的NoSQL数据库。读/写锁会的工作,但我们的工作在一个分布式系统,我们需要分布式的锁。如果我们写了一堆代码,使锁定限制“完美”,我们最终可能引入新的,意想不到的错误。我们不得不花时间写了一堆码锁,每个开发人员后,我们这工作的必须明白,锁定代码。

ESTA感觉就像一个很大的努力,以保持用户拨打一个附加项目。怎么样一个非技术的解决方案:如果我们故意没有解决竞争条件?

现在我不是说悄悄地离开它有下一个开发人员来处理!故意在这儿的意思回答一些问题:

  • 当有11个项目,会发生什么?好了,不多,卫生组织。这是一个任意限制和应用程序的其他部分不关心一些其他项目。
  • 我们可以找出竞争条件如果发生这种情况往往比预期的?是啊,简单的数据库查询比帐户的详细发现10个项目,每个项目有一个时间戳记录。原来,这场比赛条件的生产并没有出现。

我们马上去ESTA高科技未偿债务更好。因为创建一个额外的项目的影响是低且易于监控,我们可以把时间花在较高优先级的工作,而不是解决实际的非问题。

故意高科技是好的债务

很多坏账高科技来自建筑太多,陷入花费比预期的维护和bug修复更多的时间。这就像买了太多的房子,并在水下抵押贷款结束了。

关键是要故意关于你投资什么时间,并意识到你正在服用的费用。犯错的太少了大楼的一侧,可以随时因为构建更晚。构建东西很容易丢掉和更换;它会让你的代码更模块化。高科技好债务有明确的,众所周知的局限性。这些文件中的代码注释,自述,常见问题解答,并交谈谁愿意关心的人。

小心使用,良好的技术将帮助你建立债务软件更快地集中时间上的东西最要紧。

建设squarespace图像过滤器

可以友好竞争带来更好的模式?