公众号回复“1”,抽取50本电子书
在我所有的程序错误中,80%是语法错误,剩下20%里,80%是简单的逻辑错误,在剩下4%里,80%是指针错误,只有余下的0.8%才是困难的问题。
—— Marc Donner
了解bug的产生
99.99%做技术的都会被问到或者被吐槽到:“你的程序怎么又出bug了!”
代码的复杂度和产生bug的概率是成正比的,并且具有「
边际效用递减」的效果。那么怎么降低bug?
表面看,bug出自程序员之手。程员做的是“造房子”的事情。这件事完整的步骤分为3步:
-
与产品经理讨论并确定功能(确定一个可以实现的设计图纸) -
将每个单独的元件抽象出来(确定施工方案) -
将相关的元件实现并进行组合,完成建设(带上材料开始施工)
第一步,“与产品经理讨论并确定功能”主要是沟通,靠“看”和“理解”。
沟通是相互的,这锅只让程序员背的话的确太委屈了点,还有产品经理的PRD。
更具体点看一个小小例子:
PRD中我们说update,但是实际上开发是采用的删除后insert。这时候,产品经理会发现这条数据看起来是更新了,但是“创建时间”也变了。
所以要防范,你起码需要约定一下“更新时间”和“创建时间”的,避免开发的实现手法跑偏。
第二步,“将每个单独的元件抽象出来”这主要是一个人抽象能力的体现。
这就是实际的coding过程,而coding是一个主观的,完全由人主观掌控的事情。
这就是为什么需要技术研讨,专家论证。
因为连杀猪有人都是从屁股先下刀子的,同样代码的实现手法,不同老师教出来不同语言,加上后期自身修为不同,也不见得都能找到最佳实践路径。
一位昵称“oraguy”的程序员对Oracle数据库代码的吐槽。大意是: Oracle 数据库12.2版有近 2500 万行C代码。 无法在不破坏成千上万个现有测试的情况下更改单行代码。 好几代程序员在有限的期限内编写了这些代码,其中充斥着大量的垃圾代码。 非常复杂的逻辑、内存管理、上下文切换等,这些都用数千个flag连接起来。 整个代码充斥着神秘的宏命令,甚至可能需要一两天才能真正理解某个宏命令的作用。 有时你需要理顺20个不同flag的值和效果来预测代码在不同情况下的行为方式,有时多达数百个flag! 这个产品仍然存活仍然可用的唯一原因是数百万次的测试!
结尾是:开发一个小功能需要6个月到1年的时间(如果是添加一种新的身份验证模式,比如支持 AD 身份验证,可能需要2年)。
1、入职3个月内,喷,这么大的系统,上亿pv的系统居然这么做的,这么做的,我提出那么做,那么做,你们都不鸟我,推翻我,哎 你们都是傻逼。 2、入职半年,咦,好像他们说的有道理啊,如果按我那么做,就会出现那些问题,那些问题。。。 3、入职一年,哦,只能这么做,这么做,你一个新来的,知道个屁啊,还那么做那么做 。 4、 入职两年,噢,这么做,这么做有好处,有坏处,可以在此基础上那么做那么做。
产品:然后呢? 客服:对比到差异,则修改线上价? 产品:怎么修改? 客服:在线下零售价的基础上按公式计算,比如上涨1%,得出线上零售价,然后逐个编辑。 产品:是否可以理解为,目的是让线上价格,按自己期望的卖,不取线下零售价? 客服:是 产品:那么为什么不在根源处理呢:创建一组用于线上销售的价格,直接引用不就可以了吗?
END
分享本文,并在公众号“唧唧歪歪PM”发消息“需求”,既可获取<需求探索>电子版。
——干货推荐——
4千字,总结产品需求文档的形式、规范、自查
系统对接,产品经理视角的9千字总结:接口、otter、log4j、SFTP、MQ……
本篇文章来源于微信公众号: 产品参赵
关于下载
本站分享的产品前端、B端竞品和所有付费资源,均不是该资源的价格,本身资源是不用付费的,这是赞助知识库资源模板的收集整理、服务器维护的基础开销费用!免责声明
1、本站分享的产品前端、B端竞品和产品知识库主要来源于网络的公开信息,均为网络搜索,微信缓存,免费下载,互联网平台整理而来,产品知识库的资料文档仅限用于学习交流。如若有侵权你的知识版权的嫌疑,请及时告知我们,我们会在24小时内进行删除。联系管理员:2841552294@qq.com2、上述资源和模板的知识产权及相关权利归作者及制作公司所有。
3、上述资源和模板仅供学习参考及技术交流之用,未经源码的知识产权权利人同意,用户不得进行商业使用。
4、上述资源和模板如需商业使用,请自行联系源码知识产权权利人进行授权,否则,我们将积极配合作品知识产权权利人 一起维权。
5、上述资源和模板如有侵犯您的知识产权,请您立刻联系我们,我们会在24小时内做删除下架处理。