十几年软件研发的沧桑岁月,和一度险濒于破产的痛苦经历,让俺对软件产品开发有了更深层的体会。新年到来之际,写出来和大家作个交流。
一、农业境界
刚参加工作,朋友问我,你能用电脑干啥?我口出狂言,只要你想得出来的,我都能做得到。其实,我说这话相当无知。
柏拉图曾经说过,人的知识犹如一个圆,圆内是你已经知道的,圆外是你还不知道的,圆周就是你已经知道的还没解决的问题。你的知识越丰富,这个圆就越大,圆的周长也越长,也就是你知道的没解决的问题也越多。
如果你觉得自己没有啥问题,就说明你很无知。
无数年轻人就是凭自己的热情,初生牛犊不怕虎的冲劲,在完全没有经验和章法的情况下,投入了不会取得胜利的第一场战斗。通俗一点讲,就是试图用垒狗窝的技术建高楼大厦。
企业在这个阶段,充其量就是个手工作坊。有人说,我的研发团队上百号人呢。对不起,您是否出于这个阶段和企业人数没多大关系。
二、工业境界
了解到软件产品设计研发是一个复杂的系统工程,很多人会尝试运用一些必要的技术把复杂系统分解成简单子系统。在这个阶段,一些软件工程理论开始逐步被吸收。这包括:
面向对象的设计思想
UML、RUP、XP编程、设计模式等软件工程理论和工具
组件化系统设计——COM、DCOM、ActiveX、Corba、WebServices等技术开始进入产品设计
简单地讲,已经知道如何把高楼大厦拆解成多个狗窝,化繁为简;已经懂得遵循软件工业标准开发能重用的系统组件。
很多人以为已经到达软件研发的终点,掌握了终极的技术手段。然而,这只是软件产品研发的启蒙阶段,随着发现更多并解决深层次的问题,你需要更有效的理论提升你对软件产品开发的驾驭能力。
三、数学境界
工业化境界提供了化繁为简的技术支撑和思路,但是,好的工具并不能保证出现正确的设计。
我们学习解一元二次方程的时候,什么十字相乘法、配方法等等,开始会学习很多技巧性的解法。这类似工业化境界——让你把复杂问题分解转化成更简单的问题。但是,这些技巧不总是有效,最终的解决方案还是推导出求解公式,彻底解决此类问题。
软件产品设计是否存在从需求到代码的求解公式呢?这是一个已经被研究半个世纪的课题了,可惜国内99%的软件研发人员并不了解这方面的进展。等到洋人的坚船利炮打到你家门口的时候,你才发现人家用这么好的技术武装自己,那就为时太晚了。
在这个阶段,你会用数学方法保障软件系统设计的正确性。你可能会把下面这些理论引入你的设计过程:
在系统设计中自觉运行有限状态机、Petri网等数学模型去设计、分析系统结构。
引进诸如净室技术、B方法、Z语言等形式化软件工程技术,确保系统设计的正确性。
最后你会发现,软件产品设计真正是一件严格科学过程,如果以山野村夫的心态做这件事情,最终必然一塌糊涂。
四、艺术境界
人本质上是非理性的动物,我们为人类设计产品的最终目标不是为了正确,因此,数学境界并未把你带到最终目的地。
人类还没解决温饱问题的时候,就学会了在岩石上涂鸦,在脖子上挂项链,为人类设计产品,得满足他们这些貌似毫无价值的癖好。
因此,在能熟练驾驭正确设计产品的技能之后,软件产品设计将为艺术而战——我们不是在替客户设计干活的工具,相反,我们是在为他们设计一个吸引眼球的超级玩具,一件艺术品。
软件产品设计师——你不仅仅是工程师,更进一步,你应该是一名驾驭高科技技术的艺术家!
五、宗教境界
阿克毛被枪毙了,他不是为科学而来,亦不是为艺术而来,而是为夺取我们的心灵而来!
之所以被枪毙,是因为他采取了文明社会不认可的手段和产品——XXX。
异曲同工,软件产品设计的最高境界亦是征服客户的心灵,让客户像崇拜上帝一样被您的软件所征服。似乎除了XXX,能做到这一点的就是宗教了。
看看IBM、看看微软、看看Intel、看看苹果,这些超级商业巨人,为了让你把口袋的钱老老实实地掏出来,是不是一个个俨然一副布道者的模样?
分享到:
相关推荐
模拟芯片设计的四重境界,不仅是一门技术的探索,更是对工程师智慧、经验和创造力的综合考验。本文将深入解析模拟芯片设计中的四个关键阶段,每个阶段都代表着设计师能力的不同层次,也是通往更高水平的必经之路。 ...
第五课提升道德境界,第五课提升道德境界课件,第五课提升道德境界PPT
H5互动之:看广告的五种境界.pptx
【Python学习的三种境界】 学习Python的过程如同王国维在《人间词话》中所述的三种境界,每一个阶段都代表着不同的理解和技能水平。 **第一种境界:基础掌握** 在这个阶段,初学者需要熟悉Python的基本语法和常用...
软件单元测试的5种境界软件测试软件单元测试的五种境界1.尝试单元测试并且立刻开始在自己的博客商鼓吹单元测试和测试驱动开发TestDrivenDevelopment的好处。2.单元测试一切。为了能够完成单元测试,而将私有private...
《软件境界的升华:软件工程思想》是一本深入探讨软件开发本质和理论的书籍,它旨在引导读者理解和应用软件工程的精髓,以提升软件开发的效率、质量和可维护性。软件工程并不仅仅是编写代码,而是一种系统化、规范化...
"见光不见灯"是灯光设计的最高境界,意味着灯具本身的存在感被降到最低,光线的分布自然和谐,使得人们感受到光的温暖和舒适,而忽略了灯具本身的实体。 眩光是灯光设计中需要特别关注的问题。眩光会干扰视觉,长...
【深度学习】是一种学习方式,源自学习者内部的动机,旨在对有价值的学习内容进行完整、准确且深刻的掌握。...通过不断实践、反思和提升,教师可以逐步达到设计开放性问题的更高境界,以此促进学生的全面发展。
他们能够设计出高效稳定的软件系统,并且对于操作系统、网络通信协议(如TCP/IP)等有着深刻的理解。架构师的角色往往要求他们在技术决策方面具有较高的权威性。 #### 第五境界:思想家 到了这个阶段,程序员已经不...
【《人生的四种境界》语文阅读答案】 人生的四种境界.docx
首先,文章第一部分详细解析了自然境界、功利境界、道德境界和天地境界这四种人生境界。自然境界是指那些无觉解或不甚觉解的人,他们做事多凭本能或习俗,没有明确的认识。功利境界则指那些觉解到利己意义的人,他们...
写景的三种境界是创作文学作品,特别是写景作文时的一种艺术表现层次。这三种境界分别代表了写景技巧的不同阶段,对提升写作水平具有重要的指导意义。 第一种境界是"眼中景,心中无景"。这意味着作者只是机械地描述...
王国维先生曾经提出了文学创作的三种境界,这一理论也被引申到教师专业成长的三个不同阶段,即职业境界、事业境界和生命境界。这三种境界体现了教师在个人职业成长道路上的不同追求和精神高度,是教师从合格到卓越再...
#### 五、3DMine软件进行露天矿境界优化的步骤 1. **建立地质数据库**:首先需要收集并整理前期地质资料,包括钻孔数据、岩性分析等,建立全面准确的地质数据库。这些数据将用于构建三维地质模型。 - **定位表**:...
高手的成长历程,高手的境界,看看吧,受益匪浅
学习三境界 学习三境界 学习三境界学习三境界学习三境界学习三境界学习三境界
在《露天开采优化设计境界的确定——用电子计算机计算的网络流法》一文中,作者常福馨提出了一种新颖而高效的解决方法,即通过网络流法来优化露天矿的设计境界,实现了数学理论与实际应用的完美结合。 ### 重要知识...