前两天同事接了一通电话,然后在部门群里提出一个在电话里对方问他的问题。

有10瓶无标签试剂,其中9瓶是盐,1瓶是化学品,该化学品放入水中10分钟后会变色。且无论是否与盐放在一起都会变色。问,最少用多少瓶水可以在10分钟内找出该化学品。也就是一次相溶就需要找到化学品。
在半小时内,大家给出了不同的答案,按照软件开发的方式,我将其分类如下。
敏捷之道:9瓶水,这是最容易想出来也是速度最快的办法。如果其中有一瓶变色,则是该化学品,如9瓶水均无变色,则没放水里的是该化学品。这是最快速解决该问题的办法,但却不是最优的,水资源浪费较大,属于排除法。
迭代之道:6瓶水,这是比较中庸的办法,在速度和数量之间取一个平衡。计算方法是
将10瓶编号,剔除第10瓶。123,456,789,147,258,369。各混成一瓶,取交集的方式考察出化学品,如123和147变色,则1号必然为化学品,以此类推。该方法在提问10分钟后提出
瀑布方法:4瓶水,这是最节省资源的办法,但是论证过程是最慢的,用二进制将各瓶水编号0001-1010,然后取二进制不同位的排列组合。该方法提出是最慢的,在20分钟后提出。
可能有人不太明白这个的计算,我把这个计算方法画成图就明白了。
试剂按0-9的二进制编号,0000 - 1001

0 | 0 | 0 | 0 ---> 0
0 | 0 | 0 | 1 ---> 1
0 | 0 | 1 | 0 ---> 2
0 | 0 | 1 | 1 ---> 3
0 | 1 | 0 | 0 ---> 4
0 | 1 | 0 | 1 ---> 5
0 | 1 | 1 | 0 ---> 6
0 | 1 | 1 | 1 ---> 7
1 | 0 | 0 | 0 ---> 8
1 | 0 | 0 | 1 ---> 9

将各个位上为1 的试剂加入1瓶水中
9,8 -->
7,6,5,4 -->
7,6,3,2 -->
9,7,5,3,1 -->
共4瓶,可检验出

歪门邪道:9滴水,将9滴水分别滴入9个试剂瓶,以破坏试剂的方法找出那个是化学品。这其实是最节省资源的办法,但是产生的效果是破坏性的。所以,其实这是个办法,但是不是最好的办法。不过不能说其是错的,目标是找出化学品而不是保留化学品。当然,能保存当然是更好。
这种问题,用什么办法解决都是对的,但是在成本考量,需要实验者通盘考量,按照我个人的理解,敏捷的方法是最能快速响应机会的。但是目前我们对机会的理解过于焦躁了,某一种产品,谁先推出就是谁的这种概念似乎已经深入人心。但是很多案例也能看出,有很多外在环境影响,并不都是这样。举个例子,京东的模式在我看来其实是在重复当年E国的方式。但当时物流业并不如现在这般发达,导致E国的物流成本超出了企业可承受范围。所以,如果想做一个半年一年生存期的产品,敏捷开发就足够了,如果画成波形图,从波峰到波谷的角度可能会是非常陡峭的。瞬间成功,瞬间失败,因为这种办法是最不用动脑子的,而且资源浪费是较大的。
而迭×××法,看上去是比较中庸的,虽不是最节省的,也不是最快速的,但是相比最节省的和最快速的,其成本在可控范围内,且开发时间介于敏捷和瀑布之间。不过相比敏捷,对开发人员的要求就高了一些,需要掌握一定的技巧。所以,看上去,迭代的办法是比较合理的。因为其速度可以达到比较快速的响应,且执行速度和算法是比敏捷要优化。
作为一个程序员,我觉得瀑布方法是最好的,最节省资源,但是我不是老板,我说了不算。如果碰上一个只要求上线速度不要求软件质量的,千万不要用瀑布方法。其论证过程也就是前期准备过于复杂繁琐,虽然软件质量是最高的,但是很有可能让人错过这个机会。但是我个人觉得,其开发出来的软件生存周期应该是最长的,大多数情况。不过也要求开发人员具备的基本素质和技巧是最高的,对于软件管理者来说也是要求最高。
逆向思维是个解决问题的办法,却不是软件开发的管理方法。逆向思维往往是一个问题的很好的解决方案,作为领导看来,只要能解决问题,比什么都重要。我不管你用什么办法,只要你能解决就可以了。前提是,不能破坏别的东西。
----------------------------------------
对于程序员来说,数学的能力真的很重要。
代码工:9瓶水,不考虑太多的情况,只要解决问题即可。
程序员:6瓶水,这就是程序员比代码工拿工资多的地方,程序员会思考一个比较优化的办法,由于经验或者知识面还不够宽的缘故,暂时考量不到更高级的算法。
架构师:4瓶水,架构师拿到问题,总会想到最优的解决办法,开发速度有可能慢于程序员和代码工,但是其工程质量是最高的,执行速度也是最快的。且从大局看是最节省公司的资源,虽然有时候架构师也会选择程序员的办法。
项目经理:瓶子管理员,程序员提出需求,项目经理协调水龙头资源。
简单的类比,供参考。

