软件的目的有时会被遗忘


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

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

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

这里有一个例子。

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

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

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

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

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

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

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

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

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

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

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

并非每个bug都值得修复

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

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

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

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

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

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

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

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

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

并非每个功能都值得编码

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

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

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

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

你解决的问题比你编写的代码更重要!相关推荐

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

    你解决的问题比你编写的代码更重要! 来源: 众成翻译    原文链接  英文原文: The problem you solve is more important than the code you ...

  2. 成功解决基于VS2015(Visual Studio2015)编写C++程序调试时弹出窗口一闪而过的问题

    成功解决基于VS2015(Visual Studio2015)编写C++程序调试时弹出窗口一闪而过的问题 目录 解决问题 解决方法 T1.修改配置属性的控制台

  3. 编写HTML代码常见错误以及解决方法?

    编写HTML代码常见错误以及解决方法? 参考文章: (1)编写HTML代码常见错误以及解决方法? (2)https://www.cnblogs.com/sqyss/p/11105221.html 备忘 ...

  4. java培训教程分享:Java编写软件代码自动提示功能

    本期的java培训教程分享主要是介绍的java编写软件代码的一个自动提示功能,很多零基础和初学java的同学们对这一块还不是很了解,Eclipse for android 实现代码自动提示智能提示功能 ...

  5. 编写优质代码的 6 大关键方法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习实验室 [译者注]作为一名开发者,编写一手干净的 ...

  6. 如何优雅的编写 JavaScript 代码

    几乎每个大一点公司都有一个"运行时间长,维护的工程师换了一批又一批"的项目,如果参与到这样的项目中来,大部分人只有一个感觉--"climb the shit mounta ...

  7. AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码

    AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码 添加Watch应用对象时新增内容介绍 Watch应用对象添加到创建的项目中后,会包含两个部分:Watch App 和 Wa ...

  8. 不要将时间浪费到编写完美代码上

     不要将时间浪费到编写完美代码上 不要将时间浪费到编写完美代码上,原因就在于一个系统的迭代开发可能持续运行5年至10年甚至是20年,而某行代码甚至某个设计的生命周期则要短很多,只有几个月或者几天. ...

  9. 对编写的代码进行单元测试_编写数据访问代码测试–单元测试是浪费

    对编写的代码进行单元测试 几年前,我是为我的数据访问代码编写单元测试的那些开发人员之一. 我正在孤立地测试所有内容,我对自己感到非常满意. 老实说,我认为自己做得很好. 哦,男孩,我错了! 这篇博客文 ...

最新文章

  1. animate默认时长所带来的问题及解决
  2. Spring Filter过滤器,Spring拦截未登录用户权限限制
  3. HttpResponseCache的使用缓存cache
  4. 第6章-一阶多智体系统一致性-->6.3 连续时间含时滞多智能体系统一致性
  5. Redis进阶-Redis安全相关操作
  6. atlas单机模式代码_生存游戏竞争太大怎么办?在海盗游戏《ATLAS》也可佛系生存...
  7. windows环境下安装nodeJS和express,一直提示command not found-配置环境变量
  8. 城市地区级联二级下拉选择菜单js特效
  9. 通过VsPhere体验MAC OS X
  10. Linux / Ubuntu系统查看磁盘空间及目录容量
  11. 在Junit上使用Kafka
  12. C++ —— C++内联函数
  13. flask mysql项目模板渲染_Flask系列(二) 模板 templates
  14. 米斯特白帽培训讲义 挖掘篇
  15. 使用Service Installer在.NET Core中配置依赖注入而无需任何代码
  16. cloud_config学习_1
  17. 圆柱属于能滚动的物体吗_小学人教版六年级下册数学第3章《圆柱的表面积》知识点+同步练习...
  18. vi/vim 查找替换使用方法
  19. python保留小数不四舍五入_Python常用知识小结
  20. 知行之桥®中文版EDI系统正式发布

热门文章

  1. 2015-01-27
  2. hadoop 安全模式
  3. 管理中应避免“妇人之仁”
  4. CSDN Blog V3.0 升级公告
  5. 十万浙企上云 阿里云崛起的最大征候?
  6. ITTC数据挖掘平台介绍(四) 框架改进和新功能
  7. DotNetNuke CSS hierarchy
  8. 如何构建日均千万PV Web站点(二) 之~缓存为王~
  9. .net学习之母版页执行顺序、jsonp跨域请求原理、IsPostBack原理、服务器端控件按钮Button点击时的过程、缓存、IHttpModule 过滤器...
  10. 你最常用的构建和发布管理工具是什么