你解决的问题比你编写的代码更重要!

时间: 2018-07-18阅读: 947标签: 代码

软件的目的有时会被遗忘


程序员似乎忘记了软件的真正目的,那就是解决现实问题。

50年前,在1968年,由北约科学委员会主办的软件工程工作会议召开。那时,人们开始注意到软件正在成为社会的基本组成部分。然而,它也变得难以理解。在那次会议之后,编程开始成为一个新的行业。它开始摆脱商界人士的控制。

无论从那时起编程的路径如何,业务和软件开发之间的分离仍然存在问题 - 或者是第一次召开会议时的“工程”。如果开发人员过于专注于开发,他们可能会错过他们编写的软件背后的目的。他们可能看不到不需要任何代码的隐藏解决方案。

这里有一个例子。

有一家初创公司正在建造一种设备,允许一个人使用蓝牙解锁他们家的门。与设备通信的可视界面是一个小部件,即使手机被锁定也可见。它只有一个名为“打开门”的按钮。

当用户靠近房子时,他们会抓住手机,找到小部件,然后单击按钮打开。

有人看着那个工作流程并问:

如果我们使用蓝牙,我们的商业模式接受任何拥有手机的人都可以进入房子,为什么我们需要让某人拿起手机并按下按钮?当检测到设备靠近1米时,我们允许门解锁。这样我们就不需要为设计和编写可视化界面付出代价了!

蓝牙故事是狭隘焦点的一个很好的例子:目标是以最小的努力解锁门。如果传感器是无线的,那么设计可视界面是没有意义的。

如果您了解业务正在尝试实现的目标以及对用户的价值,您可以将这些知识与您对该技术可能性的了解相结合。只有这样,您才能获得足够的信息以获得更好的答案,并得出结论。

这是如何解决编程问题的一个很好的例子,而不必编写除解锁功能代码之外的任何其他代码。然而,就像技术债务一样,没有什么可以作为在其余部分编写垃圾代码的借口。

并非每个代码都是有价值的

有时,严重bug的修复可能不是优先事项。如果您是加密交换,并且您的系统允许重复存款一次,那么如果解决问题的成本很高,人工干预可能是最佳的成本效益解决方案。

严重性和优先级之间的这种权衡让我想起了一位同事最近向我展示的模型。它被称为优先级矩阵,这是一种二维模型,可用于根据错误影响的用户数量和严重程度确定错误的优先级。


前面描述的单个重复存款问题属于影响一个用户不便类别。因此,优先3。

并非每个bug都值得修复

作为开发人员,尝试为所有内容编写脚本是很常见的。但是,一些可重复的任务可能不值得自动化。

复杂逻辑的封装和有用知识的抽象之间存在差异。有时,信息应该明确,以便易于理解。如果你抽象它们,它们会产生相反的效果并且更难理解。

在CLI中使用某些类型的低级命令比抽象知识的高级命令(如Git别名.)更有用。

并非每个命令都值得编写脚本

几年前,我使用Incremental Delivery进行了一个项目。这是一个身份验证系统,要求用户提交一些个人数据以供第三方提供商验证。

团队想要建立这种奇特的现场验证功能。然而,随着截止日期变得越来越近,验证在每个sprint规划中被排除优先级。最后,该团队发现,首先存在的花式验证没有任何意义。

原因如下:验证是强制性的!

提供有效信息符合用户的利益。如果用户提供了错误的数据,则不会对其进行验证,也无法使用该系统。此外,大多数浏览器都支持足够好的标准html验证。

在最糟糕的情况下,无法验证自己的用户会调用支持手动验证。

并非每个功能都值得编码

作为开发人员,如果您了解了您尝试解决的问题,那么您将能够提供更好的代码,有时甚至根本没有代码。您不是为在屏幕上书写字符而付费的 Code Monkey。你是一个专业的解决问题的人。

您编写的代码的目的是为了创造价值并使现有世界变得更美好,而不是满足您对自我世界应该是什么的以自我为中心的观点。

有人说:“如果你拥有的只是一把锤子,那么一切看起来都像钉子一样。”

最好先钉一个钉子,以便你可以考虑锤子的需要。

原文链接: levelup.gitconnected.com 
翻译来源:www.zcfy.cc 


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/941

关闭

如何用不到200行代码写一款属于自己的JS类库

JavaScript 的核心是支持面向对象的,同时它也提供了强大灵活的 OOP 语言能力。本文将使用面向对象的方式,来教大家用原生js写出一个类似jQuery这样的类库。我们将会学到如下知识点

如何写出让同事打死的代码?【Js最佳垃圾代码】

在 GitHub 上有一个新项目,它描述了「最佳垃圾代码」的十九条关键准则。从变量命名到注释编写。这些准则将指导你写出最亮眼的烂代码,保证被同事打死!

Js代码中的span拼接

今天遇到一个小需求,用bootstrap的table只有两个字段,占用太宽,页面不美观,组长要求用拼接,一行几列的形式展现出来。我在form表单中拼接了span,遇到以下问题:

减少嵌套,降低代码复杂度

减少嵌套会让代码可读性更好,同时也能更容易的找出bug,开发人员可以更快的迭代,程序也会越来越稳定。简化代码,让编程更轻松!

前端业务代码配置化

如何写好业务代码? 在前端工作中有很多业务性代码,如果书写不规范,那么对后期的维护将是非常致命的。业务场景:后端数据库中经常会一个字段具备几个不同的状态

程序员面试中徒手写代码的意义?

其实我在本科的时候,就有一次有机会面试谷歌的实习生。但是因为在徒手写代码的时候,失败了,成了我毕生的遗憾。也造成了我在这类面试中的恐惧心理。当时,我只是一名大三学生,我 C 语言课程成绩优秀,算法课成绩一般

网站加入收藏、设为首页Js代码(兼容各种浏览器)

这里虽然说是兼容,但是有些浏览器的设置就是不支持用js来把页面设为首页,加入收藏夹,只能让用户手动去在浏览器或者按键去设置这些功能,这里说的兼容是指当浏览器有这个设置的时候js会有提示

webpack优化之玩转代码分割和公共代码提取

开发多页应用的时候,如果不对webpack打包进行优化,当某个模块被多个入口模块引用时,它就会被打包多次(在最终打包出来的某几个文件里,它们都会有一份相同的代码)。当项目业务越来越复杂

什么才是优秀的代码?

究竟什么是优秀的代码?Robert Martin的一句话可以完美诠释。代码质量的唯一衡量标准是每分钟说多少次WTF,我来解释一下这句话。当我在做code review时,通常会有三种不同的感受:

原生 js 中应该禁止出现的写法,以提高代码效率和安全性

严格模式下,在 ES6 之前应禁止使用。ES6 开始可以使用,函数的作用域为声明该函数的块内部。非严格模式下应禁止使用。禁止使用 eval。eval 比一般 javascript 执行要慢,因为浏览器对 javascript 进行了优化。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!