转载于:https://blog.51cto.com/slaytanic/779457

一道数学题引发的思考相关推荐

  1. 一道数学题引发的惨案!4只小鸭子在一个圆形的大水池中,分别随机的出现圆圈中任意一点。4只鸭子在同一半圆内的概率是多少?

    答案在文章结尾,不感兴趣的可以直接看答案 也就是昨天在渣男开车群中惊现一张照片.4只鸭子! 然后一群渣男开始了激烈的讨论,有说1/8的 有说3/4的 有说1/3的-反正说什么的都有 唉你说都是男的好好 ...

  2. 三只青蛙的故事:一道脑筋急转弯题目引发的思考

    一道脑筋急转弯题目是这样的:有三只青蛙在河中的一片叶子上顺水漂流.其中一只想跳到河里.在叶子上还剩几只青蛙? 大多数人会回答还有两只.(我刚看到此题时认为一只也没有,因为一只青蛙跳了之后剩下的两只也会 ...

  3. C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质...

    C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质 事情的经过是这种,博主在用C写一个简单的业务时使用递归,因为粗心而忘了写return.结果发现返回的结 ...

  4. 李白打酒c语言,关于“李白打酒”的一道数学题

    :关于"李白打酒"的一道数学题 昨日,同事谈起了她在一个教学设计中的奥数题:李白街上走,提壶去打酒.遇店加一倍,遇花喝一斗.三遇店和花,喝干壶中酒.试问酒壶中,原有多少酒?诗题中的 ...

  5. 蓝桥杯 出栈顺序问题引发的思考以及递归的优化(缓存池)

    蓝桥杯 出栈顺序问题引发的思考以及递归的优化(缓存池) 关于递归的优化和思考 在我们IT圈内有句话,普通程序员用迭代,天才程序员用递归.诚然,递归确实能够将许多复杂的问题简化,但是问题来了,由于递归采 ...

  6. JAVA-OPTS引发的思考

    JAVA-OPTS引发的思考 我们在性能测试过程中,经常要修改应用的JAVA-OPTS参数.修改这些参数,不单单是修改这些数字,本着知其所以然的态度,我们要知道这些参数背后的意义. 常见的JAVA-O ...

  7. 一个小程序引发的思考

    既然是一个小程序引发的思考,那么我们就先看看这个小程序,看看他有何神奇之处: namespace ConsoleApplication1 {class Program{static void Main ...

  8. 由“递归遍历二叉树”引发的思考

    由"递归遍历二叉树"引发的思考 递归的用法我感觉自己已经掌握了,可是今天在递归遍历二叉树时,它又迷一样令我费解.我本人在算法这一块很薄弱,所以想把这个问题发出来,希望有大神能够为我 ...

  9. 由一行文本输入框引发的思考

      文章是关于React组件之表单单行文本输入框的一些思考.可能大家第一反应都是,不就是一行<input/>嘛,没什么特别的吧?如果说到输入框的值的话,可能圈子里上大多数封装好的React ...

最新文章

  1. 在jupyter notebook中同时安装python2和python3
  2. golang mysql 错误 sql: unknown driver “mysql“ (forgotten import?) 解决方法
  3. asmack xmpp 获取离线消息
  4. matlab无限长序列卷积,怎样求未知长度序列的卷积
  5. ES6之let和const
  6. Xml xpath samples
  7. layui table工具栏点击时间_layui table表格上添加日期控件laydate
  8. jvm监控调优常用命令
  9. python格式输出占四列左对齐_python – 打印字符串左对齐,固定宽度和后缀
  10. 对比了 18000 个 Python 项目,这 TOP45 值得学习!
  11. iOS 11 将于9月19日正式发布,一文带你了解它的那些特性
  12. matlab多种图像边缘检测方法,[转载]Matlab多种图像边缘检测方法
  13. 【办公自动化】Excel“一键”生成国土“三调”转换代码
  14. 【聚类算法】| Kmeans算法的Python实现(以西瓜数据集为例)
  15. matlab ode45修改,matlab ode45增加输入值
  16. 【翻译】Dremel: Interactive Analysis of WebScale Datasets
  17. Codeforces Round #827 (Div. 4) D - F
  18. Linux系统网速测速,Linux系统下的网络带宽测速
  19. 常用激活函数:Sigmoid、Tanh、Relu、Leaky Relu、ELU、Mish、Swish等优缺点总结
  20. 毕业设计 stm32地下井盖管道安全监控系统 - 物联网 单片机

热门文章

  1. 大家有用 hackerrank 刷过题吗,这家公司出了一个题来让大家测测自己有多牛
  2. 并发编程之——写锁源码分析
  3. 4、Cocos2dx 3.0游戏开发找小三之Hello World 分析
  4. Linux:修改文件权限命令chmod
  5. 恢复Cisco路由器密码
  6. Linux 命令(43)—— paste 命令
  7. docker使用阿里云镜像仓库docker
  8. 手把手FFmpeg入门——视频解码+解封装
  9. System.Security.Cryptography.CryptographicException
  10. unity, 取消ugui button响应键盘