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

来源: 众成翻译    原文链接  英文原文: The problem you solve is more important than the code you write.

软件的目的有时会被遗忘

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

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

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

  这里有一个例子。

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

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

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

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

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

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

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

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

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

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

Caption

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

并非每个bug都值得修复

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

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

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

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

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

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

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

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

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

并非每个功能都值得编码

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

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

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

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

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

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

    软件的目的有时会被遗忘 程序员似乎忘记了软件的真正目的,那就是解决现实问题. 50年前,在1968年,由北约科学委员会主办的软件工程工作会议召开.那时,人们开始注意到软件正在成为社会的基本组成部分.然 ...

  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. 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注...
  2. 大厂后端必备分布式,一定要好好学|文末有1元福利
  3. 使用 ReSharper对.NET解决方案进行全面重构
  4. linux grep egrep fgrep bash条件判断 bash测试 if 条件判断
  5. python序列中各元素之间存在顺序关系_《Python Cookbook(第3版)中文版》——1.10 从序列中移除重复项且保持元素间顺序不变-阿里云开发者社区...
  6. git rm -r --cached_程序员一定能用到的git命令:分支+暂存+回退+标签+创建项目仓库...
  7. 向下兼容性格什么意思_向下兼容是什么意思
  8. 基于百度万年历定制化 1
  9. SPSS——描述性统计分析——比率分析
  10. 关于华为鸿蒙创新的作文,关于创新的高中作文4篇
  11. pytorch中的pad_sequence、pack_padded_sequence和pad_packed_sequence函数
  12. Vue粒子特效使用教程(vue-particles插件)
  13. 中国物料喷射(MJ)市场趋势报告、技术动态创新及市场预测
  14. Going to Redmond (keep moving)
  15. 海思芯片--查看基本信息
  16. 使用 dataset 管理数据
  17. 如何评估刀模的生产质量?
  18. 【李宏毅2020机器学习深度学习(完整版)国语】P22 Semi-supervised
  19. 项目经理和产品经理的职责和要求
  20. 【索引】用PS3手柄在安卓设备上玩游戏系列

热门文章

  1. datatable使用groupby进行分组统计 .
  2. 如何创建一个标准的Windows服务
  3. LNMP一键安装包 PHP自动升级脚本
  4. php框架--php框架的连贯查询实现原理
  5. CakePHP你必须知道的21条技巧
  6. 使用Google Font API
  7. 爬虫入门五(Phantomjs和selenium)
  8. 动态规划——命运(hdu2571)
  9. Linux——Linux下的tar压缩解压缩命令详解
  10. MySQL—修改数据库root用户密码