
Read Time:34 Second
软件开发流程; “人定也无法胜天”
软件的开发本身就是个 “犯错的过程”;不论你精通多少的软件工程、技术,都没办法去改变这一软件开发的本质⋯
在软件开发的这一行,精通软件工程;有能力设计好的软件架构,有能力写好的代码;的人,不计其数。
但,走向超过预算、延迟交付、甚至是以失败告终的项目,也是不计其数。
为何 ?!
是软件工程的方法有问题 ?! 还是软件开发真的是存在着 “人定也无法胜天” 的一面; 只是我们 “不知道” 罢了 ?!
我们一直的都 “认为” 我们已经 “知道” 了软件开发的方方面面,然而,事实上,我们只是 “不知道” 我们 “不知道” 什么罢了 ?!
我们永远都不可能知道:
@ 产品中的 5% 的业务逻辑是会如何的变化的 ?
我们永远都只是在用 “昨天” 对业务逻辑上的理解,去隔离、去设计 “今天” 我们所面对的业务逻辑。
这样子的作法是我们能做的,也是唯一能做的方式;因为,我们 “大脑的结构” 就是让我们只能这样子的去做。
这样子的作法对于产品中的 95% 的业务逻辑是没有问题的;然而,对于那剩下的 5%;我们永远都不可能知道会如何变化的 5%;这样子的做法,却是很有可能的会产生让项目失败的 “技术债务” ?!
@ 我们写代码的习惯
当我们是在 “学习” 着写代码的时候,我们是可以 “有意识” 的到什么是好代码?什么是烂代码的?
但当我们是进入到 “产品开发” 的模式的时候,我们就是在用 “个人写代码的习惯” 在驱动着代码的产出;我们就只能意识到我们 “个人写代码的习惯”,而没办法意识到所谓的好代码 ? 烂代码 ?
也就是说,我们永远都不可能知道,我们由 “个人写代码的习惯” 所产生的技术债务,是否会让项目走向失败的坟场 ?!
@@@ 我们对于我们永远都不可能知道的那一面所产生的 “技术债务”,我们已无法再借由软件工程来帮我们解决;软件工程只能帮我们解决我们 “知道” 的那一面。
@@@ 我们对于我们永远都不可能知道的那一面所产生的 “技术债务”,我们只能借由 “数学” 来帮我们解决;数学帮我们找出我们在软件开发中所犯的错误; 所产生的技术债务;而且是最值得花人力、花时间去偿还的技术债务。
@@@ 当我们用软件工程、敏捷开发、IT 技术都没办法解决我们所面临的软件开发的问题的时候,我们就应该要来到 “数学” 的世界;因为,我们要的答案就在那里⋯